当我尝试查找与样本文档最相似的文档时,我使用的是预先训练的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'
答案 0 :(得分:0)
您的预训练模型可能与您环境中的gensim
版本不兼容。模型起源于何处?
(另外:infer_document()
需要一个令牌列表,而不是一个字符串。并且,这些令牌应该以与用于训练数据的方式完全相同的方式进行预处理训练模型。)