Jak w przypadku wygładzania Kneser-Ney obsługiwane są niewidoczne słowa?


15

Z tego, co widziałem, formuła wygładzania Knesera-Neya (drugiego rzędu) jest w jakiś sposób podana jako

PKN2(wn|wn1)=max{C(wn1,wn)D,0}wC(wn1,w)+λ(wn1)×Pcont(wn)

ze współczynnikiem normalizującym λ(wn1) podanym jako

λ(wn1)=DwC(wn1,w)×N1+(wn1)

oraz prawdopodobieństwo kontynuacji słowaw nPcont(wn)wn

Pcont(wn)=N1+(wn)wN1+(w)

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 wN1+(w)ww

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)Pcont(/)=PKN0(/)=1VPKN1(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 ) = 0w=unknown C(wn-1,nieznane)=0Pcont(unknown)=0somethingC(wn1,unknown)=0

Ponadto cały może wynosić zero, jeśli zostanie napotkana sekwencja nieznanych słów - powiedzmy trygram słów OOD.wC(wn1,w)

czego mi brakuje?


Ja też walczę z KN. Myślę, że prawdopodobieństwo niewidzialnego bigramu P (w1w2) może cofnąć się do prawdopodobieństwa kontynuacji ostatniego unigramu w2. Kiedy masz niewidzialny unigram, nie masz nic. Co zrobic nastepnie? Nie wiem
momobo

W tej chwili próbuję wdrożyć KN i utknąłem z tym samym problemem. Czy któreś z was udało się znaleźć rozwiązanie?
jbaiter

Powróciłem do wygładzania Good-Turinga dla niewidzialnych unigramów (dopasowanie funkcji mocy do częstotliwości i częstotliwości częstotliwości) ... z różnymi wynikami.
sunside

Odpowiedzi:


6

Dan Jurafsky opublikował rozdział o modelach N-Gram, który mówi trochę o tym problemie:

Po zakończeniu rekursji unigramy są interpolowane z równomiernym rozkładem:

PKN(w)=max(cKN(w)d,0)wcKN(w)+λ(ϵ)1|V|

Jeśli chcemy dołączyć nieznane słowo <UNK>, jest ono po prostu zawarte w zwykłym słownictwie z liczbą zero, a zatem jego prawdopodobieństwo będzie następujące:

λ(ϵ)|V|

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:ϵlimx0xλ(ϵ)d

λ(wi1)=dc(wi1)|{w:c(wi1,w)>0}|

wtedy nieznane słowo otrzymuje tylko ułamek rabatu, tj .:

λ(ϵ)|V|=d|V|

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|


2
Dobra odpowiedź, ale tak jak ty nie jestem w 100% pewny. Zaimplementowałem wersję skryptu perl research.microsoft.com/en-us/um/redmond/groups/srg/papers/... w pythonie - ale zdałem sobie sprawę, że działa on tak jak jest, jeśli masz zamknięte słownictwo (problem 0 prob ) - tzn. wszystkie unigramy testowe również są w pociągu. Jak sugeruje Jan lagunita.stanford.edu/c4x/Engineering/CS-224N/asset/slp4.pdf Wymieniłem Każde słowo w pierwszej instancji <UNK> podczas obróbki wstępnej. Jednak podczas partycjonowania niektóre testowe unigramy nie są w pociągu, takie jak „goofedup”. Więc użyłem d / | V | tutaj. Dzięki!
Josh Morel

1

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>.


0

Kilka myśli, ale jestem daleki od bycia ekspertem w tej sprawie, więc nie zamierzam udzielać odpowiedzi na pytanie, ale je analizować.

λ(ϵ)λ(ϵ)

λ(ϵ)=1wmax(CKN(w)d,0)wCKN(w)
CKN(w)

Inną opcją byłoby oszacowanie <unk>prawdopodobieństwa metodami wymienionymi przez Randy'ego i traktowanie go jak zwykłego tokena.

λ(ϵ)|V|


Odpowiedzi powinny dotyczyć rzeczywistych odpowiedzi.
Michael R. Chernick
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.