Z tego, co widziałem, formuła wygładzania Knesera-Neya (drugiego rzędu) jest w jakiś sposób podana jako
ze współczynnikiem normalizującym podanym jako
oraz prawdopodobieństwo kontynuacji słowaw n
gdzie to liczba kontekstów widzieliśmy w lub, prościej, liczba różnych wyrazów poprzedzających dane słowo . Z tego, co zrozumiałem, formułę można stosować rekurencyjnie. w ∙ w
Teraz dobrze radzi sobie ze znanymi słowami w nieznanych kontekstach dla różnych długości n-gramów, ale nie wyjaśnia, co zrobić, gdy są słowa spoza słownika. Próbowałem podążać za tym przykładem, który stwierdza, że w kroku rekursji dla unigramów, . Następnie dokument wykorzystuje to - cytując Chena i Goodmana - do uzasadnienia powyższej formuły jako . P 1 K N (w)=Pcont(w)
Nie widzę jednak, jak to działa w obecności nieznanego słowa . W tych przypadkach ponieważ, oczywiście, nieznane słowo nie kontynuuje niczego w odniesieniu do zestawu szkoleniowego. Podobnie liczba n-gramów będzie wynosić .P c o n t ( nieznany ) = 0 C(wn-1,nieznane)=0
Ponadto cały może wynosić zero, jeśli zostanie napotkana sekwencja nieznanych słów - powiedzmy trygram słów OOD.
czego mi brakuje?
Odpowiedzi:
Dan Jurafsky opublikował rozdział o modelach N-Gram, który mówi trochę o tym problemie:
Próbowałem dowiedzieć się, co to znaczy, ale nie jestem pewien, czy oznacza po prostu lim x → 0 x . Jeśli tak jest, i zakładasz, że gdy liczba zmienia się na zero, być może λ ( ϵ ) zmienia się na d , zgodnie z:ϵ limx→0x λ(ϵ) d
wtedy nieznane słowo otrzymuje tylko ułamek rabatu, tj .:
W ogóle nie jestem pewien tej odpowiedzi, ale chciałem ją znaleźć na wypadek, gdyby wzbudziła ona jeszcze więcej przemyśleń.
Aktualizacja: Kopiąc trochę dalej, wydaje się, że jest zwykle używany do oznaczenia pustego ciągu („”), ale nadal nie jest jasne, jak to wpływa na obliczanie λ . reϵ λ wciąż jest moim najlepszym przypuszczeniemd|V|
źródło
Istnieje wiele sposobów trenowania modelu,
<UNK>
choć Jurafsky sugeruje, aby wybrać te słowa, które pojawiają się bardzo rzadko podczas treningu, i po prostu je zmienić<UNK>
.Następnie po prostu trenuj prawdopodobieństwa, jak zwykle.
Zobacz ten film od 3:40 -
https://class.coursera.org/nlp/lecture/19
Innym podejściem jest po prostu rozważenie słowa jako
<UNK>
pierwszego, gdy jest ono widoczne na treningu, chociaż z mojego doświadczenia wynika, że podejście to przypisuje zbyt dużą masę prawdopodobieństwa<UNK>
.źródło
Kilka myśli, ale jestem daleki od bycia ekspertem w tej sprawie, więc nie zamierzam udzielać odpowiedzi na pytanie, ale je analizować.
Inną opcją byłoby oszacowanie
<unk>
prawdopodobieństwa metodami wymienionymi przez Randy'ego i traktowanie go jak zwykłego tokena.źródło