Berechnung der Emissionswahrscheinlichkeitswerte für das Hidden Markov Model (HMM)

8

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) ).ai,jbi(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:

bi(o)=Count(io)Count(i)

Dabei ist Count(i) die Häufigkeit, mit der das Tag i im Trainingssatz vorkommt, und Count(io) die Häufigkeit, mit der das beobachtete Wort o dem Tag i .

Bei Verwendung dieses trainierten bi(o) zum Markieren können jedoch Variablen im angegebenen Satz beobachtet werden, die beim Ermitteln des Werts für b_i nie angezeigt wurdenbi . Wie schätzen Sie in einem solchen Fall einen Wert für bi für diese Instanz?

Ramesh-X
quelle
Ist die Art und Weise, wie Sie die Emissionswahrscheinlichkeiten berechnen, die einzige? Ich versuche, einen ähnlichen Fall für eine Aufgabe zu lösen.

Antworten:

5

Für diese Art von Fragen ist es möglich, Laplace Smoothing zu verwenden . Im Allgemeinen kann Laplace Smoothing wie geschrieben werden:

If y{1,2,...,k}then,P(y=j)=i=1mL{yi=j}+1m+k

Hier ist die Wahrscheinlichkeit.L

In diesem Fall können die Emissionswahrscheinlichkeitswerte ( ) wie umgeschrieben werden: bi(o)

bi(o)=\Count(io)+1\Count(i)+n

Dabei ist die Anzahl der Tags, die nach dem Training des Systems verfügbar sind.n

Ramesh-X
quelle
sollte nicht ndie Anzahl der eindeutigen Wörter sein, nicht die Anzahl der Tags? Nur so summiert sich die Wahrscheinlichkeit auf 1
hLk
1

Dies 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:

Word Feature           | Example Text           | Intuition
-----------------------|------------------------|-----------------------------------------
twoDigitNum            | 90                     | Two-digit year
fourDigitNum           | 1990                   | Four digit year
containsDigitAndAlpha  | A8956-67               | Product code
containsDigitAndDash   | 09-96                  | Date
containsDigitAndSlash  | 11/9/89                | Date
containsDigitAndComma  | 23,000.00              | Monetary amount
containsDigitAndPeriod | 1.00 Monetary          | amount, percentage
otherNum               | 456789                 | Other number
allCaps                | BBN                    | Organization
capPeriod              | M.                     | Person name initial
firstWord              | first word of sentence | No useful capitalization information
initCap                | Sally                  | Capitalized word
lowerCase              | can                    | Uncapitalized word
other                  | ,                      | Punctuation marks, all other words

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.

Augur
quelle