Неизвестные слова в обученном встраивании слов (Gensim) для использования в Keras
Я тренирую встраивание слов с помощью GENSIM (word2vec) и использую обученную модель в нейронной сети в KERAS. Проблема возникает, когда у меня есть неизвестное слово (вне словарного запаса), поэтому нейронная сеть больше не работает, потому что не может найти веса для этого конкретного слова. Я думаю, что один из способов решить эту проблему - добавить новое слово ( <unk>
) к предварительно обученному встраиванию слов с нулевыми весами (или, может быть, случайными весами? Какой из них лучше?) Подходит ли этот подход? Кроме того, для встраивания этого слова в нейронной сети невозможно обучить веса.
Ответы
Наиболее типичным является игнорирование неизвестных слов. (Замена их либо словом-плагином, либо вектором-источником искажает больше.)
FastText
Вместо этого вы также можете рассмотреть возможность обучения в режиме, который всегда будет синтезировать некоторый вектор предположений для слова вне словарного запаса из векторов символов и граммов, созданных во время обучения. (Эти синтетические векторы часто лучше, чем ничего, особенно когда слово имеет перекрывающиеся корни слов со связанными словами - но лучше получить больше обучающих данных с примерами всех соответствующих употреблений слов, а просто игнорировать редкие неизвестные слова не так уж и плохо.)