Für eine NLP-Aufgabe (Natural Language Processing) werden häufig word2vec-Vektoren als Einbettung für die Wörter verwendet. Es kann jedoch viele unbekannte Wörter geben, die nicht von den word2vec-Vektoren erfasst werden, einfach weil diese Wörter in den Trainingsdaten nicht oft genug gesehen werden (viele Implementierungen verwenden eine Mindestanzahl, bevor dem Wortschatz ein Wort hinzugefügt wird). Dies kann insbesondere bei Texten von z. B. Twitter der Fall sein, bei denen Wörter häufig falsch geschrieben werden.
Wie sollten solche unbekannten Wörter behandelt werden, wenn eine NLP-Aufgabe wie die Stimmungsvorhersage unter Verwendung eines Langzeitnetzwerks (LSTM) modelliert wird? Ich sehe zwei Möglichkeiten:
- Hinzufügen eines Tokens für ein unbekanntes Wort zum word2vec-Wörterbuch.
- Löschen Sie diese unbekannten Wörter so, dass der LSTM nicht einmal weiß, dass das Wort im Satz enthalten ist.
Was ist die bevorzugte Art, mit diesen Wörtern umzugehen?
Antworten:
Option 1 (Hinzufügen eines unbekannten Wort-Tokens) ist, wie die meisten Leute dieses Problem lösen.
Option 2 (Löschen der unbekannten Wörter) ist eine schlechte Idee, da sie den Satz auf eine Weise transformiert, die nicht mit dem Training des LSTM übereinstimmt.
Eine andere Option, die kürzlich entwickelt wurde, besteht darin, ein Wort zu erstellen, das im laufenden Betrieb für jedes Wort eingebettet wird, wobei ein Faltungs-Neuronales Netzwerk oder ein separates LSTM verwendet wird, das die Zeichen jedes Wortes einzeln verarbeitet. Mit dieser Technik wird Ihr Modell niemals auf ein Wort stoßen, für das es keine Einbettung erstellen kann.
quelle
Das Zuordnen seltener Wörter bedeutet einfach, dass wir diese Wörter löschen und durch das Token in den Trainingsdaten ersetzen. Daher kennt unser Modell keine seltenen Wörter. Es ist eine grobe Form der Glättung, da das Modell davon ausgeht, dass das Token in realen Daten niemals tatsächlich auftritt oder besser, diese n-Gramme jedoch insgesamt ignoriert.
quelle