Jazykové modelování Pavel Smrž 27. listopadu 2006
Osnova 1 Úvod motivace, základní pojmy 2 Modely n-tic 3 Způsob vyhodnocování 4 Vyhlazování a stahování 5 Rozšíření modelů n-tic 6 Lingvisticky motivované modely
Motivace Úkol: předpovědět následující slovo na základě předchozích Použití: Rozpoznávání mluvené řeči Strojový překlad Obnovení diakritiky (doplnění háčků a čárek) Korektory pravopisu a gramatiky OCR rozpoznávání tištěného textu Rozpoznávání rukopisného textu Prediktivní psaní SMS Pravděpodobnostní syntaktická analýza Zjednoznačňování morfosyntaktických kategoríı Zjednoznačňování slovních významů Dlouhá historie Andrej A. Markov (1913) modelování řetězců znaků, Claude E. Shannon Shannonova hra (1951) odhad dalšího slova/písmene v textu
Základní pojmy Určujeme apriorní pravděpodobnost řetězců slov Vezmeme trénovací vzorek textových dat Použijeme statistickou inferenci bereme data (generovaná podle neznámého rozdělení pravděpodobnosti) a děláme závěry o tomto rozdělení Chceme se naučit rozdělení pravděpodobnosti, tj. funkci P takovou, že: P(x) = 1, P(x) 0 x V x V Obvykle předpokládáme, že trénovací vzorek je vybrán ze základního rozdělení pravděpodobnosti P, kterému se chceme pomocí P co nejvíce přibĺıžit.
Pravidlo zřetězení a Markovův předpoklad P(w 1, w 2,..., w n ) = P(w 1 START) P(w 2 START, w 1 ) P(w 3 START, w 1, w 2 )... P(w n START, w 1, w 2,..., w n 1) P(STOP START, w 1, w 2,..., w n 1, w n ) Markovův předpoklad nezávislosti další slovo záleží jen na k předchozích, např.: P(w i START, w 1, w 2,..., w i 1) = (w i w i 2, w i 1 ) Řád modelu na základě kolika předchozích slov (= historie) se rozhodujeme
Velikost modelů příklad Počet parametrů modelu předpokládejme slovník 50 000 slov (slovních tvarů): model 1. řádu dvojice 50 000 49 999 2, 5 10 9 model 2. řádu trojice 50 000 2 49 999 1, 25 10 14 model 3. řádu čtveřice 50 000 3 49 999 6, 25 10 18
Velikost modelů příklad Počet parametrů modelu předpokládejme slovník 50 000 slov (slovních tvarů): model 1. řádu dvojice 50 000 49 999 2, 5 10 9 model 2. řádu trojice 50 000 2 49 999 1, 25 10 14 model 3. řádu čtveřice 50 000 3 49 999 6, 25 10 18 Nejhorší případ počet různých n-tic je lineární vzhledem k velikosti korpusu
Velikost modelů příklad Počet parametrů modelu předpokládejme slovník 50 000 slov (slovních tvarů): model 1. řádu dvojice 50 000 49 999 2, 5 10 9 model 2. řádu trojice 50 000 2 49 999 1, 25 10 14 model 3. řádu čtveřice 50 000 3 49 999 6, 25 10 18 Nejhorší případ počet různých n-tic je lineární vzhledem k velikosti korpusu Reálný příklad 275 mil. slov z korpusu Gigaword různých slov 716 706 různých dvojic 12 537 755 různých trojic 22 174 483
Odhad největší věrohodnosti (MLE) MLE: P MLE (w i w 1 w 2... w i 1 ) = P MLE (w i w i n+1... w i 1 ) = C(w i n+1...w i ) Pj C(w i n+1...w i w j ) = C(w i n+1...w i ) C(w i n+1...w i 1 ) Vybíráme takové hodnoty parametrů, které dávají nejvyšší pravděpodobnost trénovacím datům (výskyt určité n-tice je brán jako náhodná proměnná s binominálním rozdělením, tzn. každá n-tice je nezávislá na dalších neplatí!!!)
Příklad unigramový model Trénovací množina: Honza má krásný velký byt Petr koupil krásný byt Franta koupil drahý nový byt Testovací věta: Franta koupil krásný velký byt Model M 0 : P(Honza) = 0,0714 P(má) = 0,0714 P(krásný) = 0,1429 P(velký) = 0,0714 P(byt) = 0,2143 P(Petr) = 0,0714 P(koupil) = 0,1429 P(Franta) = 0,0714 P(drahý) = 0,0714 P(nový) = 0,0714 P(S) = 0, 0714 0, 1429 0, 0714 0, 1429 0, 2143 = 0, 0000231 } {{ } } {{ } } {{ } } {{ } } {{ } Franta koupil krásný velký byt
Příklad bigramový model Model M 1 : P(má Honza) = 1, 0 P(krásný má) = 1, 0 P(velký krásný) = 0, 5 P(byt krásný) = 0, 5 P(byt velký) = 1, 0 P(koupil Petr) = 1, 0 P(krásný koupil) = 0, 5 P(drahý koupil) = 0, 5 P(koupil Franta) = 1, 0 P(nový drahý) = 1, 0 P(byt nový) = 1, 0 P(Franta START ) = 0, 333 P(Honza START ) = 1, 0 P(Petr START ) = 0, 333 P(S) = 0, 333 1, 0 0, 5 } {{ } }{{} }{{} Franta koupil krásný 0, 5 }{{} velký 1, 0 = 0, 0833 }{{} byt
Vyhodnocování Nejpřesnější vyhodnocování v konkrétních aplikacích (citlivost na změny stylu, tématu, žánru 2 mil. > 140 mil.) Často nevhodné nezávislý vývoj nutnost samostatného vyhodnocování jazykového modelu perplexita Dobrý model dává vysokou pravděpodobnost skutečnému textu Entropie (neuspořádanost) H(P) = x P(x) log 2 P(x)
Entropie (1) Entropie přes posloupnosti slov w 1,..., w n jazyka L: H(w 1,..., w n ) = W n 1 L P(W n 1 ) log 2 P(W n 1 ) Entropie na posloupnostech silně závisí na jejich délce Abychom získali rozumnou míru, počítáme entropii na slovo míru entropie průměrný počet bitů na slovo potřebný k optimálnímu zakódování testovacích dat 1 n H(w 1,..., w n ) = 1 P(W1 n ) log n 2 P(W1 n ) W1 n L
Entropie (2) Entropii pro jazyk L potom získáme, pokud uvážíme posloupnosti nekonečné délky: 1 H(L) = lim n n H(w 1,..., w n ) = lim 1 n n W n 1 L P(W n 1 ) log 2 P(W n 1 ) Tento vztah lze na základě Shannonovy-McMillanovy-Breimanovy věty zjednodušit: H(L) = lim n 1 n log 2 P(W n 1 ) Intuitivně pokud je posloupnost nekonečná, nemusíme sčítat přes všechny možné posloupnosti, nebot nekonečná posloupnost obsahuje všechny podposloupnosti
Entropie (3) V praxi neznáme skutečné rozdělení pravděpodobnosti P pro jazyk L, máme pouze model M Definujeme vzájemnou entropii H(P, M) = lim n 1 n log 2 M(W n 1 ) Dále nemáme nekonečné posloupnosti, jsme omezeni testovací množinou (pokud je dostatečně velká, vypočtená vzájemná entropie je dobrým odhadem skutečné vzájemné entropie) Perplexita průměrný počet variant v každém bodě PP(P, M) = 2 H(P,M)
Příklad perplexita pro bigramový model P(S) = 0, 333 } {{ } Franta 1, 0 0, 5 0, 5 }{{} }{{} koupil krásný }{{} velký 1, 0 = 0, 0833 }{{} byt H(P, M) = 1 5 log 2 P(S) = 1 5 (log 2 0, 333 + log } {{ } 2 1, 0 + log }{{} 2 0, 5 }{{} Franta koupil krásný + log 2 0, 5 + log }{{} 2 1, 0 ) }{{} velký byt = 0, 7173 PP(P, M) = 2 H(P,M) = 1, 6441
Motivační příklad pro vyhlazování a stahování Testovací věta S 2 : Franta koupil krásný nový byt
Motivační příklad pro vyhlazování a stahování Testovací věta S 2 : Franta koupil krásný nový byt Dvojice krásný nový nebyla v trénovacích datech: P MLE (nový krásný) = 0 P MLE (S 2 ) = 0 Dvě příčiny nulové pravděpodobnosti: V trénovacích datech nebylo dané slovo neznámá slova token UNKNOWN V trénovacích datech nebyla daná n-tice vyhlazování přiřadí se jim nějaká nízká pravděpodobnost a/nebo stahování k nižším modelům
Vyhlazování odečítáním konstanty Řešení snížit pravděpodobnost n-tic z trénovacích dat (a nechat ji pro neviděné ), tzn. vyhladit funkci pravděpodobnosti (nebudou 0) discounting, smoothing Vyhlazování přičítáním jedničky (Laplaceovo): P MLE (w i w 1 w 2... w i 1 ) = C(w i n+1... w i ) + 1 C(w i n+1... w i 1 ) + B Odpovídá případu, kdy jsou všechny n-tice stejně pravděpodobné Závislé na velikosti slovníku!!! Pro řídká data nad velkým slovníkem dává příliš velkou pravděpodobnost nepozorovaným n-ticím
Vyhlazování odečítáním konstanty Řešení snížit pravděpodobnost n-tic z trénovacích dat (a nechat ji pro neviděné ), tzn. vyhladit funkci pravděpodobnosti (nebudou 0) discounting, smoothing Vyhlazování přičítáním jedničky (Laplaceovo): P Lap (w i w 1 w 2... w i 1 ) = C(w i n+1... w i ) + 1 C(w i n+1... w i 1 ) + B Odpovídá případu, kdy jsou všechny n-tice stejně pravděpodobné Závislé na velikosti slovníku!!! Pro řídká data nad velkým slovníkem dává příliš velkou pravděpodobnost nepozorovaným n-ticím
Vyhlazování odečítáním konstanty reálný příklad Experimenty Churche a Galea (1991) 22 mil. trénovacích a 22 mil. testovacích slov, ze stejné oblasti počty dvojic: Četnost Skutečná četnost Očekávaná četnost v trénovacích v testovacích v testovacích datech datech datech (přičítání jedničky) 0 0,000027 0,000132 1 0,448 0,000274 2 1,25 0,000411 3 2,24 0,000548 4 3,23 0,000685 5 4,21 0,000822
Vyhlazování odečítáním konstanty hodnocení Nadhodnotili jsme neviděné (0, 000132 > 0, 000027), a protože je jich tak mnoho, sebrali nám příliš moc Pro řídká data nad velkým slovníkem dává příliš velkou pravděpodobnost nepozorovaným n-ticím Krichevski-Trofimov (přičítání 1/2): P KT (w i w 1 w 2... w i 1 ) = C(w i n+1... w i ) + 1 2 C(w i n+1... w i 1 ) + 1 2 B Hardy a Lidstone: P HL (w i w 1 w 2... w i 1 ) = C(w i n+1... w i ) + λ C(w i n+1... w i 1 ) + λb
Jeffreysův-Perksův odhad Jeffreysův-Perksův zákon lineární interpolace mezi MLE a uniformním rozdělením apriorní pravděpodobnosti odhad očekávané věrohodnosti P JP (w i w 1 w 2... w i 1 ) = µ C(w i n+1... w i ) N µ = N N+Bλ Vyhlazování na validačních datech + (1 µ) 1 B
Goodův-Turingův odhad I. J. Good a A. M. Turing chtěli rozlomit Enigmu... Good-Turing: n-tici, která se vyskytla r krát, bereme, jako by se vyskytla r krát: r = (r + 1) E(N r+1) E(N r ) Výborné výsledky pro málo frekventované, proto v praxi často: pro #(w 1,..., w n ) = r > 0 : P GT (w 1,..., w n ) = r N ; pro #(w 1,..., w n ) = 0 : P GT (w 1,..., w n ) = N 1 N 0 N r = (r + 1) S(r+1) S(r)
Modely založené na třídách slov n-tice, která se nevyskytla v trénovacích datech by měla dostat vyšší pravděpodobnost, pokud je složena z prvků, které jsou podobné prvkům vyskytujících se n-tic LM založené na třídách slov kombinace slov a značek tříd je méně než slov potřebujeme méně dat, máme menší modely výpočetně náročné, problematické určení počtu tříd, obtížně začlenitelné do dekodéru, lingvisticky motivované třídy vs. čistě statistický přístup morfologické třídy LSI pro nalezení sémantických tříd
Automaticky generované třídy slovo v 1 třídě Shlukovací algoritmus nemusí existovat snadná interpretace Například maximalizace průměrné vzájemné informace: ( ) P(c(wi ), c(w j )) arg max P(c(w i ), c(w j ))log {c} P(c(w i ))P(c(w j )) c(w i ),c(w j ) kde c(w i ) je třída i tého slova Spojení s modely n-tic slov P(w n w n 1 n N+1 ) = P(w n c n )P(c n c n 1 n N+1 ) kde c n je třída, do níž patří n té slovo a P(c n c n 1 n N+1 ) = C(cn n N+1 ) P(w n c n ) = C(w n) C(c n ) C(c n 1 n N+1 )
Automaticky generované třídy slovo v n třídách P(w n w n 1 n N+1 ) = c n P(w n c n )P(c n c n 1 n N+1 ) Spojení s modely n-tic slov pomocí lineární interpolace P(w h) = λ 0 P g (w h) + M λ m P c (w c(w), S)P m (c(w) c(h)) m=i kde w je dané slovo, P g je obecný jazykový model trénovaný na celém korpusu, h je historie n-tic, P m je jedna z M tříd, λ m je váha přiřazená každému modelu tak, že λ m = 1 (λ m > 0), P c je třída daná slovu unigramovým modelem a S je zdroj adaptačních dat použitý k trénování P c