Nach allem, was ich gesehen habe, ist die Kneser-Ney-Glättungsformel (zweiter Ordnung) auf die eine oder andere Weise gegeben als
mit dem normalisierenden Faktor als
und die Fortsetzungswahrscheinlichkeit eines Wortes
Dabei ist die Anzahl der Kontexte, in denen gesehen wurde, oder einfacher die Anzahl der eindeutigen Wörter , die vor dem angegebenen Wort . Nach meinem Verständnis kann die Formel rekursiv angewendet werden.
Nun werden bekannte Wörter in unbekannten Kontexten für verschiedene n-Gramm-Längen gut behandelt, aber was nicht erklärt wird, ist, was zu tun ist, wenn Wörter außerhalb des Wörterbuchs vorhanden sind. Ich habe versucht, diesem Beispiel zu folgen, das besagt, dass im Rekursionsschritt für Unigramme . Das Dokument verwendet dies dann - unter Anführung von Chen und Goodman -, um die obige Formel als P ^ 1_ {KN} (w) = P_ {cont} (w) zu rechtfertigen .
Ich verstehe nicht, wie es in Gegenwart eines unbekannten Wortes w = \ text {unknown} funktioniert . In diesen Fällen ist da das unbekannte Wort offensichtlich nichts bezüglich des Trainingssatzes fortsetzt. Ebenso wird die Anzahl von n-Gramm .
Außerdem kann der gesamte Term null sein, wenn eine Folge unbekannter Wörter - beispielsweise ein Trigramm von OOD-Wörtern - auftritt.
Was vermisse ich?
Antworten:
Dan Jurafsky hat ein Kapitel über N-Gram-Modelle veröffentlicht, das sich ein wenig mit diesem Problem befasst:
Ich habe versucht herauszufinden, was dies bedeutet, bin mir aber nicht sicher, ob nur . Wenn dies der Fall ist und Sie davon ausgehen, dass die Zählung auf Null geht, geht möglicherweise nach :lim x → 0 x λ ( ε ) dϵ limx → 0x λ ( ϵ ) d
dann wird dem unbekannten Wort nur ein Bruchteil des Rabatts zugewiesen, dh:
Ich bin mir dieser Antwort überhaupt nicht sicher, wollte sie aber herausbringen, falls sie weitere Gedanken hervorruft.
Update: Es scheint, als würde normalerweise verwendet, um die leere Zeichenfolge ("") zu kennzeichnen, aber es ist immer noch nicht klar, wie sich dies auf die Berechnung von auswirkt . ist immer noch meine Vermutungλ dϵ λ d| V|
quelle
Es gibt viele Möglichkeiten, ein Modell zu trainieren,
<UNK>
obwohl Jurafsky vorschlägt, die Wörter auszuwählen, die im Training nur sehr selten vorkommen, und sie einfach in zu ändern<UNK>
.Trainieren Sie dann einfach die Wahrscheinlichkeiten wie gewohnt.
Sehen Sie dieses Video ab 3:40 -
https://class.coursera.org/nlp/lecture/19
Ein anderer Ansatz besteht darin, ein Wort einfach als
<UNK>
das allererste Mal zu betrachten, das es im Training gesehen wird. Meiner Erfahrung nach weist dieser Ansatz jedoch zu viel der Wahrscheinlichkeitsmasse zu<UNK>
.quelle
Nur ein paar Gedanken, ich bin weit davon entfernt, ein Experte in dieser Angelegenheit zu sein, also habe ich nicht die Absicht, eine Antwort auf die Frage zu geben, sondern sie zu analysieren.
Das Einfache wäre, zu berechnen, indem man die Summe auf eins zwingt. Dies ist sinnvoll, da die leere Zeichenfolge im Trainingssatz nie angezeigt wird (nichts kann aus nichts vorhergesagt werden) und die Summe eins sein muss. Wenn dies der Fall ist, kann geschätzt werden durch: Denken Sie daran, dass hier aus dem Bigram-Modell erhalten wird.λ ( ε ) λ ( ε ) = 1 - Σ w m a x ( C K N ( w ) - d , 0 )λ(ϵ) λ(ϵ) CKN(w)
Eine andere Möglichkeit wäre, die
<unk>
Wahrscheinlichkeit mit den von Randy genannten Methoden abzuschätzen und als reguläres Token zu behandeln.Ich denke, dass dieser Schritt gemacht wird, um sicherzustellen, dass die Formeln konsistent sind. Beachten Sie, dass der Begriff nicht vom Kontext abhängt und den Wahrscheinlichkeiten jedes Tokens feste Werte zuweist. Wenn Sie das nächste Wort vorhersagen möchten, können Sie diesen Begriff vorhersagen. Wenn Sie andererseits die jedem Token zugewiesene Kneser-Ney-Wahrscheinlichkeit in zwei oder mehr verschiedenen Kontexten vergleichen möchten, möchten Sie ihn möglicherweise verwenden.λ(ϵ)|V|
quelle