带word2的文本的多标签

2024-09-30 14:16:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我是文本分类的新手,在这里找到了这个简单的教程,这似乎是进一步开发的良好开端:

https://asinayev.github.io/choosing-multiple-labels-for-text-part-2-word2vec.html

我在该网页上找到的代码中添加了以下导入:

import regex as re
import stopwords
import string
import scipy
import gensim.models.keyedvectors as word2vec 

我把原来的代码改为:

^{pr2}$

收件人:

 import gensim.models.keyedvectors as word2vec

并根据gensim的最新变化加载模型:

 model = word2vec.KeyedVectors.load_word2vec_format('asd.bin.gz')

为了测试模型负载是否正确,我使用(而且确实如此):

print(model.most_similar('teacher'))

以下是复制和粘贴部分,以错误结尾:

def clean(sentence, model):
regex = re.compile('[%s]' % re.escape(string.punctuation))
tokens = str.split(sentence)
cleans = []
for t in tokens:
    if t in model: 
        cleans.append(t)
    elif t.lower() in model: 
        cleans.append(t.lower())
    elif regex.sub('_', t) in model:
        cleans.append(regex.sub('_', t))
    elif len(str.split(regex.sub(' ', t))) > 1:
        for token in str.split(regex.sub(' ', t)):
            if clean(token): cleans.append(clean(token)[0])
cleans = [w for w in cleans if w not in stopwords.words("english")]
return cleans

def model_similarity (model, list1, list2, l1neg=[], l2neg=[]):
list1sum = sum([model[l] for l in list1])
list2sum = sum([model[l] for l in list2])
if l1neg: list1sum -= sum([model[l] for l in l1neg])
if l2neg: list1sum -= sum([model[l] for l in l2neg])
return 1-scipy.spatial.distance.cosine(list1sum,list2sum)

为了测试这些函数是否有效,我使用以下方法进行测试:

model_similarity(clean('king woman'),clean('queen'), l1neg=['man'])
TypeError: clean() missing 1 required positional argument: 'model'

老实说,我不确定一个位置论是否,因此很难解决它。在

谢谢你的努力!在

其他信息:我正在Windows10上使用Python3.6.5

编辑:解决了这个问题:

函数的正确调用是:

 model_similarity(model, clean('king woman', model), clean('queen', model))
 0.6532526016235352

Tags: inimportrecleanformodelifas
1条回答
网友
1楼 · 发布于 2024-09-30 14:16:23

请注意您编写的model_similarity()的定义:

def model_similarity (model, list1, list2, l1neg=[], l2neg=[]):

python期望前三个参数是model、list1和list2。这些被称为位置参数,因为在定义中列出它们时,没有后面跟等号的名称(就像对l1neg和l2neg一样)。看来你忘了包括模型了。请参见位置关键字参数:https://docs.python.org/2/glossary.html

您似乎还忘记在clean()的调用中包含该模型。在

所以电话看起来像:

^{pr2}$

另外,请确保在所有函数定义之后缩进代码。看来可能还有其他问题。在

相关问题 更多 >

    热门问题