Witajcie ludzie, wdrażam technikę wygładzania Stupid Backoff (strona 2, równanie 5) dla projektu, nad którym pracuję i mam pytanie dotyczące jego implementacji. Jest to algorytm wygładzający używany w NLP, Good-Turing jest chyba najbardziej znanym podobnym algorytmem.Wyjaśnienie implementacji Głupi Backoff
Krótki opis algorytmu to: Podczas próby znalezienia prawdopodobieństwa pojawienia się słowa w zdaniu najpierw będzie szukać kontekstu dla słowa na poziomie n-gramowym i jeśli nie ma n-gramu tego rozmiar będzie rekurencyjny do (n-1) -gram i pomnożyć jego wynik z 0,4. Rekursja zatrzymuje się w unigramach.
Więc jeśli chcę znaleźć prawdopodobieństwo "dnia" w kontekście "słonecznego dnia", najpierw sprawdziłbym, czy w korpusie znajduje się tri-gram "słoneczny dzień", gdyby nie spróbuj tego samego z bigramem "słoneczny dzień", a na końcu dostaniesz częstotliwość "dnia" podzieloną przez rozmiar korpusu (całkowita liczba słów w danych treningowych).
Moje pytanie brzmi: czy pomnożę wynik przez 0,4 za każdym razem, gdy zmniejszam rozmiar n-gramu?
więc w powyższym przykładzie, jeśli nie jesteśmy w stanie znaleźć tri-gramowe lub bi-gramowe końcowy wynik będzie:
0,4 * 0,4 * częstotliwość (dzień)/corpus_size?
czy po prostu pomnożę raz na poziomie końcowym, więc niezależnie od tego, ile razy muszę dokonać powtórzeń, pomnożę końcowy wynik z wynikiem 0,4?
tak, mnożenie za każdym razem –