Наиболее похожий Gensim 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'

person Dsujan    schedule 22.03.2019    source источник


Ответы (1)


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

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

person gojomo    schedule 25.03.2019