Обработка неизвестных слов в задачах моделирования языка с использованием LSTM

11

Для задачи обработки естественного языка (NLP) часто используют векторы word2vec в качестве вложения для слов. Тем не менее, может быть много неизвестных слов, которые не перехвачены векторами word2vec просто потому, что эти слова не видны достаточно часто в обучающих данных (многие реализации используют минимальное количество перед добавлением слова в словарь). Это может особенно иметь место с текстом, например, из Twitter, где слова часто пишутся с ошибками.

Как следует обрабатывать такие неизвестные слова при моделировании задачи NLP, такой как прогнозирование настроений, с использованием долгосрочной сети (LSTM)? Я вижу два варианта:

  1. Добавление токена «неизвестное слово» в словарь word2vec.
  2. Удаление этих неизвестных слов так, что LSTM даже не знает, что слово было в предложении.

Каков предпочтительный способ обработки этих слов?

PIR
источник
2
Я ответил на аналогичный вопрос ранее; а вопрос то был не специфичны для LSTMs, кажется , большинство из того, что я написал, что будет так же , как это применимо: stats.stackexchange.com/questions/163005/...
фн

Ответы:

12

Вариант 1 (добавление неизвестного токена слова) - это то, как большинство людей решают эту проблему.

Вариант 2 (удаление неизвестных слов) - плохая идея, потому что он преобразует предложение таким образом, который не согласуется с тем, как LSTM был обучен.

Другой вариант, который был недавно разработан, заключается в создании на лету встраивания слова для каждого слова с использованием сверточной нейронной сети или отдельного LSTM, который обрабатывает символы каждого слова по одному. Используя эту технику, ваша модель никогда не встретит слова, для которого она не может создать вложение.

Аарон
источник
Привет, Аарон. Можете ли вы дать мне пару советов (документы или код), которые используют ваш третий вариант?
Пророчества
arxiv.org/abs/1508.02096 Вот один
Аарон
код: github.com/wlin12/JNN
chentc
1
Еще один недавний (EMNLP 2017) arxiv.org/abs/1707.06961 с кодом github.com/yuvalpinter/Mimick
jayelm
-1

Отображение редких слов просто означает, что мы удаляем эти слова и заменяем их токеном в данных обучения. Таким образом, наша модель не знает ни одного редкого слова. Это грубая форма сглаживания, потому что модель предполагает, что токен никогда не появится в реальных данных или, что еще лучше, хотя она игнорирует эти n-граммы в целом.

Constantine
источник
4
Пожалуйста, добавьте существенно к этому ответу. Например, подтвердите утверждение, что «добавление неизвестного токена слова - лучший вариант».
Джим