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