Gensim Word2Vec не хватает векторов для ввода слов - PullRequest
0 голосов
/ 30 мая 2019

Gensim Word2Vec, который я обучил, не хватает векторов для некоторых слов. То есть, хотя у меня есть слово "yuval" в качестве входных данных, модель не имеет вектора для него. В чем причина?

Ответы [ 2 ]

1 голос
/ 30 мая 2019

Чтобы расширить ответ @gojomo, моделям Word2Vec во время обучения предписывается сбрасывать токены ниже min_count, так как они считаются неинформативными, что означает невозможность экстраполировать полезный контекст.

Это означает, что у этих токенов не будет векторов.

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

>>> import gensim
>>> model = gensim.models.KeyedVectors.load(...)
>>> 'car' in model
True
>>> 'yuval' in model
False

Так как 'yuval' отсутствует в словаре, его нельзя найти с помощью оператора in, и он выдаст ключевую ошибку, если используется.

>>> model['car']
...
...
<numpy array>
>>> model['yuval']
...
...
KeyError: "word 'yuval' not in vocabulary"

Если вы действительно этого ожидаетеслово должно быть в списке словарных слов, вы всегда можете распечатать их тоже:

>>> for token in model.wv.vocab.keys():
...     print(token)
... 
1 голос
/ 30 мая 2019

Вы либо не предоставили 'yuval' в качестве токена с правильно отформатированным корпусом, либо число вхождений было ниже min_count модели. (Обычно полезно для модели Word2Vec для отбрасывания низкочастотных слов - больше данных автоматически не лучше, если есть только несколько примеров слова.)

Перепроверьте, что 'yuval' появляется в корпусе, и сколько раз, и достаточно ли этого слова для выживания min_count обрезки.

...