У меня есть модель word2vec в gensim, подготовленная над 98892 документами. Для любого данного предложения, отсутствующего в массиве предложений (т.е. Набора, над которым я обучал модель), мне нужно обновить модель этим предложением, чтобы запрос в следующий раз выдавал некоторые результаты. Я делаю это так:
new_sentence = ['moscow', 'weather', 'cold']
model.train(new_sentence)
и его печать в виде журналов:
2014-03-01 16:46:58,061 : INFO : training model with 1 workers on 98892 vocabulary and 100 features
2014-03-01 16:46:58,211 : INFO : reached the end of input; waiting to finish 1 outstanding jobs
2014-03-01 16:46:58,235 : INFO : training on 10 words took 0.1s, 174 words/s
Теперь, когда я запрашиваю с похожим new_sentence для большинства положительных элементов (как model.most_similar(positive=new_sentence)
), он выдает ошибку:
Traceback (most recent call last):
File "<pyshell#220>", line 1, in <module>
model.most_similar(positive=['moscow', 'weather', 'cold'])
File "/Library/Python/2.7/site-packages/gensim/models/word2vec.py", line 405, in most_similar
raise KeyError("word '%s' not in vocabulary" % word)
KeyError: "word 'cold' not in vocabulary"
Что означает, что слово "холод" не является частью словаря, над которым я тренировал предмет (я прав)?
Итак, вопрос: как обновить модель, чтобы она выдавала все возможные сходства для данного нового предложения?