首页 > 解决方案 > 如何在 word2vec.similarity 中使用列表

问题描述

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

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

0.2732939

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

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

“标签”列表是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"

标签: pythongensimword2vec

解决方案


如果标签是,根据你的问题,是一个python列表。那么问题是你不能用元组索引一个列表。
如果你的列表像 [["culture","friendship"],[...]...]
那么你应该写 word2vec.similarity(tag[0][0],tag[0][1])


推荐阅读