Rozpoznávání jazyka
Rozpoznávání jazyka textového dokumentu 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.
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.
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í.
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.