Когда вы получаете сообщение об ошибке «not in запасной словарь» от Word2Vec
, вы можете верить этому: 'happy'
действительно нет в модели.
Даже если ваша визуальная проверка показывает 'happy'
внутри вашего файла, есть несколько причин, по которым он может не оказаться внутри модели:
этого не происходитпо крайней мере min_count=5
раз
формат data
неверен для Word2Vec
, поэтому он не видит слов, которые вы ожидаете увидеть.
Глядя на то, как data
подготовлен вашим кодом, он выглядит как гигантский список всех слов в вашем файле. Word2Vec
вместо этого ожидает последовательность, которая имеет, как каждый элемент, список слов для этого одного текста. Итак: не список слов, а список, где каждый элемент представляет собой список слов.
Если вы поставили ...
[
'happy',
'birthday',
]
... вместо ожидаемого ...
[
['happy', 'birthday',],
]
... эти одно слово-Строки будут видны как списки символов, поэтому Word2Vec
будет думать, что вы хотите выучить векторы слов для набора односимвольных слов. Вы можете проверить, повлияло ли это на вашу модель, посмотрев, кажется ли размер словарного запаса небольшим (len(model.wv)
) или образец слов для изучения состоит только из односимвольных слов ('model.wv.index2entity [: 10] `).
Если вы введете слово в правильном формате, по крайней мере, min_count
раз, как часть обучающих данных, в модели появится вектор.
(Отдельно: size=10000
- выход за пределы обычного диапазона 100-400. Я никогда не видел проекта, использующего такую большую размерность для векторов слов, и это было бы теоретически оправданно, если бы у вас был очень большой словарный запас иобучающий набор. Негабаритные векторы с меньшими словарями / данными, вероятно, приведут к бесполезным результатам перебора.)