Gensim doc2vec, наиболее похожий, дает ошибку неподдерживаемого типа операнда - PullRequest
0 голосов
/ 22 марта 2019

Я использую предварительно обученную модель 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 голосов
/ 25 марта 2019

Возможно, ваша предварительно обученная модель не совместима с версией gensim в вашей среде. Откуда появилась модель?

(Отдельно: infer_document() требуется список токенов, , а не строка. И эти токены должны были быть предварительно обработаны точно так же, как и любые обучающие данные, использованные для обучения модели. .)

...