Ich bin neu in HMM und lerne noch. Ich verwende derzeit HMM, um einen Teil der Sprache zu markieren. Um den Viterbi-Algorithmus zu implementieren, benötige ich Übergangswahrscheinlichkeiten ( ) und Emissionswahrscheinlichkeiten ( b_i (o) ).
Ich generiere Werte für diese Wahrscheinlichkeiten mithilfe einer überwachten Lernmethode, bei der ich einen Satz und seine Kennzeichnung gebe. Ich berechne Emissionswahrscheinlichkeiten wie folgt:
Dabei ist die Häufigkeit, mit der das Tag im Trainingssatz vorkommt, und die Häufigkeit, mit der das beobachtete Wort dem Tag .
Bei Verwendung dieses trainierten zum Markieren können jedoch Variablen im angegebenen Satz beobachtet werden, die beim Ermitteln des Werts für b_i nie angezeigt wurden . Wie schätzen Sie in einem solchen Fall einen Wert für für diese Instanz?
Antworten:
Für diese Art von Fragen ist es möglich, Laplace Smoothing zu verwenden . Im Allgemeinen kann Laplace Smoothing wie geschrieben werden:
Hier ist die Wahrscheinlichkeit.L
In diesem Fall können die Emissionswahrscheinlichkeitswerte ( ) wie umgeschrieben werden:bi(o)
Dabei ist die Anzahl der Tags, die nach dem Training des Systems verfügbar sind.n
quelle
n
die Anzahl der eindeutigen Wörter sein, nicht die Anzahl der Tags? Nur so summiert sich die Wahrscheinlichkeit auf 1Dies ist eine relativ alte Frage, aber ich werde meine 5 Cent für die Leute hinzufügen, die (wie ich) auf der Suche nach etwas Ähnlichem darauf gestoßen sind.
Ein alternativer Ansatz für den Umgang mit emissionsfreien Wahrscheinlichkeiten besteht darin, "das Vokabular zu schließen". Eine Idee ist es, "seltene" Wörter im Trainingssatz zu definieren - solche, die weniger als vordefiniert vorkommen - und sie durch "Wortklassen" zu ersetzen, bevor das Modell trainiert wird. Wenn Sie ein Modell auf eine neue Wortfolge anwenden, werden alle Wörter, die nicht in einem Trainingssatz enthalten waren, ebenfalls in "Wortklassen" konvertiert (was sie effektiv als "selten" betrachtet). Es garantiert, dass es für ein Modell keine unsichtbaren Wörter gibt.
Die Regeln zum Erzeugen von "Wortklassen" aus Wörtern müssen manuell ausgewählt werden (was ein Nachteil ist). Zum Beispiel in einem (wahrscheinlich) ersten Artikel, in dem dieser Ansatz verwendet wurde (Bikel, DM, Schwartz, R. & Weischedel, RM Machine Learning (1999) 34: 211; https://link.springer.com/article/). 10.1023 / A: 1007558221122 ; http://curtis.ml.cmu.edu/w/courses/index.php/Bikel_et_al_MLJ_1999 ) Beispiele für Klassen sind:
Ein Beispiel für einen vorverarbeiteten markierten Satz aus einem Trainingssatz (aus Vorlesungen von Michael Collins):
"Gewinne / NA stiegen / NA bei / NA Boeing / SC Co./CC, / NA leicht / NA topping / NA Prognosen / NA an / NA Wall / SL Street / CL, / NA als / NA ihr / NA CEO / NA Alan / SP Mulally / CP angekündigt / NA erstes / NA-Quartal / NA-Ergebnisse / NA ./NA "
wird (mit einigen hypothetischen Tags und "seltenen Wörtern") in (ersetzte Wörter, wie fett dargestellt ) umgewandelt.
" Firstword / NA gestiegen / NA bei / NA INITCAP / SC Co./CC, / NA leicht / NA klein geschrieben / NA Prognosen / NA auf / NA INITCAP / SL Straße / CL / NA als / NA ihr / NA CEO / NA Alan / SP initCap / CP angekündigt / NA erstes / NA-Quartal / NA-Ergebnisse / NA ./NA "
Es ist immer noch möglich, dass im Trainingssatz nicht alle Paare von "Tag -> Wort / Wortklasse" gesehen werden, was es unmöglich macht, dass ein bestimmtes Wort oder eine bestimmte Wortklasse mit diesen Tags markiert wird. Dies verhindert jedoch nicht, dass diese Wörter mit anderen Tags versehen werden - im Gegensatz zu einem Wort, das in einem Trainingssatz nicht enthalten war.
quelle