最相似的Gensim doc2vec给出了不受支持的操作数类型错误

时间:2019-03-22 15:08:47

标签: machine-learning nlp gensim word-embedding doc2vec

当我尝试查找与样本文档最相似的文档时,我使用的是预先训练的doc2vec模型。它给了我不受支持的操作数类型错误。

from gensim.models import Doc2Vec

filename = "doc2vec.bin"
doc1 =["This is a sample document."]

model = Doc2Vec.load(filename)

inferred_vector = model.infer_vector(doc1)

sims = model.docvecs.most_similar(positive=[inferred_vector],topn=1)

print(sims)

这给了我以下错误

 File "D:\doc2vectest.py", line 10, in <module>
    sims = model.docvecs.most_similar(positive=[inferred_vector],topn=1)
  File "C:\Users\admin\Anaconda3\lib\site-packages\gensim\models\keyedvectors.py", line 1667, in most_similar
    self.init_sims()
  File "C:\Users\admin\Anaconda3\lib\site-packages\gensim\models\keyedvectors.py", line 1630, in init_sims
    self.vectors_docs_norm = _l2_norm(self.vectors_docs, replace=replace)
  File "C:\Users\admin\Anaconda3\lib\site-packages\gensim\models\keyedvectors.py", line 2346, in _l2_norm
    dist = sqrt((m ** 2).sum(-1))[..., newaxis]
TypeError: unsupported operand type(s) for ** or pow(): 'list' and 'int'

1 个答案:

答案 0 :(得分:0)

您的预训练模型可能与您环境中的gensim版本不兼容。模型起源于何处?

(另外:infer_document()需要一个令牌列表,而不是一个字符串。并且,这些令牌应该以与用于训练数据的方式完全相同的方式进行预处理训练模型。)