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:
- Ajout d'un jeton «mot inconnu» au dictionnaire word2vec.
- 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?
Réponses:
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.
la source
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.
la source