Rozpoznávání jazyka je jedna z úloh automatického zpracování textového dokumentu, která je založená na statistickém N-gramovém modelu.
N-gramové modely pracují se slovy (např. rozpoznání řeči) nebo se znaky (např. rozpoznání jazyka). Nejdříve se natrénuje N-gramový model pro jednotlivé jazyky, které se mají rozpoznávat, poté se určí skóre rozpoznávaného textu pro všechny modely a model s nejvyšším skórem je určen za rozpoznaný jazyk.
Trénování modelu
Unigramový model (1-gram) Unigramový (1-gram) model se trénuje na velkém množství textových dat, které projíždíme po znacích a zaznamenáváme jejich četnosti. Poté jednotlivé četnosti vydělíme celkovým počtem znaků a získáme tak pravděpodobnosti výskytu jednotlivých znaků.
Bigramový model (2-gram) Bigramový (2-gram) model se trénuje na velkém množství textových dat, které projíždíme po dvojicích znaků (Z1, Z2) a zaznamenáváme jejich četnosti. Poté četnosti dvojice (Z1,Z2) vydělíme počtem dvojic s první znakem Z1, tím dostaneme pravděpodobnost, že přijde znak Z2 po znaku Z1. Obdobně se postupuje u modelů s vyšším N.
Určení skóre neznámého textu
Unigramový model (1-gram) Projíždíme neznámý text po znacích a násobíme mezi sebou pravděpodobnosti znaků, které čteme ze zvoleného modelu, tím získáme skóre neznámého textu pro zvolený model. Skóre zjistíme pro každý jazykový model a model s nejvyšším skórem považujeme za vítěze rozpoznávání, tedy za rozpoznaný jazyk. P = P(Z1)*P(Z2)*P(Z3)*…
Bigramový model (2-gram) Projíždíme neznámý text po dvojicích a násobíme mezi sebou pravděpodobnosti vyskytnuvších se dvojic znaků, tím získáme skóre neznámého textu pro zvolený model. Obdobně se postupuje u modelů s vyšším N. P = P(Z1,Z2)*P(Z2,Z3)*P(Z3,Z4)*…
Počítání s logaritmy Protože při výpočtu skóre neznámého textu se násobí pravděpodobnosti, které nabývají malých hodnot, docházelo by k podtečení proměnné, proto se místo násobení pravděpodobností používá sčítaní logaritmů pravděpodobností. log(P) = log(P(Z1))+log(P(Z2))+log(P(Z3))+… log(P) = log(P(Z1,Z2))+log(P(Z2,Z3))+log(P(Z3,Z4))+…
Vyhlazování V modelu se objevují N-gramy s nulovou pravděpodobností (N-gramy, které se nevyskytly v trénovacím korpusu), což je nežádoucí jev. Nulové pravděpodobnosti jsou nežádoucí z hlediska robustnosti modelu, protože ve chvíli, kdy se v rozpoznávaném textu objeví n-gram, který se neobjevil v trénovacím korpusu, bude mít tento text nulové skóre (násobíme 0), i když by byl text napsán v daném jazyce a neviděný n-gram by byl třeba jen překlep. K odstranění těchto nulových pravděpodobností se využívá vyhlazování, které nulovým pravděpodobnostem přidělí malou pravděpodobnost, která je odebrána n-gramům s nenulovou pravděpodobností. Tím získáme vyhlazený N-gramový model.
Používané vyhlazovací techniky Add-one smoothing Witten-Bell discounting Good-Turing discounting (en) Ristad's natural discounting law Ney's absolute discounting Kneser-Ney discounting
SRILM - The SRI Language Modeling Toolkit Sada nástrojů pro práci s N-gramovými modely. Vytváření N-gramových modelů s různým nastavením N, vyhlazovací techniky, apod. Zjišťování skóre neznámého textu.
Využití n-gramových modelů Rozpoznání jazyka. Při rozpoznávání znaků v OCR. Při překladu jazyků (Google translator). Rozpoznávání spamu. Doplňování diakritiky do textu. atd.
Externí odkazy SRILM - The SRI Language Modeling Toolkit
Kategorie:Zpracování přirozeného jazyka Kategorie:Strojový překlad Kategorie:Vyhledávací algoritmy