Gestion des mots inconnus dans les tâches de modélisation de langage à l'aide de LSTM


11

Pour une tâche de traitement du langage naturel (NLP), on utilise souvent des vecteurs word2vec comme incorporation pour les mots. Cependant, il peut y avoir de nombreux mots inconnus qui ne sont pas capturés par les vecteurs word2vec simplement parce que ces mots ne sont pas assez souvent vus dans les données d'apprentissage (de nombreuses implémentations utilisent un nombre minimum avant d'ajouter un mot au vocabulaire). Cela peut être particulièrement le cas avec du texte provenant par exemple de Twitter, où les mots sont souvent mal orthographiés.

Comment gérer de tels mots inconnus lors de la modélisation d'une tâche PNL telle que la prédiction de sentiments à l'aide d'un réseau à long terme (LSTM)? Je vois deux options:

  1. Ajout d'un jeton «mot inconnu» au dictionnaire word2vec.
  2. Supprimer ces mots inconnus de telle sorte que le LSTM ne sait même pas que le mot était dans la phrase.

Quelle est la meilleure façon de gérer ces mots?


2
J'ai répondu à une question similaire plus tôt; alors que la question n'était pas spécifique aux LSTM, il semble que la plupart de ce que j'ai écrit là-bas serait tout aussi applicable: stats.stackexchange.com/questions/163005/…
fnl

Réponses:


12

L'option 1 (ajout d'un jeton de mot inconnu) est la façon dont la plupart des gens résolvent ce problème.

L'option 2 (supprimer les mots inconnus) est une mauvaise idée car elle transforme la phrase d'une manière qui n'est pas cohérente avec la façon dont le LSTM a été formé.

Une autre option récemment développée consiste à créer un mot incorporé à la volée pour chaque mot à l'aide d'un réseau neuronal convolutif ou d'un LSTM distinct qui traite les caractères de chaque mot un par un. En utilisant cette technique, votre modèle ne rencontrera jamais un mot pour lequel il ne peut pas créer d'incorporation.


Salut Aaron, pouvez-vous me donner quelques conseils (papiers ou code) qui utilisent votre troisième option?
Prophecies



1
Un plus récent (EMNLP 2017) arxiv.org/abs/1707.06961 avec le code github.com/yuvalpinter/Mimick
jayelm

-1

Le mappage de mots rares signifie simplement que nous supprimons ces mots et les remplaçons par le jeton dans les données de formation. Ainsi notre modèle ne connaît pas de mots rares. C'est une forme grossière de lissage car le modèle suppose que le jeton ne se produira jamais réellement dans les données réelles ou mieux encore, il ignore complètement ces n-grammes.


4
Veuillez ajouter substantiellement à cette réponse. Par exemple, sauvegardez l'affirmation selon laquelle "l'ajout d'un jeton de mot inconnu est la meilleure option".
Jim
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.