Otevřít hlavní menu

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í modeluEditovat

Unigramový model (1-gram)Editovat

  • 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)Editovat

  • 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 textuEditovat

Unigramový model (1-gram)Editovat

  • 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)Editovat

  • 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 logaritmyEditovat

  • 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íEditovat

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í technikyEditovat

  • 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 ToolkitEditovat

  • 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ůEditovat

  • 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í odkazyEditovat