如何在word2vec.similarity中使用列表

2024-10-02 22:32:23 发布

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

我有一个word2vec模型,使用预先训练好的GoogleNews-vectors-negative300.bin。模型工作得很好,我可以得到这两个词之间的相似之处。例如:

word2vec.similarity('culture','friendship')

0.2732939

现在,我想使用列表元素而不是单词。例如,假设我有一个名为“tag”的列表。第一排的前两个要素是文化和友谊。所以,tag[0,0]=文化,tag[0,1]=友谊。 我使用以下代码,这给了我一个错误:

word2vec.similarity(tag[0,0],tag[0,1])

“tag”列表是numpy.ndarray

错误是:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\s\AppData\Local\Programs\Python6436\Python36\lib\site-packages\gensim\models\keyedvectors.py", line 992, in similarity
    return dot(matutils.unitvec(self[w1]), matutils.unitvec(self[w2]))
  File "C:\Users\s\AppData\Local\Programs\Python6436\Python36\lib\site-packages\gensim\models\keyedvectors.py", line 337, in __getitem__
    return self.get_vector(entities)
  File "C:\Users\s\AppData\Local\Programs\Python6436\Python36\lib\site-packages\gensim\models\keyedvectors.py", line 455, in get_vector
    return self.word_vec(word)
  File "C:\Users\s\AppData\Local\Programs\Python6436\Python36\lib\site-packages\gensim\models\keyedvectors.py", line 452, in word_vec
    raise KeyError("word '%s' not in vocabulary" % word)
KeyError: "word ' friendship' not in vocabulary"

Tags: inlibpackageslocaltaglinesiteusers
2条回答

我认为你的“友谊”一词中有一些前导空格

你能试试这个吗:

word2vec.similarity(tag[0,0].strip(),tag[0,1].strip())

根据您的问题,如果tag是python-list,那么问题是您不能用元组索引列表。
如果您的列表像[[“文化”,“友谊”],[…]…]
然后你应该写word2vec.similarity(tag[0][0],tag[0][1])

相关问题 更多 >