Получение вероятности модели встраивания текста с заданным словом в модели gensim word2vec

Я пытаюсь получить наиболее вероятную последовательность слов, используя модель gensim word2vec. Я нашел предварительно обученную модель, которая предоставляет эти файлы:

word2vec.bin
word2vec.bin.syn0.npy
word2vec.bin.syn1neg.npy

Это мой код, пытающийся получить вероятность предложения с этой моделью:

model = model.wv.load(word_embedding_model_path)
model.hs = 1
model.negative = 0
print model.score(sentence.split(" "))

При запуске этого кода я получаю эту ошибку:

AttributeError: 'Word2Vec' object has no attribute 'syn1'

Может ли кто-нибудь помочь мне понять, как решить проблему. В общем, я хочу использовать некоторую предварительно обученную модель, чтобы получить вероятность появления последовательности слов вместе.


person ida    schedule 06.09.2017    source источник


Ответы (1)


Вы не можете переключить модель с использования отрицательной выборки (например, negative=5, hs=0) на использование иерархического softmax (например, hs=1, negative=0) после первоначальной настройки и обучения. Две модели используют разные внутренние свойства, которые создаются только путем настройки и обучения. (Например, свойство syn1 существует только в модели, созданной и обученной в иерархическом режиме softmax.)

Поскольку метод score() в настоящее время работает только для моделей HS, вам нужно будет использовать его только с моделями, которые были обучены в этом режиме.

(Обратите также внимание, что значение из score() одного текста по одной модели не интерпретируется как абсолютная вероятность. Это только сравнение с оценками других текстов по той же модели или того же текста по альтернативным моделям. что относительное значение оценки становится значимым.)

person gojomo    schedule 06.09.2017