Elektronická verze publikace ve formátu pdf
Transkript
Elektronická verze publikace ve formátu pdf
České vysoké učenı́ technické v Praze Fakulta elektrotechnická Katedra teorie obvodů IMPLEMENTACE ROZPOZNÁVAČŮ ŘEČI SYNTÉZOU BLOKŮ ČÁSTEČNÝCH ZNALOSTÍ Disertačnı́ práce Pavel Štemberk Praha, únor, 2010 Doktorský studijnı́ program: Elektrotechnika a informatika Studijnı́ obor: Teoretická elektrotechnika Školitel: Ing. Václav Hanžl, CSc. . Abstrakt Text této práce poskytuje přehled procesu rozpoznávánı́ mluvené řeči na bázi skrytých Markovových modelů (HMM). Práce dále popisuje vytvořenı́ jádra dekodéru (rozpoznávacı́ sı́t’ z jednotlivých částečných znalostı́ jako jsou akustické modely, slovnı́k a jazykový model) a použitı́ konečných automatů pro optimálnı́ složenı́ těchto částı́ do jednoho celku. Práce se také zabývá jazykovým modelem pro český jazyk založeným na třı́dách slov využı́vajı́cı́m zdroje dat z Českého národnı́ho korpusu (UCNK). V práci jsou popsány nejen použı́vané nástroje pro metody rozpoznávánı́ řeči, tj. HTK a ATT nástroje, ale i vlastnı́ nástroj autora – program rct, který se stal nedı́lnou součástı́ propojenı́ ostatnı́ch nástrojů a zdroje dat z UCNK korpusu. V prováděných experimentech na dostupných řečových databázı́ch se prověřujı́ vlastnosti jednotlivých dekodérů z použitých sad nástrojů (HTK, ATT a rct) a vlastnosti navrženého modelu pro český jazyk založeného na třı́dách slov. Abstract This thesis provides the review of the ASR process based on Hidden Markov Models (HMM). This work describes a core of decoder (recognition network assembled from elementary sources such as acoustics models, dictionary and language model) and usage of finite state machines for optimal assembly into one part. The thesis also deals with Czech language model based on word’s classes where data from Czech National Corpus (UCNK) are used. Toolkits for ASR like HTK, ATT and program rct developed by the author are described in the thesis. Program rct became main part of data source interconnection between other toolkits and UCNK. Properties of elementary decoders based on the used toolkits (HTK, ATT, and rct) and properties of designed Czech language model based on word classes are tested by experiments on accessible speech databases. . Obsah Seznam obrázků v Seznam tabulek vii I Teoretická část 1 1 Statistické metody rozpoznávánı́ mluvené řeči 1.1 Úvod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Základnı́ schéma . . . . . . . . . . . . . . . . . . . . . . . . 1.3 Parametrizace dat . . . . . . . . . . . . . . . . . . . . . . . 1.3.1 Mel kepstrálnı́ koeficienty (MFCC) . . . . . . . . . . 1.3.2 Výpočet krátkodobé energie . . . . . . . . . . . . . . 1.3.3 Dynamické koeficienty . . . . . . . . . . . . . . . . . 1.4 Akustické modelovánı́ . . . . . . . . . . . . . . . . . . . . . 1.4.1 HMM . . . . . . . . . . . . . . . . . . . . . . . . . . 1.4.2 Emitujı́cı́ stavy HMM . . . . . . . . . . . . . . . . . 1.5 Jazykové modelovánı́ . . . . . . . . . . . . . . . . . . . . . . 1.5.1 Stochastický jazykový model . . . . . . . . . . . . . 1.5.2 n-gramový jazykový model . . . . . . . . . . . . . . 1.5.3 Modely založené na třı́dách slov . . . . . . . . . . . 1.5.4 Posouzenı́ kvality jazykového modelu . . . . . . . . . 1.6 Dekódovacı́ techniky . . . . . . . . . . . . . . . . . . . . . . 1.6.1 Nalezenı́ posloupnosti stavů s největšı́ věrohodnostı́ . 1.7 Základnı́ způsoby procházenı́ grafů . . . . . . . . . . . . . . 1.7.1 Hledánı́ do hloubky - DFS . . . . . . . . . . . . . . . 1.7.2 Hledánı́ do šı́řky - BFS . . . . . . . . . . . . . . . . 1.8 Algoritmus pro sı́t’ realizovanou WFST . . . . . . . . . . . 1.8.1 Prořezávánı́ rozpoznávacı́ sı́tě . . . . . . . . . . . . . 2 Stavové automaty 2.1 Úvod . . . . . . . . . . . . . . 2.2 Konečný automat . . . . . . . 2.3 Polookruh . . . . . . . . . . . 2.4 Ohodnocený stavový automat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 5 6 6 7 8 8 9 9 10 12 12 12 19 20 21 22 23 24 25 26 27 . . . . 28 28 28 29 30 i 2.5 2.6 Ohodnocený překladový stavový automat . Základnı́ operace mezi stavovými automaty 2.6.1 Sjednocenı́ (součet) . . . . . . . . . . 2.6.2 Zřetězenı́ (součin) . . . . . . . . . . 2.6.3 Uzavřenı́ . . . . . . . . . . . . . . . . 2.6.4 Otočenı́ . . . . . . . . . . . . . . . . 2.6.5 Inverze . . . . . . . . . . . . . . . . 2.6.6 Projekce . . . . . . . . . . . . . . . . 2.6.7 Odstraněnı́ epsilon přechodů . . . . 2.6.8 Průnik . . . . . . . . . . . . . . . . . 2.6.9 Rozdı́l . . . . . . . . . . . . . . . . . 2.6.10 Konexe (ořezánı́) . . . . . . . . . . . 2.6.11 Ekvivalence . . . . . . . . . . . . . . 2.6.12 Nejpravděpodobnějšı́ cesta (cesty) . 2.6.13 Náhodná cesta (cesty) . . . . . . . . 2.6.14 Prořezávánı́ . . . . . . . . . . . . . . 2.6.15 Skládánı́ . . . . . . . . . . . . . . . . 2.6.16 Determinizace . . . . . . . . . . . . . 2.6.17 Stlačenı́ . . . . . . . . . . . . . . . . 2.6.18 Minimalizace . . . . . . . . . . . . . 3 Stavový automat jako rozpoznávacı́ 3.1 Základnı́ topologie . . . . . . . . . 3.1.1 Hlavnı́ komponenty . . . . . 3.1.2 Rozpoznávacı́ sı́t’ . . . . . . II . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 32 32 33 34 34 35 35 35 35 36 36 37 38 38 38 39 40 42 42 sı́t’ 45 . . . . . . . . . . . . . . . . . . . . . . . 45 . . . . . . . . . . . . . . . . . . . . . . . 45 . . . . . . . . . . . . . . . . . . . . . . . 49 Softwarové nástroje 50 4 Úvod 51 5 HTK 5.1 Parametrizace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2 Trénovánı́ modelů . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3 Shlukovánı́ kontextově závislých fonémů . . . . . . . . . . . . . . . 5.3.1 shlukovánı́ řı́zené daty . . . . . . . . . . . . . . . . . . . . . 5.3.2 shlukovánı́ založené na fonetických rozhodovacı́ch stromech 5.4 Vytvořenı́ libovolného modelu pomocı́ rozhodovacı́ho stromu . . . 5.5 Rozpoznávánı́ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 53 54 55 56 56 58 59 . . . . . . 62 62 62 63 63 64 64 6 AT&T nástroje 6.1 knihovna DCD . . . . . . . . . . . . . . . . . . . . 6.1.1 Stavba RN . . . . . . . . . . . . . . . . . . 6.1.2 Přı́prava modelů . . . . . . . . . . . . . . . 6.1.3 Rozpoznávánı́ . . . . . . . . . . . . . . . . . 6.2 grmtools . . . . . . . . . . . . . . . . . . . . . . . . 6.2.1 Vytvořenı́ statistického jazykového modelu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ii 7 Úvod do programu rct 7.1 Univerzálnı́ parametry . . . . . . . . . . . . . . . . . . 7.2 Zpracovánı́ mlf -souborů . . . . . . . . . . . . . . . . . 7.3 Úprava souborů symbolů . . . . . . . . . . . . . . . . . 7.4 Přeindexovánı́ vstupnı́ch symbolů v automatu . . . . . 7.5 Zpracovánı́ výstupu . . . . . . . . . . . . . . . . . . . 7.6 Zpracovánı́ přı́znaků . . . . . . . . . . . . . . . . . . . 7.7 Konverze HTK HMM modelů na AT&T DCD formát 7.8 Rozpoznávánı́ programem rct . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Generovánı́ jednotlivých částı́ rozpoznávacı́ sı́tě 8.1 Jazykový model . . . . . . . . . . . . . . . . . . . . . . . . 8.2 Slovnı́k . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.3 FST kontextové závislosti . . . . . . . . . . . . . . . . . . 8.4 WFST reprezentujı́cı́ Markovovy modely . . . . . . . . . . 8.5 Vytvořenı́ WSFA reprezentujı́cı́ho pravděpodobnosti stavů . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 67 68 69 69 69 70 70 73 . . . . . 75 75 75 76 77 78 . . . . . . . . . . značek . . . . . . . . . . . . . . . . 81 81 81 87 88 89 91 . . . . . . . . . . . . . . . . . . . . . . . . promluvy 9 Zpracovánı́ databáze s morfologickými kódy 9.1 Zpracovánı́ dat z Českého národnı́ho korpusu . . . . . . . . . . . . 9.1.1 Struktura UCNK korpusu SYN2000 . . . . . . . . . . . . . 9.1.2 MYSQL Databáze pro ukládánı́ slov a jejich morfologických 9.2 Soubor morfologického popisu . . . . . . . . . . . . . . . . . . . . . 9.3 Použité kódovánı́ morfologických značek . . . . . . . . . . . . . . . 9.4 Sestavenı́ FSM pro gramatiku . . . . . . . . . . . . . . . . . . . . . III . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tvorba rozpoznávačů 10 Experimentálnı́ výsledky 10.1 Použitý hardware . . . . . . . . . . . . . . . . . . . . . . . . 10.2 Použité řečové databáze . . . . . . . . . . . . . . . . . . . . 10.3 Akustické modely . . . . . . . . . . . . . . . . . . . . . . . . 10.4 Jazykové modely . . . . . . . . . . . . . . . . . . . . . . . . 10.5 Rozpoznávacı́ sı́t’ . . . . . . . . . . . . . . . . . . . . . . . . 10.6 Experimentálnı́ srovnánı́ dostupných dekodérů . . . . . . . 10.6.1 Nalezenı́ optimálnı́ho násobitele jazykového modelu 10.6.2 Vliv pásového prořezávánı́ . . . . . . . . . . . . . . . 10.6.3 Vliv architektury . . . . . . . . . . . . . . . . . . . . 10.6.4 Vyhodnocenı́ srovnávacı́ch testů dekodérů . . . . . . 10.7 Srovnávacı́ test jazykových modelů . . . . . . . . . . . . . . 10.7.1 Monofóny . . . . . . . . . . . . . . . . . . . . . . . . 10.7.2 Difóny . . . . . . . . . . . . . . . . . . . . . . . . . . 10.7.3 Trifóny . . . . . . . . . . . . . . . . . . . . . . . . . 93 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 94 94 94 95 95 96 96 97 98 98 98 99 101 103 iii 11 Shrnutı́ 11.1 Splněnı́ cı́lů . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.1.1 Algoritmus generovánı́ FST z bloků částečných znalostı́ 11.1.2 Otestovánı́ ATT nástrojů pro český jazyk . . . . . . . . 11.1.3 Konverze akustických modelů z HTK do ATT . . . . . . 11.1.4 Vytvořenı́ Viterbiho dekodéru . . . . . . . . . . . . . . . 11.1.5 Zdroj pro jazykový model . . . . . . . . . . . . . . . . . 11.1.6 Návrh JM . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 Přı́nosy výsledků práce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 105 105 105 106 106 106 106 106 Literatura 108 Autorovy publikace 112 Literatura použitá pro tvorbu publikacı́ testovánı́ a vývoj software 114 iv Seznam obrázků 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 Princip rozpoznávánı́ řeči založený na statistickém přı́stupu . . . . . Melovská banka trojúhelnı́kových filtrů . . . . . . . . . . . . . . . . . Přı́klad levo-pravého HMM včetně matice přechodů . . . . . . . . . Demonstrace Viterbiho algoritmu . . . . . . . . . . . . . . . . . . . Princip procházenı́ grafem při zadané posloupnosti vektoru přı́znaků Rozpoznávač ”ano-ne” bez zpětných přechodů . . . . . . . . . . . . . Postupné navštěvovánı́ stavů algoritmem DFS . . . . . . . . . . . . . Mezikroky navštěvovánı́ stavů algoritmem BFS . . . . . . . . . . . . Princip generovánı́ hypotéz při procházenı́ sı́tě . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 7 9 24 24 25 25 26 27 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 2.10 2.11 2.12 2.13 2.14 2.15 2.16 2.17 2.18 2.19 2.20 2.21 2.22 Přı́klad WFSA . . . . . . . . . . . . . . . . . . . . . . . . . . Přı́klad WFST . . . . . . . . . . . . . . . . . . . . . . . . . . Přı́klad sjednocenı́ (součtu) dvou WFSA . . . . . . . . . . . . Přı́klad zřetězenı́ (součinu) dvou WFSA . . . . . . . . . . . . Přı́klad uzavřenı́ WFSA . . . . . . . . . . . . . . . . . . . . . Přı́klad otočenı́ WFSA . . . . . . . . . . . . . . . . . . . . . . Přı́klad inverze WFST . . . . . . . . . . . . . . . . . . . . . . Přı́klad projekce WFST na WFSA . . . . . . . . . . . . . . . Přı́klad odstraněnı́ epsilon přechodů WFSA . . . . . . . . . . Přı́klad průniku dvou WFSA . . . . . . . . . . . . . . . . . . Přı́klad rozdı́lu dvou WFSA . . . . . . . . . . . . . . . . . . . Přı́klad konexe WFSA . . . . . . . . . . . . . . . . . . . . . . Přı́klad dvou ekvivalentnı́ch WFSA . . . . . . . . . . . . . . . Přı́klad hledánı́ nejpravděpodobnějšı́ch cest . . . . . . . . . . Přı́klad hledánı́ náhodných cest . . . . . . . . . . . . . . . . . Přı́klad prořezávánı́ WFSA . . . . . . . . . . . . . . . . . . . Přı́klad skládánı́ dvou WFST . . . . . . . . . . . . . . . . . . WFSA A1 před determinizacı́ a determinizovaný WFSA A2 . Přı́klad determinizace jednoduchého lexikonu . . . . . . . . . Přı́klad aplikace stlačenı́ na WFSA A2 . . . . . . . . . . . . . Přı́klad minimalizace WFSA A3 . . . . . . . . . . . . . . . . . Přı́klad minimalizace determinizovaného lexikonu z obr. 2.19 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 31 33 33 34 34 35 35 36 36 37 37 37 38 39 40 40 41 42 43 43 43 3.1 3.2 Bigramový model pro slova w1 a w2 . . . . . . . . . . . . . . . . . . . . . . 45 Trigramový model pro slova w1 a w2 . . . . . . . . . . . . . . . . . . . . . . 46 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . v 3.3 3.4 3.5 3.6 3.7 Slovo ”cı́l” reprezentováno modely a) monofónů b) trifónů c) Přı́klad FST kontextové závislosti pro trifóny . . . . . . . . Přı́klad FST kontextové závislosti pro difóny . . . . . . . . Přı́klad vytvořenı́ HMM WFST . . . . . . . . . . . . . . . . Uzavřený HMM WFST z obr. 3.6 . . . . . . . . . . . . . . . difónů . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1 5.2 Přı́klad fonetického rozhodovacı́ho stromu . . . . . . . . . . . . . . . . . . . 58 Přı́klad realizace rozp. sı́tě ano-ne souborem wdn . . . . . . . . . . . . . . . 60 6.1 6.2 Přı́klad čı́tacı́ho automatu . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 Přı́klad automatu reprezentujı́cı́ho jazykový model . . . . . . . . . . . . . . 66 7.1 Struktura modelů DCD knihovny . . . . . . . . . . . . . . . . . . . . . . . . 71 8.1 8.2 8.3 8.4 Přı́klad vytvořenı́ WFST slovnı́ku pomocı́ parametrů -l a -ls . . . . . . . . Přı́klad vytvořenı́ WFST slovnı́ku s alternativnı́mi výslovnostmi pomocı́ parametru -lL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Přı́klad vytvořenı́ HMM WFST pro shlukované stavy . . . . . . . . . . . . Přı́klad WFSA reprezentujı́cı́ pravděpodobnosti stavů promluvy . . . . . . 9.1 9.2 9.3 9.4 Schéma databáze pro ukládánı́ morfologických struktur slov . . . . . . . . . Přı́klad věty ”stál tam samotný vysoký sloup” U reprezentované pomocı́ FSA Přı́klad morfologického analyzátoru M realizovaného pomocı́ FST . . . . . FSA P = π2 (U ◦ M ), kde U je na obr. 9.2 a M na obr. 9.3 . . . . . . . . . . 10.1 Závislost úspěšnosti a koeficientů násobitele vah RN na době rozpoznávánı́ - 125 slov, databáze SPEECON . . . . . . . . . . . . . . . . . . . . . . . . 10.2 Závislost úspěšnosti a koeficientů pásového prořezávánı́ - kpp na době rozpoznávánı́ - 125 slov, databáze SPEECON . . . . . . . . . . . . . . . . 10.3 Uzavřený test, monofóny, 46 hustotnı́ch funkcı́, N = 663 slov . . . . . . . 10.4 Uzavřený test jazykového modelu založeného na slabikách, monofóny, 46 hustotnı́ch funkcı́, N = 689 slabik . . . . . . . . . . . . . . . . . . . . . . . 10.5 Uzavřený test, difóny, 46 hustotnı́ch funkcı́, N = 663 slov . . . . . . . . . 10.6 Uzavřený test, difóny, bigramový model založený na morfologických kódech, srovnánı́ pro 16, 23 a 46 hustotnı́ch funkcı́, N = 663 slov . . . . . . . . . . 10.7 Uzavřený test, trifóny, 46 hustotnı́ch funkcı́, N = 663 slov . . . . . . . . . 10.8 Uzavřený test, trifóny, bigramový model založený na morfologických kódech, srovnánı́ pro 16, 23 a 46 hustotnı́ch funkcı́, N = 663 slov . . . . . . . . . . 47 47 48 48 49 . 77 . 77 . 79 . 80 87 90 90 91 . 97 . 98 . 100 . 101 . 102 . 102 . 103 . 104 vi Seznam tabulek 2.1 Výběr binárnı́ch a unárnı́ch operacı́ mezi jednotlivými FSM . . . . . . . . . 32 3.1 Složitost n-gramového modelu dle n a počtu slov k . . . . . . . . . . . . . . 46 9.1 9.16 9.17 9.18 9.19 9.20 9.21 9.22 9.23 Struktura morfologické značky v UCNK korpusu . . . . . . . . . . . . . . Kódy pádů . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Kódy slovnı́ch druhů . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Kódy pro čı́slo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Kódy pro osobu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Kódy pro rod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Kódy pro slovesný rod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ostatnı́ druhy slov . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Kódovánı́ morfologických značek programem sharprct dle symbolů popsaných v kapitole 9.1.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.24 Ukázka závislosti složitosti automatů M ,P , G a HLG na počtu použitých slov pro n = 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.1 10.2 10.3 10.4 Optimálnı́ velikost násobitele vah RN pro jednotlivé dekodéry dle testů . Výsledky testů jednotlivých dekodérů . . . . . . . . . . . . . . . . . . . . Uzavřený test, monofóny, 46 hustotnı́ch funkcı́, N = 663 slov . . . . . . . Uzavřený test jazykového modelu založeného na slabikách, monofóny, 46 hustotnı́ch funkcı́, N = 689 slabik . . . . . . . . . . . . . . . . . . . . . . . 10.5 Uzavřený test, difóny, 46 hustotnı́ch funkcı́, N = 663 slov . . . . . . . . . 10.6 Uzavřený test, trifóny, 46 hustotnı́ch funkcı́, N = 663 slov . . . . . . . . . . . . . . . . . 81 90 90 90 90 90 90 90 . 91 . 92 . 97 . 98 . 100 . 101 . 103 . 103 vii Seznam použitých zkratek a symbolů ASR AT&T ATT BSD CMU GPL FSA FSM FST HMM HTK ISIP JM LVCSR MIT RN SGE UCNK WFSA WFST termı́n pro oblast rozpoznávánı́ mluvené řeči (angl. Automatic Speech Recognition) americká telekomunikačnı́ společnost (angl. American Telephone and Telegraph) nástroje vyvinuté společnostı́ AT&T Berkeley Software Distribution Carnegie Mellon University Všeobecná veřejná licence (z angl. General Public License) automat s konečným počtem stavů (z angl. Finite-State Acceptor) automat s konečným počtem stavů - obecný pojem (z angl. Finite-State Machine) překladový automat s konečným počtem stavů (z angl. Finite-State Transducer) skrytý Markovovúv model (z angl. Hidden Markov Model) sada nástrojů pro práci s HMM (z angl. Hidden Markov Model Toolkit) Institute for Signal and Information Processing jazykový model termı́n pro rozpoznávánı́ řeči s velkým slovnı́kem (angl. LargeVocabulary Continuous Speech Recognition) Massachusetts Institute of Technology rozpoznávacı́ sı́t’ (z angl. Recognition Network) (z angl. Sun Grid Engine) otevřený software firmy Sun Microsystem umožňujı́cı́ spouštět vzdáleně fronty dávek Ústav českého národnı́ho korpusu ohodnocený automat (z angl. Weighted Finite-State Acceptor) ohodnocený překladový automat (z angl. Weighted Finite-State Transducer) viii Poděkovánı́ Rád bych uvedl nejen seznam grantů a výzkumných záměrů podı́lejı́cı́ch se nějakým způsobem na financovánı́ této disertace a tı́m i mého doktorandského života, ale i jména lidı́ kteřı́ s touto pracı́ jakkoliv pomáhali. Celá práce byla vytvářena při podpoře grantů GAČR 102/03/H085 Modelovánı́ biologických a řečových signálů, GAČR 102/05/0278 Nové směry ve výzkumu a využitı́ hlasových technologiı́, AV ČR 1ET201210402 Hlasové technologie v informačnı́ch systémech a výzkumným záměrem MSM 6840770014 Výzkum perspektivnı́ch informačnı́ch a komunikačnı́ch technologiı́. Rád bych poděkoval Ing. Václavu Hanžlovi, CSc. jako školiteli za velmi dobré vedenı́ během mého studia a za mnoho pro mně nových poznatků. Poděkovánı́ patřı́ také Doc. Ing. Petru Pollákovi, CSc. zejména za umožněnı́ zúčasnit se projektů nahrávánı́ řečových databázı́ SPEECON a TEMIC2, Prof. Ing. Janu Uhlı́řovi CSc., Prof. Ing. Pavlu Sovkovi CSc. a Doc. Ing. Romanu Čmejlovi, CSc. za umožněnı́ mé účasti ve většině zde uváděných grantů a výzkumném záměru. Nemohu opomenout poděkovat všem lidem a organizacı́m nějakým způsobem věnujı́cı́m se problematice rozpoznávánı́ mluvené řeči, zejména těm kteřı́ do oblasti přispı́vajı́ v rámci projektů pod tzv. “svobodnými” licencemi. V neposlednı́ řadě poděkovánı́ patřı́ mé rodině, která byla založena během vzniku této práce a to hlavně za velkou trpělivost, kterou se mnou manželka měla. Dále bych rád poděkoval Antonu Skorochodovi za významné přispěnı́ do kódu ohledně komunikace s UCNK serverem, Hynku Bořilovi, Petru Zlatnı́kovi, Josefu Rajnohovi a dalšı́m, kteřı́ jakkoliv k mé práci přispěli a jejichž jména jsem nechtěně opomenul. ix Část I Teoretická část 1 Úvod Možnost komunikace mluvenou řečı́ se strojem je velkým přánı́m snad všech lidı́, kteřı́ s nějakým zařı́zenı́m přišli do styku. Řeč je nejrozšı́řenějšı́m prostředkem komunikace mezi lidmi. Dodnes však nenı́ možná bezproblémová plynulá komunikace člověk-stroj na takové úrovni, aby stroj byl schopen napsat vnı́mané spontánnı́ věty člověka, či dokonce těmto typům vět porozumět a vykonat splnitelné přánı́ řečnı́ka. Škála uplatněnı́ automatického rozpoznávánı́ řeči - ASR (z angl. Automatic Speech Recognition), resp. rozpoznávánı́ řeči s velkým slovnı́kem LVCSR (z angl. Large Voclabulary Continuous Speech Recognition), je skutečně velmi široká, počı́naje různými databázovými systémy schopnými vnı́mat několik základnı́ch hlasových povelů, přes různé diktovacı́ systémy (např. automatická výroba titulků pro handicapované, či studenty cizı́ch jazyků), konče překládacı́mi systémy z jednoho jazyka do jiného (z angl. Speech to Speech). Historie rozpoznávačů řeči sahá až k počátku sedmdesátých let 19. stoletı́. Tehdy Alexandr Bell přišel s myšlenkou stroje, který by pomáhal sluchově postiženým lidem. Belovy laboratoře však zaznamenaly prvnı́ většı́ úspěch na poli řeči až v roce 1936, kdy pracovnı́ci laboratoře vyvinuli řečový syntezátor. Tak se zrodil ”robotický” hlas, který měl úspěch v nepřı́liš kvalitnı́ch nı́zko-rozpočtových filmech. Prvnı́ pokusy s rozpoznávánı́m se prováděly v 50. letech, kdy se různı́ vědci pokoušeli popsat základnı́ myšlenky akustické fonetiky. V roce 1952 v Bellových laboratořı́ch byl postaven systém pro rozpoznávánı́ izolovaných čı́slovek pro jednoho mluvčı́ho. Systém pracoval na bázi měřenı́ doby spektrálnı́ch rezonancı́ samohlásek každé čı́slovky. V roce 1959 na univerzitě College ve Velké Británii byly pokusy postavit fonémový rozpoznávač pro rozpoznávánı́ 4 samohlásek a 9 souhlásek. Srovnávali přitom spektrálnı́ čáry s danými modely. Mnohem rychlejšı́ vývoj rozpoznávačů nastal dı́ky platnosti Mooreova zákona o vývoji výkonu počı́tačů až v 70. letech 20. stoletı́. Významným milnı́kem v rozpoznávánı́ řeči pak byla 80. léta, kdy se systémy pro ASR začaly realizovat pomocı́ statistických metod na bázi skrytých Markovových modelů HMMs (z angl. Hidden Markov Models) [Rab93]. Přestože metoda rozpoznávánı́ pomocı́ HMM byla v několika laboratořı́ch použı́vána (výrazně IBM a Dragon Systems), do poloviny 80. let nebyla žádná publikace o rozpoznávánı́ pomocı́ HMM rozšı́řena [Rab93]. V roce 1989 vznikla na univerzitě v Cambridge prvnı́ verze HTK (z angl. Hidden Markov Model Toolkit) [You02]. Jedná se o kolekci knihoven a modulů v jazyce C, které umožňujı́ stavbu rozpoznávače na bázi HMM. V polovině 90. let aplikoval Mohrův tým v AT&T laboratořı́ch ohodnocené překladové automaty - WFST (z angl. Weighted Finite-State Transducers) v rozpoznávánı́ řeči [Moh97a]. K dispozici jsou dnes tzv. ATT nástroje pro operace se stavovými automaty 2 - tzn. FSM knihovna [Moha], nástroje pro jazykové modelovánı́ pomocı́ konečných automatů - GRM knihovna [Allb] a nástroje pro dekódovánı́, resp. rozpoznávánı́ - DCD knihovna [Mohb]. Přehled současného stavu dané vědnı́ problematiky Ve většině laboratořı́ rozpoznávánı́ řeči jsou stejně jako na Katedře teorie obvodů s oblibou použı́vány nástroje pro práci s HMM - HTK. Ty umožňujı́ natrénovat skryté Markovovy modely na základě olabelovaných řečových databázı́, vytvořit n-gramový jazykový model pomocı́ předem připravených rozsáhlých textů a provést dekódovánı́, resp. rozpoznávánı́ vstupnı́ promluvy daným jazykovým modelem na základě slovnı́ku reprezentovaného textovým souborem (převod slov na posloupnost akustických jednotek) a HMM. Vyčerpávajı́cı́ popis v [You02] spolu s dostupnými zdrojovými kódy umožňuje bezproblémové studium mechanismu rozpoznávánı́ mluvené řeči. Velkou nevýhodou je zde nejen absence optimalizace rozpoznávacı́ sı́tě - RN (z angl. Recognition Network), ale i kopmlikované zadánı́ sı́tě na úrovni akustických modelů. Velký problém představuje rovněž n-gramové modelovánı́ pro český jazyk. Čeština, stejně jako ostatnı́ slovanské jazyky s výjimkou Bulharštiny, je velmi ohebný jazyk s mnoha tvary slov odvozených od základnı́ho tvaru slova lemma. S počtem slov tak narůstá i složitost n-gramového modelu (s n-tou mocninou) a problém nedostatku trénovacı́ch dat způsobujı́cı́ nekvalitnı́ odhad jazykového modelu. Použı́vaným řešenı́m je rozdělenı́ slov na morfémy a následné natrénovánı́ n-gramu na bázi morfémů. Nevýhodou je však výrazné snı́ženı́ prediktivnı́ schopnosti jazykového modelu. Téměř vyčerpávajı́cı́ přehled současné problematiky rozpoznávánı́ řeči je v [Psu06]. Cı́le disertace Na základě předchozı́ho textu lze cı́le disertace shrnout do následujı́cı́ch bodů: 1. vytvořit algoritmus, který sestrojı́ na základě základnı́ch znalostı́ i velmi složité překladové stavové automaty reprezentujı́cı́ jednotlivé části rozpoznávacı́ sı́tě, 2. otestovat ATT nástroje pro český jazyk, 3. vytvořit algoritmus pro možnou konverzi modelů mezi HTK a ATT nástroji, 4. vytvořit vlastnı́ dekodér umožňujı́cı́ ze zadané optimalizované rozpoznávacı́ sı́tě v ATT formátu a akustických modelů v HTK formátu rozpoznat vstupnı́ promluvu, 5. nalézt vhodný zdroj a způsob zpracovánı́ dat pro vytvořenı́ českého jazykového modelu, 3 6. navrhnout jazykový model pro český jazyk, který by kombinoval výhody spočı́vajı́cı́ v možnostech nástrojů pro zpracovánı́ stavových automatů a možnosti použitı́ morfologicky označkovaného korpusu. 4 Kapitola 1 Statistické metody rozpoznávánı́ mluvené řeči 1.1 Úvod Po prvnı́ch významnějšı́ch úspěšı́ch s rozpoznávánı́m v padesátých letech se předpokládalo, že během několika let bude možné zkonstruovat zařı́zenı́, které automaticky a bez obtı́žı́ bude schopno převést promluvu na psaný text. Uved’me stěžejnı́ důvody proč je strojově tak problematické rozpoznat vstupnı́ promluvu: • nestejnost promluv jako je odlišná barva hlasu, tempo, nebo koartikulace, • absolutně jiný fyzikálnı́ popis hlasu při šepotu, normálnı́ promluvě, nebo křiku, • nestejnost signálu promluvy při různých akustických pozadı́ch, resp. při zpracovánı́ signálu různými analogovými cestami. Vývoj v této oblasti přinesl dva základnı́ přı́stupy. Prvnı́ je tzv. porovnávánı́ obrazů (z angl. template matching). Ten je použit pouze v přı́padě rozpoznávánı́ izolovaných slov a hlavnı́ princip spočı́vá ve srovnávánı́ parametrů rozpoznávaného slova s množinou vzorů. Problém změny tempa řeči (variabilita délek jednotlivých souhlásek) je vyřešen pomocı́ nelineárnı́, tzv. bortivé časové osy. Dnes se již tento způsob nepoužı́vá často. Podrobně je metoda porovnávánı́ obrazů popsána např. v [Psu95]. Druhým a dnes již běžným přı́stupem je rozpoznávánı́ řeči na bázi statistického modelovánı́ [Psu06]. Základem jsou zde již zmiňované Markovovy modely reprezentujı́cı́ bud’ jednotlivé slova (přı́pad rozpoznávánı́ izolovaných slov), nebo mnohem častěji různé podúrovně slov (přı́pad rozpoznávánı́ souvislé řeči) – v této práci kontextově nezávislé, nebo kontextově závislé fonémy. Výhoda v reprezentaci HMM jako fonémů spočı́vá v konstantnı́m počtu natrénovaných modelů, tj. pro 45 českých fonémů, a okamžité dostupnosti všech modelů. Nevýhodou je pak nižšı́ výsledné skóre oproti Markovovým mod- 5 elům reprezentujı́cı́m přı́mo slova - důvodem je pravděpodobně většı́ obsáhlost informace v HMM natrénovaném pro konkrétnı́ slovo, než v modelu slova vytvořeném z pospojovaných HMM fonémů. 1.2 Základnı́ schéma Rozpoznávánı́ je zde formulováno jako problém dekódovánı́ s maximálnı́ aposteriornı́ pravděpodobnostı́. Předpokládejme, že W = {w1 , w2 , . . . , wN } = w1N je posloupnost N slov a necht’ O = {o1 , o2 , . . . , oT } je akustickou informacı́ (posloupnostı́ výstupnı́ch značek) odvozenou ze signálu promluvy. Úloha je nalézt posloupnost slov Ŵ tak, aby pravděpodobnost posloupnosti slov pro danou akustickou informaci O P (W |O) byla maximalizována. Podle Bayesova pravidla platı́ P (Ŵ |O) = max P (W |O) = max W W P (W )P (O|W ) , P (O) (1.1) kde P (W |O) je pravděpodobnost, že při vyslovenı́ posloupnosti slov W bude generována posloupnost výstupnı́ch značek O a P (W ) je aposteriornı́ pravděpodobnost posloupnosti slov W (tj. pravděpodobnost, že si řečnı́k přeje vyslovit právě tuto posloupnost slov). Jelikož hledáme posloupnost slov Ŵ pro maximálnı́ P (W |O), P (O) je v tomto přı́padě konstanta a může být ignorována [Psu95]. Hledánı́ maxima pravděpodobnosti P (W |O) je tak ekvivalentnı́ hledánı́ maxima sdružené pravděpodobnosti P (W, O) P (Ŵ , O) = max P (W, O) = max P (W )P (O|W ) . W W (1.2) Úloha rozpoznávánı́ tak může být rozdělena do několika úrovnı́[Rab93, Moh96]: 1. akustické zpracovánı́ řečového signálu - parametrizace 2. vytvořenı́ akustických modelů a sı́tě mapujı́cı́ tyto modely na slova - reprezentace P (O|W ) 3. vytvořenı́ jazykového modelu - reprezentace aposteriornı́ pravděpodobnosti P (W ) 4. nalezenı́ nejpravděpodobnějšı́ posloupnosti slov Ŵ aplikacı́ účinného algoritmu Tyto kroky jsou schématicky znázorněny na obr. 1.1. 1.3 Parametrizace dat V aplikacı́ch rozpoznávánı́ řeči bylo publikováno mnoho parametrizacı́ [Psu06, Rab93, You02]. Jakýmsi ”standardem” se nejen na Katedře teorie obvodů stala parametrizace signálu do tzv. Melovských kepstrálnı́ch koeficientů a energie. Konkrétně bude v práci použito 12 Melovských kepstrálnı́ch koeficientů a energie, jejich delta a akceleračnı́ koeficienty. Celkem tedy budeme pracovat s 39-ti rozměrným normálnı́m rozdělenı́m. 6 Obrázek 1.1: Princip rozpoznávánı́ řeči založený na statistickém přı́stupu 1.3.1 Mel kepstrálnı́ koeficienty (MFCC) Parametrizace MFCC patřı́ v oblasti rozpoznávánı́ řeči mezi nejvı́ce použı́vané [Psu06]. Je navržena tak, aby respektovala nelineárnı́ vlastnosti vnı́mánı́ zvuků lidským uchem. Kompenzace nelineárnı́ho vnı́mánı́ frekvencı́ je vyřešena pomocı́ lineárně rozložených bank trojúhelnı́kových filtrů v Melovské frekvenčnı́ škále definované jako f . (1.3) fm = 2595 · log10 1 + 700 Řečový signál s(k) jež je přiveden na vstup je po preemfázi segmentován na okna délky 10-32 ms s překryvem typicky 10 ms. Na segmenty je dále aplikováno Hammingovo okénko a pomocı́ Fourierovy transformace spočteno amplitudové spektrum S(f ). Následuje Melovská filtrace ve spektru bankou výše zmı́něných trojúhelnı́kových filtrů (obr. 1.2). Pro střednı́ frekvence Melovských filtrů bm,i platı́ Obrázek 1.2: Melovská banka trojúhelnı́kových filtrů bm,i = bm,i−1 + ∆m , (1.4) kde pásmo rozloženı́ filtrů ∆m dostaneme ∆m = Bmw , M∗ + 1 (1.5) 7 kde bm,0 = 0 mel a i = 1, 2, . . . , M ∗ . Po vynásobenı́ spektra Melovskou bankou filtrů jsou spektrálnı́ čáry v jednotlivých pásmech bank sečteny. Tı́mto způsobem jsme obdrželi M ∗ mel-spektrálnı́ch koeficientů ym (i) [You02]. Aplikacı́ následujı́cı́ diskrétnı́ kosinové transformace (DCT) obdržı́me Melovské kepstrálnı́ koeficienty cm (j). ∗ cm (j) = M X log ym (i) cos i=1 πj (i − 0, 5) , M∗ pro j = 0, 1, . . . , M, (1.6) kde M ∗ je počet pásem Melovské banky filtrů a M je počet požadovaných Melovských kepstrálnı́ch koeficientů. Počet těchto koeficientů je možné volit podstatně menšı́, než je počet pásem Melovské banky filtrů (v praxi stačı́ uvažovat prvnı́ch M = 10−−13) [Psu06]. 1.3.2 Výpočet krátkodobé energie Nultý koeficient cm (0) je úměrný logaritmu energie signálu. Bývá však často nahrazován logaritmem krátkodobé energie elog přı́mo ze segmentů vstupnı́ho signálu s(k). elog = log N −1 X [s(k)w(N − 1 − k)]2 , (1.7) k=0 kde N je počet vzorků pro daný řečový segment a w(k) je funkce Hammingova okna. 1.3.3 Dynamické koeficienty Dynamické koeficienty označované jako delta ∆cm a delta-delta ∆2 cm (nazývané i jako akceleračnı́) vyjadřujı́ časové změny vektorů přı́znaků. Pro každý analyzovaný mikrosegment n se určujı́ lineárnı́ regresı́ z 2L1 + 1 (resp. 2L2 + 1) po sobě jdoucı́ch mikrosegmentů řečového signálu L1 P κ [cm (j)]n+κ [∆cm (j)]n = −L1 L1 P , (1.8) κ2 −L1 L2 P 2 ∆ cm (j) n = −L2 κ [∆cm (j)]n+κ L2 P , (1.9) κ2 −L2 s typickou hodnotou L1 = L2 = 1. Pro každý analyzovaný mikrosegment v přı́padě použitı́ 12 Melovských kepstrálnı́ch koeficientů a krátkodobé energie dostáváme celkem 39 koeficientů reprezentujı́cı́ch jednotlivé vektory přı́znaků o = [ce, ∆ce, ∆2 ce]T , (1.10) 8 kde ce = [cm , elog ] představuje vektor zahrnujı́cı́ Melovské kepstrálnı́ koeficienty společně s energiı́. 1.4 1.4.1 Akustické modelovánı́ HMM Markovovův model, též Markovovův řetězec označuje stochastický proces, který má Markovovskou vlastnost. Ta řı́ká, že v každém stavu procesu je pravděpodobnost navštı́venı́ dalšı́ch stavů nezávislá na dřı́ve navštı́vených stavech. To znamená, že chovánı́ v Markovových řetězcı́ch je bezpamět’ové: V každém konkrétnı́m stavu je možno zapomenout historii (posloupnost stavů předcházejı́cı́ stavu současnému)[Kor02].1 Skrytý Markovovův model - HMM je statistický model, ve kterém je systém modelován na základě Markovového procesu s nepozorovanou posloupnostı́ stavů. HMM v diskrétnı́ch časových okamžicı́ch generuje náhodnou posloupnost vektorů pozorovánı́ (přı́znaků) O = {o1 , o2 , . . . , oT }. HMM užı́vaný v aplikacı́ch rozpoznávánı́ mluvené řeči se skládá ze dvou částı́ - ze stavového automatu s konečným počtem stavů (reprezentováno maticı́ přechodů A - (1.11)) a z konečného počtu výstupnı́ch distribučnı́ch funkcı́ reprezentujı́cı́ch spektrálnı́ charakter krátkých úseků řečového signálu. Přı́klad HMM často použı́vaného pro rozpoznávánı́ elementárnı́ch úseků řeči (fonémů) je zobrazen na obr. 1.3. 0.85 1 0.93 2 0.07 b1( ot ) 0 0 A = 0 0 0 0.93 0.85 0 0 0 0.07 0.06 0.83 0 0 0.83 0.06 3 0.92 0.12 0.09 b2( ot ) 0 0 a1,1 0.09 0 a2,1 0.12 0.05 = a3,1 0.92 0.08 a4,1 0 0 a5,1 4 0.08 5 0.05 b3( ot ) a1,2 a2,2 a3,2 a4,2 a5,2 a1,3 a2,3 a3,3 a4,3 a5,3 a1,4 a2,4 a3,4 a4,4 a5,4 a1,5 a2,5 a3,5 a4,5 a5,5 (1.11) Obrázek 1.3: Přı́klad levo-pravého HMM včetně matice přechodů 1 Markovovy řetězce dostaly jméno po matematiku Andreji Markovovi. 9 Podmı́něné pravděpodobnosti přechodů ai,j určujı́, s jakou pravděpodobnostı́ přecházı́ model ze stavu si v čase t do stavu sj v čase t + 1 ai,j = P (s(t + 1) = sj |s(t) = si ) , (1.12) kde s(t) je stav HMM v čase t. Stochastičnost je v modelu zavedena splněnı́m N X ai,j = 1 (1.13) j=1 pro všechny stavy si , i = 1, 2, . . . , N . Pokud je dolnı́ trojúhelnı́ková část matice přechodů nulová, HMM model nazýváme levo-pravý - viz (1.11), obr. 1.3. 1.4.2 Emitujı́cı́ stavy HMM Funkce rozdělenı́ výstupnı́ pravděpodobnostı́ bj (ot ) popisujı́ spojité rozdělenı́ pravděpodobnosti vektoru přı́znaků ot generovaného ve stavu sj v čase t bj (ot ) = P (ot |s(t) = sj ) , (1.14) kde P značı́ hustotu pravděpodobnosti [Rog98] 2 . Stochastičnost je v modelu zavedena splněnı́m Z bj (ot )do = 1 (1.15) o pro všechny emitujı́cı́ stavy si , i = 1, 2, . . . , N . Jedná se o spojité rozdělenı́ se směsı́ normálnı́ch hustotnı́ch funkcı́ (z angl. Continuous Gaussian Mixture Densities) [Psu06]. Je obecně navrženo pro vı́ce datových proudů (z angl. streams). Výsledná hustota je dána váženým průměrem jednotlivých normálnı́ch hustotnı́ch funkcı́. Obecný výpočet bj (ot ) pro stav j, S datových proudů a Ms směsı́ pro s-tý datový proud je dán "M #γjs S s Y X bj (ot ) = cjsm N (ost ; µjsm , Σjsm ) , (1.16) s=1 m=1 kde ost = [o1 o2 ... on ]T je vstupnı́ vektor přı́znaků, µjsm = [µ1 µ2 ... µn ]T je vektor střednı́ch hodnot n-rozměrného normálnı́ho rozdělenı́, Σjsm je kovariančnı́ matice n-rozměrného normálnı́ho rozdělenı́ a cjsm , resp. γjs jsou váhy pro m-tou hustotnı́ směs, resp. pro s-tý datový proud. Definičnı́ vztah pro výpočet hustotnı́ funkce normálnı́ho rozdělenı́ je 1 1 T −1 · exp − (ost − µjsm ) Σjsm (ost − µjsm ) . N (ost ; µjsm , Σjsm ) = p 2 (2π)ns |Σjsm | (1.17) 2 Je vhodné poznamenat, že pro účely rozpoznávánı́ mluvené řeči se dřı́ve použı́valo rozdělenı́ diskrétnı́ kvůli nižšı́ komplexnosti. 10 Vzhledem k vysoké nekorelovanosti prvků vektorů přı́znaků je možné kovariančnı́ matici Σjsm považovat za diagonálnı́ a nahradit jı́ vektorem rozptylů r = [r1 r2 ... rn ]T , který představuje diagonálu této matice. Výpočet (1.16) pak přecházı́ na bj (ot ) = "M S s X Y s=1 #γjs cjsm N (ost ; µjsm , rjsm ) , (1.18) m=1 kde N (ost ; µjsm , rjsm ) = p (2π)ns n 1 Qns k=1 rjsmk s (osk − µjsmk )2 1X · exp − 2 rjsmk ! . (1.19) k=1 V praxi se však spı́še pracuje s logaritmickými pravděpodobnostmi, a to kvůli možné ztrátě přesnosti při násobenı́ čı́sel menšı́ch jedné. Pro základnı́ matematické operace dostáváme log(P1 P2 ) = log(P1 ) + log(P 2) . (1.20) log(P1 + P2 ) = log(P1 ) + log 1 + PP12 V praxi pro součet pravděpodobnostı́ je vhodné volit P1 ≥ P2 , potom je možné log(1 + P2 /P1 ) aproximovat jako log(P1 /P2 ). Pro logaritmické pravděpodobnosti a,b se původnı́ operace součtu měnı́ na ladd(a, b) = ln(ea + eb ) = max(a, b) + f (|a − b|) , (1.21) kde f (x) = ln(1 + e−x ) (1.22) Zaved’me operátor součtu N logaritmických pravděpodobnostı́ N G ai = ln i=1 N X eai . (1.23) i=1 Aplikacı́ (1.20) na (1.18) a (1.19) dostaneme efektivnı́ způsob výpočtu logaritmu bj (ot ) ln bj (ot ) = S X s=1 γs M G m=1 ln cjsm + ln p (2π)ns 1 Qn s k=1 rjsmk ns X (osk − µjsmk )2 − k=1 1 ! , 2 rjsmk (1.24) kde je možné pro urychlenı́ výpočtu dopředu spočı́tat hodnotu Gjsm 1 ln Gjsm = ln cjsm + ln p . Qns n s (2π) k=1 rjsmk (1.25) 11 1.5 Jazykové modelovánı́ Úlohou jazykového modelu je poskytovat co nejpřesnějšı́ odhad aposteriornı́ pravděpodobnosti P (W ) pro libovolnou posloupnost slov W . Ne vždy je však pro libovolnou posloupnost slov W nenulový odhad aposteriornı́ pravděpodobnosti P (W ). Tomuto omezenı́ se řı́ká deterministické [Psu06]. Modelu jazyka, který nemá deterministické omezenı́ a určuje aposteriornı́ pravděpodobnosti ke všem posloupnostem slov, budeme řı́kat stochastický jazykový model. Jazykový model by také měl být schopen udávat odhady aposteriornı́ch pravděpodobnostı́ nedokončených posloupnostı́ slov W během vlastnı́ho rozpoznávánı́ v reálném čase bez nutnosti čekat na ukončenı́ promluvy. Je potřeba uvést, že některé výklady v následujı́cı́ch kapitolách jsou převzaty z [Psu06, Kat87, Ney95] a dalšı́ch zdrojů. Přı́slušný zdroj je vždy citován. Autor kvůli sjednocenı́ těchto zdrojů zavedl nepatrně odlišná značenı́. 1.5.1 Stochastický jazykový model Jazykový model vyjadřuje pravděpodobnost posloupnosti slov W = {w1 , w2 , . . . , wN }, nadále značené též jako W = w1N . Pro přirozené jazyky je nutné ocenit pravděpodobnost každého slova na základě levého kontextu (minulé historie) ve větě. Platı́ P (W ) = P (w1 )P (w2 |w1 )P (w3 |w12 ) . . . P (wN |w1N −1 ) N Q P (wk |w1k−1 ) = . (1.26) k=1 V praxi je velmi těžké obdržet jednotlivé pravděpodobnosti P (wN |w1N −1 ). Pro slovnı́k ℵ o rozměru |ℵ| a k-té slovo ve větě existuje |ℵ|k−1 různých historiı́ [Psu95]. Celkem je tak nutné pro všechna slova napočı́tat |ℵ|k různých pravděpodobnostı́. Kromě problémů s nedostatkem paměti bychom se setkali i s problémy absence většiny posloupnostı́ slov w1N v trénovacı́ch textech přirozeného jazyka. V [Jel85a] je tento problém vyřešen rozdělenı́m všech možných historiı́ {w1k−1 } do menšı́ch souborů tak, že všechny historie končı́cı́ na k−1 } jsou označeny za ekvivalentnı́, tj. stejná dvě slova {wk−2 k−1 P (wk |w1k−1 ) ∼ ) = P (wk |wk−2 (1.27) a tedy P (W ) ∼ = N Y k−1 P (wk |wk−2 ) k=1 1.5.2 = P (w1 )P (w2 |w1 ) N Y k−1 P (wk |wk−2 ) . (1.28) k=3 n-gramový jazykový model Model jazyka (1.28) založený na pravděpodobnostech výskytu trojic po sobě jdoucı́ch slov - trigramů se nazývá trigramový model. Obdobně pro n-tice slov lze vytvořit n-gramové 12 modely, pro které platı́ P (W ) ∼ = N Y k−1 P (wk |wk−n+1 ) . (1.29) k=1 Pro zı́skánı́ jednotlivých pravděpodobnostı́ n-gramů se použı́vá rozsáhlý trénovacı́ text, který by navı́c měl být zaměřen na stejnou problémovou oblast, jako bude zpracovávat výsledný rozpoznávač. Odhad jednotlivých pravděpodobnostı́ n-gramů je založen na zjišt’ovánı́ relativnı́ četnosti výskytů slov, resp. jejich posloupnostı́ k−1 P (wk |wk−n+1 )= k c(wk−n+1 ) k−1 c(wk−n+1 ) . (1.30) k Potřebujeme tak zı́skat četnosti všech n-gramů c(wk−n+1 ) (tj. počet, kolikrát se k v trénovacı́m textu objevila posloupnost slov wk−n+1 ). Napřı́klad pro slovnı́k o velikosti 10000 slov a trigramový model tak potřebujeme zı́skat 1012 četnostı́. V praxi je nemožné zı́skat text, kde by se všechny n-gramy vyskytovaly, a proto je velmi pravděpodobné, že při odvozenı́ parametrů n-gramového modelu pouze z relativnı́ch četnostı́ n-gramů by některé n-gramy vyskytujı́cı́ se v testovacı́m textu byly oceněné nulovou pravděpodobnostı́, protože se v trénovacı́m textu nevyskytujı́. Tento problém se nazývá problémem nedostatečných dat. Z důvodů zavedenı́ jednoznačnosti bude v následujı́cı́ch podkapitolách použit termı́n m-gram a symbol nr bude označovat celkový počet výskytů všech navzájem různých k , které se objevily v trénovacı́m korpusu přesně r-krát. Dále posloupnostı́ slov wk−m+1 budou popsány předevšı́m ty metody odhadů, které umožňuje použı́t AT&T GRM knihovna pro jazykové modelovánı́ [Alla], tedy Katzův model (výhradně použı́ván ve všech experimentech této práce) a model s absolutnı́m diskontem. Zavedenı́ značenı́ Uved’me seznam nejčastějšı́ch symbolů použı́vaných v této kapitole: k−1 k wk−m+1 m-gram, tj. slovo wk s historiı́ wk−m+1 , k−1 k wk−m+1 historie m-gramu wk−m+1 , k k c(wk−m+1 ) počet výskytů m-gramů wk−m+1 v trénovacı́m korpusu, k−1 k−1 c(wk−m+1 ) počet výskytů historiı́ wk−m+1 , k−1 k−1 nr (wk−m+1 ) počet všech navzájem různých slov wk se stejnou historiı́ wk−m+1 , které se v trénovacı́m korpusu vyskytujı́ právě r-krát, k nr počet všech navzájem různých m-gramů wk−m+1 , které se v trénovacı́m korpusu vyskytujı́ právě r-krát, k N − m + 1 celkový počet všech m-gramů wk−m+1 v trénovacı́m korpusu, tj. rozdı́l počtu všech slov trénovacı́ho korpusu N a délky historie m-gramů 1−m. 13 Metoda maximálnı́ věrohodnosti Odvozenı́ výpočtu aposteriornı́ch pravděpodobnostı́ pro metodu maximálnı́ věrohodnosti - dále jen ML (z angl. Maximum Likelihood) spočı́vá v nalezenı́ vázaného extrému logaritmu pomocné věrohodnostnı́ funkce. Odvozenı́ je uvedeno např. v [Psu06]. Pro mak−1 ximálně věrohodný odhad P M L (wk |wk−m+1 ) podobně jako v (1.30) platı́ k−1 P M L (wk |wk−m+1 )= k c(wk−m+1 ) k−1 c(wk−m+1 ) , (1.31) k−1 k pro odhad sdružené pravděpodobnosti P M L (wk , wk−m+1 ), resp. P M L (wk−m+1 ) platı́ k−1 k P M L (wk , wk−m+1 ) = P M L (wk−m+1 )= k c(wk−m+1 ) , N −m+1 (1.32) kde N je celkový počet slov ve slovnı́ku a N − m + 1 celkový počet m-gramů s konstantnı́m m. Problém nedostatečných dat v tomto odhadu musı́ být nějak kompenzován. Možnostı́ je zvýšit nulové pravděpodobnosti na nějakou nenulovou hodnotu a následně snı́žit již vypočı́tané nenulové odhady aposteriornı́ch pravděpodobnostı́ kvůli zachovánı́ věty o úplné pravděpodobnosti. Tento proces se nazývá vyhlazovánı́ (z angl. smoothing). ML metoda tak bývá základnı́m stavebnı́m kamenem pro různé vyhlazovacı́ techniky. Goodův-Turingův odhad Goodův-Turingův - dále jen GT odhad pocházı́ z odhadů četnostı́ neznámých živočišných druhů. GT odhad řı́ká, že vyskytuje-li se daný jev v celém souboru o velikosti N r-krát, potom opravená absolutnı́ četnost tohoto jevu r∗ je dána r∗ = (r + 1)nr+1 , nr (1.33) kde nr je počet všech navzájem různých jevů (shodných m-gramů s konstantnı́m m) vyskyk tujı́cı́ch se právě r-krát. GT odhad pravděpodobnosti m-gramu wk−m+1 je dán k P GT (wk−m+1 )= r∗ . N −m+1 (1.34) Četnost všech vyskytujı́cı́ch se m-gramů v textu pro konstantnı́ m je též dána N −m+1= ∞ X rnr . (1.35) r=1 14 k Z (1.33), (1.34) a (1.35) pro všechny posloupnosti slov wk−m+1 dostaneme P k k wk−m+1 :c(wk−m+1 )>0 k P GT (wk−m+1 )= r∗ N −m+1 P k k wk−m+1 :c(wk−m+1 )>0 ∞ ∞ P P ∗ (r+1)nr+1 r = n = r N −m+1 N −m+1 r=1 r=1 ∞ ∞ P P 1 1 = N −m+1 rnr = N +m−1 rnr r=2 r=1 n1 =1 − N −m+1 . (1.36) . (1.37) − n1 Dle věty o úplné pravděpodobnosti platı́ P k k wk−m+1 :c(wk−m+1 )≥0 k P GT (wk−m+1 ) = P k k wk−m+1 :c(wk−m+1 )>0 P + k k wk−m+1 :c(wk−m+1 )=0 k P GT (wk−m+1 )+ k P GT (wk−m+1 )=1 Z (1.36) a (1.37) plyne, že GT odhad celkové pravděpodobnosti všech nepozorovaných jevů je založen na relativnı́ četnosti tzv. singletonů - jevů (m-gramů s konstantnı́m m) vyskytujı́cı́ch se v celém trénovacı́m textu právě jednou X k )= P GT (wk−m+1 k k wk−m+1 :c(wk−m+1 )=0 n1 . N −m+1 (1.38) Pro odhad podmı́něné pravděpodobnosti nepozorovaných jevů bychom analogickým postupem dostali X P GT k−1 (wk |wk−m+1 ) = k wk :c(wk−m+1 )=0 k−1 n1 (wk−m+1 ) k−1 c(wk−m+1 ) , (1.39) k−1 k−1 kde n1 (wk−m+1 ) je počet singletonů s historiı́ wk−m+1 . Ústupové schéma vyhlazovánı́ Ústupové schéma vyhlazovánı́ (z angl. backing-off - dále v přı́padě zkratek BO) spočı́vá při nedostatku trénovacı́ch dat v náhradě výpočtu pravděpodobnosti k−1 k−1 P (wk |wk−m+1 ) zobecněným rozdělenı́m β(wk |wk−m+2 ) k−1 β(wk |wk−m+2 ) = k c(wk−m+2 ) k−1 c(wk−m+2 ) , (1.40) k−1 kde wk−m+2 je tzv. zobecněná historie - historie zkrácená o poslednı́ slovo3 . Pravděpodobnosti pozorovaných m-gramů se odhadujı́ na základě jejich relativnı́ch četnostı́ 3 Tento způsob modifikace historie nemusı́ být pravidlem, bývá však použı́ván velmi často 15 k−1 k c(wk−m+1 )/c(wk−m+1 ) snı́žených diskontnı́m součinitelem 0 ≤ dc(wk . Odhady pravk−m+1 )≤1 děpodobnostı́ nepozorovaných m-gramů pak lze zı́skat vynásobenı́m pravděpodobnosti k−1 k−1 zobecněného rozdělenı́ β(wk |wk−m+2 ) tzv. ústupovou váhou B(wk−m+1 ). Ústupové schéma lze vyjádřit následovně k c(wk−m+1 ) d k k−1 c(w ) k−1 BO k c(w k−m+1 k−m+1 ) P (wk−m+1 |wk−m+1 ) = B(wk−1 )β(w |wk−1 k−m+1 k pro c(wk−m+1 )>0 , k k−m+2 ) pro c(wk−m+1 ) = 0 k (1.41) kde P 1− k wk :c(wk−m+1 )>0 k−1 B(wk−m+1 )= k c(wk−m+1 ) k−1 ) ) k−m+1 c(w dc(wk P k wk :c(wk−m+1 )=0 k−m+1 , k−1 β(wk |wk−m+2 ) (1.42) kde čitatel představuje celkovou přerozdělenou relativnı́ četnost směrem k nepozorovaným jevům a jmenovatel pak normalizačnı́ člen zaručujı́cı́, že součet pravděpodobnostı́ všech jevů bude roven 1. Pro odhad zobecněného rozdělenı́ již nenı́ potřeba tolik trénovacı́ch dat a je možné použı́t rekurzivnı́ formuli k−1 k−1 k ) . |wk−m+2 ) = P BO (wk−m+1 β(wk |wk−m+2 (1.43) Z praktických důvodů se také použı́vá namı́sto diskontnı́ho součinitele diskontnı́ faktor λc(wk ) , který je definován jako k−m+1 λc(wk k−m+1 ) = 1 − dc(wk (1.44) k−m+1 ) Dosazenı́m (1.44) do (1.42) pak pro ústupovou váhu dostáváme P k−1 )= B(wk−m+1 k wk :c(wk−m+1 )>0 k c(wk−m+1 ) k−1 ) ) k−m+1 c(w λc(wk P k wk :c(wk−m+1 )=0 k−m+1 k−1 β(wk |wk−m+2 ) . (1.45) Lineárnı́ interpolačnı́ schéma vyhlazovánı́ Zde se narozdı́l od zorovaných v trénovacı́m k−1 k c(wk−m+1 )/c(wk−m+1 ) i vážený průměr, který lze ústupového schématu pro odhad pravděpodobnostı́ jevů pokorpusu použı́vá krom relativnı́ch četnostı́ původnı́ho m-gramu k−1 zobecněné rozdělenı́ β(wk |wk−m+2 ). Z obojı́ho se pak počı́tá zapsat jako 16 k c(wk−m+1 ) k−1 k−1 + 1 − d P LI (wk |wk−m+1 )=dc(wk k k−1 c(wk−m+1 ) β(wk |wk−m+2 ) k−m+1 ) c(wk−m+1 ) c(wk k−1 k−m+1 ) = 1 − λc(wk + λc(wk k−1 ) ) β(wk |wk−m+2 ) k−m+1 c(wk−m+1 ) . (1.46) k−m+1 Katzův diskontnı́ model V Katzově modelu [Kat87] jsou relativnı́ četnosti pozorovaných m-gramů nahrazeny Goodovým-Turingovým odhadem, tj. k c(wk−m+1 ) k−1 c(wk−m+1 ) = r ≈ k−1 c(wk−m+1 ) r∗ k−1 c(wk−m+1 ) . (1.47) Dále je omezena množina ”diskontovaných” m-gramů na takové, jejichž absolutnı́ četnost nenı́ většı́, než nějaká konstanta l > 0. Katzův diskontnı́ model je pak definován jako P KT k−1 ) (wk |wk−m+1 = k c(wk−m+1 ) k−1 c(wk−m+1 ) „ 1 − λc(wk k−m+1 k−1 β(wk |wk−m+2 ) k c(wk−m+1 ) ) c(wk−1 ) k−m+1 P 2 P k c(wk−m+1 )>l pro k 1 ≤ c(wk−m+1 )≤l pro k c(wk−m+1 )=0 3 k c(wk−m+1 ) 5 c(wk ) c(wk−1 ) k−m+1 k−m+1 4λ wk :c(wk )≤l k−m+1 wk :c(wk )=0 k−m+1 pro « k−1 β(wk |wk−m+2 ) (1.48) Dobré výsledky byly pozorovány pro l = 5, 6, 7. Úvahou, že diskont bude použit pro k , tj. l → ∞ a požadavkem, že GT odhad (1.39) všechny četnosti m-gramů r = c(wk−m+1 bude v souladu s Katzovým odhadem (1.48), tj. 1 − λr |l→∞ = dr |l→∞ = r∗ , r (1.49) je možné postupem uvedeným např. v [Psu06] určit diskontnı́ faktor λr (r + 1)nr+1 (l + 1)nl+1 −1 λr = 1 − 1− , 1≤r≤l . rnr n1 (1.50) Ze srovnánı́ (1.41) a (1.48) vyplývá, že Katzův model vyjádřený ve tvaru (1.48) je možné definovat zápisem (1.41) s tı́m, že pro diskontnı́ součinitel platı́ 1 pro r > l h ih i−1 dc(wk = d = (1.51) r k−m+1 ) (r+1)nr+1 − (l+1)nl+1 1 − (l+1)nl+1 pro 1 ≤ r ≤ k rnr n1 n1 Katzův model je použı́ván ve všech experimentech se statistickým jazykovým modelem této práce. 17 Model s absolutnı́m diskontem Základnı́ myšlenkou modelu s absolutnı́m diskontem - dále jen AD [Ney94] je zachovat k téměř nezměněné vysoké počty sdružených jevů wk−m+1 . Představa je, že se se počet výskytů těchto sdružených jevů přı́liš nezměnı́ ani v přı́padě zvolenı́ jiného trénovacı́ho korpusu ze stejné problémové oblasti a počet slov ve slovnı́ku V . Zavedenı́m parametru trvalé odchylky bwk−1 budeme uvažovat možnou proměnlivost, resp. odchylku počtu k−m+1 k−1 výskytů c(wk−m+1 ). Diskontnı́ součinitel pak můžeme vyjádřit jako dc(wk k−m+1 ) = k c(wk−m+1 ) − bwk−1 k−m+1 . k ) c(wk−m+1 (1.52) Dosazenı́m (1.52) do (1.41) je pak možné model s absolutnı́m diskontem vyjádřit jako k c(wk−m+1 )−b k−1 w k−m+1 k pro c(wk−m+1 )>0 k c(wk−m+1 ) k−1 k−1 AD b k−1 β(wk |wk−m+2 ) k−1 P (wk |wk−m+1 ) = , w V −n0 (wk−m+1 ) k−m+1 k P ) = 0 pro c(w k−1 k−1 k−m+1 β(wk |wk−m+2 ) c(wk−m+1 ) k )=0 wk :c(w k−m+1 k−1 n0 (wk−m+1 ) (1.53) je počet slov, které se v trénovacı́m korpusu kde V je počet slov ve slovnı́ku a k−1 nevyskytly po historii wk−m+1 . Odvozenı́ parametru bwk−1 pomocı́ metody odhadu s postupným vynechávánı́m jedk−m+1 noho jevu je uvedeno např. v [Psu06]. Výsledkem tohoto odvozenı́ je iteračnı́ vzorec bwk−1 = k−m+1 k−1 n1 (wk−m+1 ) )(1−b k−1 ) rnr (wk−1 k−m+1 w k−1 k−1 k−m+1 n1 (wk−m+1 )+2n2 (wk−m+1 )+ r−1−b k−1 r=3 w k−m+1 R P k−1 pro ∀ wk−m+1 , (1.54) k kde R = max(r) je nejvyššı́ uvažovaný počet výskytů m-gramu wk−m+1 . Z rovnice (1.53) vyplývá, že (1.55) 0 < bwk−1 < 1 . k−m+1 V [Psu06] je také proveden odhad hornı́ meze bwk−1 , tj. k−m+1 bwk−1 k−m+1 a dolnı́ meze bwk−1 ≤ k−1 n1 (wk−m+1 ) k−1 k−1 n1 (wk−m+1 )+2n2 (wk−m+1 ) k−1 pro ∀ wk−m+1 (1.56) , tj. k−m+1 bwk−1 k−m+1 ≥ k−1 n1 (wk−m+1 ) R P k−1 k−1 n1 (wk−m+1 )+2n2 (wk−m+1 )+ r=3 k−1 r n (wk−m+1 ) r−1 r k−1 pro ∀ wk−m+1 (1.57) V praxi se pak volı́ raději hodnota, která co nejvı́ce podhodnocuje vliv jevů, které nebyly pozorovány v trénovacı́m korpusu, tj. hodnota blı́žı́cı́ se hornı́ mezi (1.56). 18 k−1 Dalšı́ možnostı́ je uvažovat jen jeden parametr b pro všechny historie wk−m+1 . Může to však dı́ky nedostatku parametrů vést na velmi vychýlené odhady pravděpodobnostı́. Experimentálnı́ výsledky však poukazujı́, že uvažovánı́ historie se moc nevyplácı́, a tak se často předpokládá, že n1 . (1.58) bwk−1 ≈ b = k−m+1 n1 + 2n2 Model Kneserův-Neyův Kneserův-Neyův model [Ney95] vycházı́ z jiného tvaru zobecněného rozdělenı́ k−1 β(wk |wk−m+2 ) než je uvedeno v (1.40) a to k−1 k−1 β(wk |wk−m+2 ) = β1 (wk |wk−m+2 )= k c1 (wk−m+2 ) k−1 c1 (wk−m+2 ) , (1.59) 1 (1.60) kde X k c1 (wk−m+2 )= k−1 k−1 k−1 wk−m+2 :wk−m+2 ⊂wk−m+1 ∧ k c(wk−m+1 )=1 a k−1 )= c1 (wk−m+2 X k ) . c1 (wk−m+2 (1.61) wk k k takových, že slovu wk předcházı́ historie ) udává počet singletonů wk−m+2 c1 (wk−m+2 k−1 wk−m+2 je rozdělenı́ (1.59) nazýváno jako singletonové ústupové rozdělenı́ (z angl singleton backing-off distribution). Dosazenı́m diskontnı́ho součinitele dc(wk k−m+1 ) = k )−b c(wk−m+1 k c(wk−m+1 ) . (1.62) při uváženı́ 1.59 do (1.41) dostáváme pro Kneser-Neyův model předpis k−1 P KN (wk |wk−m+1 )= k c(wk−m+1 )−b k−1 c(wk−m+1 ) V b k−1 −n0 (wk−m+1 ) k−1 c(wk−m+1 ) k pro c(wk−m+1 )>0 k c1 (wk−m+2 ) ) c1 c(wk−1 k−m+2 c1 (wk ) P k−m+2 c1 (wk−1 ) k k−m+2 wk :c(w )=0 k−m+2 k pro c(wk−m+1 )=0 . (1.63) 1.5.3 Modely založené na třı́dách slov Modely založené na třı́dách slov v podstatě sloužı́ jako pomocné ústupový model ve spojenı́ s m-gramovými modely. Jsou totiž schopny zobecnit kontextové závislosti i na slova, která se v trénovacı́m korpusu vůbec nevyskytujı́. Statistiky slovnı́ch třı́d se totiž zı́skávajı́ mnohem snadněji, než statistiky slov samotných. 19 Pro zjednodušenı́ prozatı́m předpokládejme, že se jedná o relaci zobrazenı́ z množiny slov do množiny slovnı́ch třı́d a n-gramový model může použı́vat historii třı́d ck−1 k−m+1 k−1 namı́sto historie slov wk−m+1 , tj. platı́ k−1 P (wk |wk−m+1 ) → P (wk |ck−1 k−m+1 ) k−1 k−1 P (wk , ck |ck−1 k−m+1 ) = P (wk |ck−m+1 )P (ck |ck−m+1 ) k−1 = P (wk |ck )P (ck |ck−m+1 ) (1.64) , (1.65) kde P (wk |ck ) je pravděpodobnost slova wk za podmı́nky, že wk náležı́ do třı́dy ck k−1 a P (ck |ck−1 k−m+1 ) je pravděpodobnost výskytu třı́dy ck s historiı́ ck−m+1 . Podmı́něnou pravděpodobnost je tak možné na základě (1.65) vyjádřit jako k−1 P (w|wk−m+1 ) = P (wk |ck )P (ck |ck−1 k−m+1 ) . (1.66) Pokud použijeme třı́dy založené na slovnı́ch druzı́ch, může jedno slovo patřit k vı́ce slovnı́m druhům. Napřı́klad slovo ”kolem” může být předložka, přı́slovce i podstatné jméno v 7. pádě jednotného čı́sla. Potom musı́me pravou stranu rovnice (1.66) vysčı́tat přes všechny třı́dy v našem korpusu C X k−1 (1.67) )= P (wk |ck )P (ck |ck−1 P (w|wk−m+1 k−m+1 ) . ck ∈C 1.5.4 Posouzenı́ kvality jazykového modelu Prvnı́ možnostı́ je použı́t model v úloze rozpoznávánı́ mluvené řeči a zjistit, o kolik se zlepšila přesnost rozpoznávánı́ oproti nějakému standardnı́mu jazykovému modelu etalonu. Jazykový model však může být posouzen i sám bez akustického modelu. Nejpoužı́vanějšı́ mı́rou hodnocenı́ kvality jazykového modelu je tzv. perplexita (z angl. perplexity) [Psu06] definovaná jako 1 , (1.68) PP = q N N P (w1 ) kde N je počet slov v daném korpusu a P (w1K ) je odhad apriornı́ pravděpodobnosti udávaný jazykovým modelem. Je nutné rozlišovat mezi perplexitou testovacı́ho korpusu (z angl testset perplexity) a perplexitou trénovacı́ho korpusu (z angl. train-set perplexity), která se počı́tá na témže korpusu na jakém byl jazykový model natrénován. Často se použı́vá logaritmická podoba perplexity LP = log2 P P = − 1 log2 P (w1N ); . N (1.69) Pro m-gramové modely má tento vztah tvar LP = log2 P P = − 1 N −m+1 N −m+1 X k−1 log2 P (wk |wk−m+1 ); . (1.70) k=1 20 Lze řı́ci, že pokud je perplexita úlohy P P , potom obtı́žnost úlohy rozpoznávánı́ řeči je stejná, jako kdyby jazyk měl P P stejně pravděpodobných slov. 1.6 Dekódovacı́ techniky Nynı́ byly popsány všechny prvky potřebné pro konstrukci rozpoznávače mluvené řeči tak, jak byly uvedeny v kapitole 1.2. Máme tedy definovanou strukturu jazykového modelu P (W ) a akustického modelu P (O|W ) v podobě ohodnoceného stavového automatu a potřebujeme nalézt optimálnı́ cestu podle vstupnı́ch vektorů pozorovánı́ v tomto automatu. Poznamenejme, že označı́me-li posloupnost stavů S a posloupnost vstupnı́ch vektorů přı́znaků obsahuje T pozorovánı́, musı́ mı́t každá posloupnost S generujı́cı́ O nejméně T + 2 stavů. Vždy totiž uvažujeme alespoň počátečnı́ a koncový neemitujı́cı́ stav. Pro rozpoznávacı́ sı́t’ reprezentovanou skrytými Markovovými modely, kde je posloupnost slov W jednoznačně určena posloupnostı́ stavů pro akustický model platı́ P (O|W ) = X P (O|S)P (S|W ) , (1.71) S kde P (O|S) je podmı́něná pravděpodobnost jevu, že model při dané posloupnosti stavů S (a tı́m je jednoznačně dána i posloupnost slov W ) vygeneruje posloupnost pozorovánı́ O a P (S|W ) je podmı́něná pravděpodobnost, že model modelujı́cı́ posloupnost slov W projde stavovou posloupnostı́ S. Přitom každý stav si = s(t), pro t = 1, 2, . . . , T resp. přechod má jednoznačně přiřazené rozdělenı́ pravděpodobnosti bi () a každý přechod má definovanou pravděpodobnost aij přechodu ze stavu i do stavu j tak jak je uvedeno v kapitole 1.4. Celá úloha dekódovánı́ může být reprezentována ( ) X P (O|S)P (S|W ) . (1.72) Ŵ = arg max P (W ) W S Omezı́me-li sumu ve vztahu 1.72 pouze na nenulové hodnoty P (S|W ), tj. S ∈ ΦW , kde ΦW je množina všech možných posloupnostı́ stavů reprezentujı́cı́ posloupnost slov W , dostaneme definici úlohy dekódovánı́ podle kritéria MAP [Psu06] ( ) P Ŵ = arg max P (W ) P (O|S)P (S|W ) W S= Φ W ( ) . (1.73) P = arg max P (W ) P (O|SW )P (SW ) W SW =ΦW Experimentálně bylo zjištěno, že pokud je pouze nejpravděpodobnějšı́ posloupnost stavů S namı́sto součtu pravděpodobnostı́ přes všechna S ∈ ΦW , přesnost rozpoznávánı́ se přı́liš nezměnı́. Po uplatněnı́ této aproximace dostáváme dnes nejpoužı́vanějšı́ Viterbiovo 21 kritérium rozpoznávánı́ Ŵ = arg max P (W ) max P (O|S)P (S|W ) S=ΦW W . (1.74) = arg max P (W ) max P (O|SW )P (SW ) SW =ΦW W 1.6.1 Nalezenı́ posloupnosti stavů s největšı́ věrohodnostı́ Máme-li připraveny všechny zdroje znalostı́, můžeme přistoupit k samotnému rozpoznávánı́ pomocı́ tzv. Viterbiho Algoritmu [Rab93]. Pro nalezenı́ nejvěrohodnějšı́ posloupnosti stavů s = (s1 , s2 , . . . , sT ) pro danou posloupnost vektorů přı́znaků O = (o1 , o2 , . . . , oT ) definujme proměnnou δt (i) = max s1 ,s2 ,...,st−1 P (s1 , s2 , . . . , st−1 , st = i, o1 , o2 , . . . , ot | M ) , (1.75) která označuje nejvyššı́ pravděpodobnost výskytu posloupnosti o1 , o2 , . . . , ot v nalezené posloupnosti stavů s1 , s2 , . . . , st−1 a koncový stav i. Indukcı́ dostaneme δt+1 (j) = bj (ot+1 ) max [δt (i)aij ] . 1≤i≤N (1.76) Viterbiho algoritmus: 1. Inicializace: δ1 (i) = πi bi (o1 ), ψ1 (i) = 0 1≤i≤N (1.77) 2. Rekurze: δt (j) = bj (ot ) max [δt−1 (i)aij ], 1≤i≤N 2≤t≤N (1.78) 1≤j≤N ψt (j) = arg max [δt−1 (i)aij ], 1≤i≤N 2≤t≤N (1.79) 1≤j≤N 3. Ukončenı́4 : P ∗ = max [δT (i)] (1.80) s∗T = arg max [δT (i)] (1.81) 1≤i≤N 1≤i≤N 4. Hledánı́ posloupnosti stavů (od konce) s∗t = ψt+1 (s∗t+1 ), t = T − 1, T − 2, . . . , 1. (1.82) Náročnost algoritmu zahrnuje N (N + 1)(T − 1) + N ≈ N 2 T součinů, přičemž velkou výhodou je absence součtů pravděpodobnostı́. Můžeme tak snadno počı́tat v logaritmických pravděpodobnostech bez použitı́ součinů. 4 Často předpokládáme ukončenı́ ve stavu N, tudı́ž P ∗ = δT (N ) a s∗T = N 22 Viterbiho algoritmus s použitı́m logaritmů pravděpodobnostı́ Definujme logaritmické proměnné π̃i = log(πi ), 1≤i≤N b̃i (ot ) = log[bi (ot )], 1 ≤ i ≤ N, 1 ≤ t ≤ T ; ãij = log(aij ), 1 ≤ i, j ≤ N (1.83) Dalšı́ postup pak: 1. Inicializace: δ̃1 (i) = π̃i + bi (o1 ), ψ1 (i) = 0 1≤i≤N (1.84) 2. Rekurze: h i δ̃t (j) = b̃j (ot ) + max δ̃t−1 (i) + ãij 1≤i≤N h i ψt (j) = arg max δ̃t−1 (i) + ãij , 2 ≤ t ≤ T, 1 ≤ j ≤ N (1.85) 1≤i≤N 3. Ukončenı́: P̃ ∗ = max [δ̃T (i)] (1.86) s∗T = arg max [δ̃T (i)] (1.87) 1≤i≤N 1≤i≤N 4. Hledánı́ posloupnosti stavů (od konce) s∗t = ψt+1 (s∗t+1 ), t = T − 1, T − 2, . . . , 1. (1.88) Náročnost algoritmu je v tomto přı́padě cca N 2 T součtů. Jedná se tak o nejvýhodnějšı́ možnou implementaci algoritmu hledánı́ nejlepšı́ posloupnosti stavů. Výše uvedený algoritmus demonstruje na přı́kladě třı́stavového HMM s pozorovacı́ posloupnostı́ šesti vektorů obrázek 1.4, kde šipky ukazujı́ na stav i předchozı́ho vektoru o s největšı́ částečnou pravděpodobnostı́ (1.85) a silné čáry výslednou posloupnost stavů obdrženou na základě (1.86). 1.7 Základnı́ způsoby procházenı́ grafů Obr. 1.4 popisuje nalezenı́ nejpravděpodobnějšı́ cesty v jednom modelu. To je ovšem pro rozpoznávánı́ řeči nedostatečné. Je potřeba nalézt nejpravděpodobnějšı́ cestu v komplexnı́ rozpoznávacı́ sı́ti na úrovni stavů. Základem je vždy Viterbiho algoritmus. Po obdrženı́ posloupnosti vektorů přı́znaků O = o1 , o2 , . . . , oT se prostor stavů rozpoznávacı́ sı́tě značně zkomplikuje. Obr. 1.5 popisuje tuto skutečnost na jednoduché rozpoznávacı́ sı́ti slova ”osm”. Pro rozpoznávacı́ sı́t’ ”ano-ne” bez zpětných přechodů je tatáž situace zobrazena na obr. 1.6. 23 o2 o1 4 o3 0.08 o6 o5 ~ ~ d3 (3) =b3( o3)+log(0.12)+ d 2(2) y3 (3)=2 ~ (3) =b ( o )+log(0.12)+ ~ (2) d4 d3 3 4 y4 (3)=2 ~ (3) =b ( o )+log(0.12)+ ~ (2) d5 d4 3 5 y5 (3) =2 ~ (2) =b ( o )+log(0.06)+ ~ (1) d2 d1 2 2 y2 (2)=1 ~ (2) =b ( o )+log(0.06)+ ~ (1) d3 d2 2 3 y3 (2)=1 ~ (2) =b ( o )+log(0.06)+ ~ (1) d4 d3 2 4 y4 (2)=1 ~ (2) =b ( o )+log(0.83)+ ~ (2) d5 d4 2 5 y5 (2)=2 ~ ~ d2 (1) =b1(o2)+log(0.85)+ d 1(1) y2 (1)=1 ~ ~ d3 (1) =b1( o3)+log(0.85)+ d 2(1) y3 (1)=1 ~ (1) =b ( o )+log(0.85)+ ~ (1) d4 d3 1 4 y4 (1)=1 3 0.92 o4 ~ (3) =b ( o )+log(0.92)+ ~ (3) d6 d5 3 6 y6 (3) =3 0.12 2 0.83 0.06 ~ d1 (1) =b1 ( o1) y1 (1)=0 1 0.85 0.93 0 Obrázek 1.4: Demonstrace Viterbiho algoritmu o1 o2 o3 o4 o5 o6 o7 o_a11 bo#1 ( o1 ) bo#1 ( o2 ) bo#1 ( o3 ) bo#1 ( o4 ) bo#1 ( o5 ) bo#1 ( o6 ) bo#1 ( o7 ) bo#1 ( o8 ) bo#1 ( oN ) o_a22 bo#2 ( o1 ) bo#2 ( o2 ) bo#2 ( o3 ) bo#2 ( o4 ) bo#2 ( o5 ) bo#2 ( o6 ) bo#2 ( o7 ) bo#2 ( o8 ) bo#2 ( oN ) o#0 o8 oN o_a01 o#1 o o_a23 bo#3 ( o2 ) bo#3 ( o3 ) bo#3 ( o4 ) bo#3 ( o5 ) bo#3 ( o6 ) bo#3 ( o7 ) bo#3 ( o8 ) bo#3 ( oN ) bs#1 ( o1 ) bs#1 ( o2 ) bs#1 ( o3 ) bs#1 ( o4 ) bs#1 ( o5 ) bs#1 ( o6 ) bs#1 ( o7 ) bs#1 ( o8 ) bs#1 ( oN ) s_a22 bs#2 ( o1 ) bs#2 ( o2 ) bs#2 ( o3 ) bs#2 ( o4 ) bs#2 ( o5 ) bs#2 ( o6 ) bs#2 ( o7 ) bs#2 ( o8 ) bs#2 ( oN ) s_a33 bs#3 ( o1 ) bs#3 ( o2 ) bs#3 ( o3 ) bs#3 ( o4 ) bs#3 ( o5 ) bs#3 ( o6 ) bs#3 ( o7 ) bs#3 ( o8 ) bs#3 ( oN ) m_a11 bm#1( o1 ) bm#1( o2 ) bm#1( o3 ) bm#1( o4 ) bm#1( o5 ) bm#1( o6 ) bm#1( o7 ) bm#1( o8 ) bm#1( oN ) m_a22 bm#2( o1 ) bm#2( o2 ) bm#2( o3 ) bm#2( o4 ) bm#2( o5 ) bm#2( o6 ) bm#2( o7 ) bm#2( o8 ) bm#2( oN ) bm#3( o1 ) bm#3( o2 ) bm#3( o3 ) bm#3( o4 ) bm#3( o5 ) bm#3( o6 ) bm#3( o7 ) bm#3( o8 ) bm#3( oN ) o#1 o_a34 s#1 s s_a11 s_a12 s#2 s_a23 s#3 o3 o_a01 bo#3 ( o1 ) o_a33 o#3 o2 o1 o#0 o_a12 o#2 o o_a11 o_a12 o#2 o_a22 o_a23 e:e / o_a11 . bo#1 ( o2 ) e:e / o_a12 . bo#2 ( o2 ) bo#1 ( o1 ) bo#1 ( o2 ) bo#2 ( o2 ) e:e / o_a11 . bo#1( o3 ) e:e / o_a12 . bo#2( o3 ) e:e / o_a22 . bo#2( o3 ) e:e / o_a23 . bo#3( o3 ) e:e / o_a11 . bo#1( o4 ) e:e / o_a12 . bo#2( o4 ) bo#1 ( o3 ) bo#2 ( o3 ) s_a34 m#1 m m_a12 m#2 m_a23 m#3 m_a33 m_a34 o#3 o_a33 o_a34 s#1 bo#3 ( o3 ) e:e / o_a22 . e:e / o_a23 . bo#3( o4 ) e:e / o_a33 . bo#3 o4 e:o / o_a34 . bs#1( o4 ) bo#2( o4 ) s_a11 s_a12 m#4 Obrázek 1.5: Princip procházenı́ grafem při zadané posloupnosti vektoru přı́znaků 1.7.1 Hledánı́ do hloubky - DFS Algoritmus hledánı́ do hloubky - DFS (z angl. Deepth-First-Search) využı́vá datový typ zásobnı́k, nebo rekurzi. Podstatou při procházenı́ grafu je ukládánı́ již navštı́vených stavů a ukončenı́ dalšı́ho pronikánı́ při následném dosaženı́ již navštı́veného stavu, či výskytu v koncovém stavu. Následujı́cı́ přı́klad demonstruje tento algoritmus pomocı́ rekurze v jazyce C [Sed03]. void traverse (int k, void (*visit)(int)) { link t; (*visit)(k); visited[k] = 1; for (t = adj[k]; t != NULL; t = t->next) if (!visited[t->v]) traverse(t->v, visit); } Obr. 1.7 pak demonstruje kroky algoritmu DFS na jednoduchém stavovém automatu. 24 o1 o2 o3 o4 o5 o6 ()_a01 ()#1 oN ()_a11 ()_a12 ()_a22 ()#2 ()_a23 ()#3 a#1 a ()_a33 a_a11 a_a12 a#2 a_a22 a_a23 a_a33 a#3 o_a34 n#1 n n#1 n_a11 n_a12 n#2 n n_a22 n_a23 n#3 n_a33 n#3 o_a11 e#1 o#2 n_a33 e_a11 e_a12 e o_a22 o_a23 o#3 n_a22 n_a34 o_a12 o n#2 n_a23 n_a34 o#1 n_a11 n_a12 e#2 e#3 o_a33 ()#1 e_a22 e_a23 e_a33 ()_a11 ()_a12 ()#2 ()_a22 ()_a23 ()#3 ()_a33 Obrázek 1.6: Rozpoznávač ”ano-ne” bez zpětných přechodů Obrázek 1.7: Postupné navštěvovánı́ stavů algoritmem DFS 1.7.2 Hledánı́ do šı́řky - BFS Algoritmus hledánı́ do šı́řky - BFS (z angl. Breadth-First-Search) použı́vá abstraktnı́ datový typ fronta (FIFO) [Sed03], do které si ukládá nenavštı́vené cı́lové stavy daných přechodů v daném kroku. V následujı́cı́m kroku jsou pak z fronty čteny a proces se opakuje. Následujı́cı́ přı́klad demonstruje tento algoritmus pomocı́ datového typu fronta (přı́kazy QUEUEinit() - inicializace fronty, QUEUEput() - uloženı́ stavu do fronty, QUEUEget() vyjmutı́ stavu z fronty, QUEUEempty() - vracı́ log. 1, pokud je v daný okamžik fronta prázdná). void traverse(int k, void (*visit)(int)) { 25 link t; QUEUEinit(V); QUEUEput(k); while (!QUEUEempty()) if (visited[k = QUEUEget()] == 0) { (*visit)(k); visited[k] = 1; for (t = adj[k]; t != NULL; t = t->next) if (visited[t->v] == 0) QUEUEput(t->v); } } Obr. 1.8 pak demonstruje mezikroky algoritmu BFS (vždy zpracovány stavy z fronty uložené v nejvı́ce vnořené smyčce výše uvedeného algoritmu) na jednoduchém stavovém automatu. Obrázek 1.8: Mezikroky navštěvovánı́ stavů algoritmem BFS 1.8 Algoritmus pro sı́t’ realizovanou WFST Jedná se o Viterbiho algoritmus, který aplikujeme na danou rozpoznávacı́ sı́t’, se vstupem na úrovni stavů. Následujı́cı́ postup je použit v programu rct 5 coby dekodéru (použitı́ uvedeno v kap. 7.8). Popišme základnı́ body zmı́něného procesu: • pro procházenı́ rozpoznávacı́ sı́tě je použit algoritmus hledánı́ do šı́řky (Breadth-First) [Sed03], přičemž epsilon přechody jsou řešeny algoritmem hledánı́ do hloubky (DeepthFirst), • algoritmus založen na generovánı́ hypotéz pro vybrané stavy a segmenty řeči, • hypotézy jsou pro každý segment seřazeny dle jejich hodnot (nalezených pomocı́ součtu pravděpodobnostı́ – mixtur vektoru přı́znaků v distribučnı́ch funkcı́ch vı́cerozměrného normálnı́ho rozdělenı́ [Rab93, You02]) a následně podle kritériı́ prořezávánı́ ponechány jen ty nejdůležitějšı́, 5 Konkrétně se jedná o modul asr base. 26 • proces se takto opakuje, dokud nenı́ dosažen poslednı́ segment reprezentovaný vektorem přı́znaků vstupnı́ promluvy. 1.8.1 Prořezávánı́ rozpoznávacı́ sı́tě Na obr. 1.9 je vidět základnı́ princip procházenı́ rozpoznávacı́ sı́tě. Mimo jiné odtud plyne, že pokud máme alespoň 2 přechody z každého stavu, potřebujeme generovat pro promluvu o stu časových úseků alespoň 2100 = 1, 27×1030 hypotéz! Taková pamět’ která by udržela takto obrovské množstvı́ informacı́, však neexistuje, a tak se použı́vá prořezávánı́ (z angl. pruning) při rozpoznávánı́. V popisovaném algoritmu se použı́vajı́ celkem 3 druhy prořezávánı́: 1. zachovánı́ N-nejlepšı́ch hypotéz pro stejný cı́lový stav - např. pro hypotézy s cı́lovými stavy 1,2,2,3,2,3,3,4,5,6 vznikne pro N=1 množina hypotéz s cı́lovými stavy 1,2,3,4,5,6. 2. stanovenı́ maximálnı́ho počtu hypotéz pro daný segment - rozumné rozmezı́ takto generovaných hypotéz (seřazených od nejvýhodnějšı́ k nejhoršı́) je cca 300 10000. 3. svazkové prořezávánı́ - z angl. beam pruning - volı́me rozmezı́ pravděpodobnosti, kde seřazené hypotézy pro daný segment akceptujeme. Tento parametr bývá v rozpoznávačı́ch volitelný a bude použit i v grafech popisujı́cı́ výsledky rozpoznávánı́ této práce. 5 0 1 2 3 4 1 6 5 0 1 2 3 4 1 2 1 2 2 3 1 2 2 3 6 5 0 1 2 3 4 6 5 0 1 2 3 4 2 3 3 4 5 6 6 5 0 1 2 3 4 6 Obrázek 1.9: Princip generovánı́ hypotéz při procházenı́ sı́tě 27 Kapitola 2 Stavové automaty 2.1 Úvod Stavové automaty, resp. transducery jsou s velkým úspěchem použı́vány jako kompletnı́ reprezentace zdrojů znalostı́ (angl. Knowledge Sources) jazykových modelů [Moh97a, Cho06, Sza01], a slovnı́ků [Moh94]. Jejich základnı́ výhoda pro použitı́ v rozpoznávánı́ řeči spočı́vá v možnosti optimalizace sı́tě mapujı́cı́ části akustických modelů na slova tzv. rozpoznávacı́ sı́tě. Celá teorie stavových automatů je velmi vhodná pro optimalizaci sı́tě akustických modelů, nebot’ umı́ do sebe zahrnout vše, co dekodéry použı́vané v rozpoznávánı́ řeči potřebujı́. Konkrétně jde v přı́padě zdrojů znalostı́ o možnosti sjednocenı́ stejných cest (shodujı́cı́ se začátky a konce různých slov), stlačenı́ jednotlivých oceněnı́ směrem k počátečnı́mu uzlu a použitı́ operace kompozice pro vytvořenı́ vlastnı́ sı́tě. V přı́padě celé sı́tě teorie automatů nabı́zı́ možnost jejı́ finálnı́ optimalizace, popř. odstraněnı́ −přechodů. K vlastnı́mu dekódovánı́ je pak použit Viterbiho dekodér stejně jako je tomu i v běžně použı́vaných sı́tı́ch. Ten ovšem pracuje s již předem připravenou sı́tı́ na nižšı́ úrovni (úroveň akustických modelů, resp. slov), a tak tento dekodér nepotřebuje dalšı́ podpůrné algoritmy pro ”nalepenı́” akustických modelů na vstupnı́ jazykový model pomocı́ slovnı́ku. Poznamenejme, že následujı́cı́ texty byly vytvořeny na základě [Moh02b, Moh02a, Mel03] a dalšı́ch zdrojů (vždy citováno). AT&T knihovna FSM byla použita pro zı́skánı́ uváděných přı́kladů FSM operacı́. Pro vykreslenı́ automatů byl použit nástroj graphviz [itwc]. 2.2 Konečný automat Konečný automat (dále jen FSM, resp. FSA z angl. Finite-State Machine, resp. FiniteState Acceptor), jak bude v následujı́cı́m výkladu uvedeno, je vždy definován jako nějaká 28 n-tice množin (stavy, přechody, ...), resp. prvků (poč.stav, ...). Definice: Deterministický konečný automat M je pětice M = (Σ, Q, E, i, F ) , (2.1) kde Q je konečná množina vnitřnı́ch stavů, Σ je konečná vstupnı́ abeceda, E je zobrazenı́ z Q × (Σ ∪ {}) do Q, i ∈ Q je počátečnı́ stav a F ⊆ Q je množina koncových stavů. Deterministický konečný automat [Mel03] pracuje tak, že zpracovává danou posloupnost vstupnı́ch symbolů. Přechod t = (t− , l(t)) ∈ E je určen stavem t− , ve kterém se automat nacházı́ a jednoznačným symbolem l(t), který je čten ze vstupnı́ho řetězce. Přechod označený prázdným symbolem znamená, že tomuto stavu neodpovı́dá žádný vstup. Při přechodu přejde automat do nového stavu a přečte jeden vstupnı́ symbol. Symboly se čtou zleva doprava. Cesta v M je posloupnost navazujı́cı́ch přechodů t1 , t2 , . . . , tn , pro které platı́ − t+ i = ti+1 , i = 1, . . . , n − 1 . (2.2) Úspěšná cesta π = t1 , t2 , . . . , tn je cesta z počátečnı́ho stavu i do koncového stavu f ∈ F . π je řetězec složený z posloupnosti symbolů jednotlivých přechodů dané celkové cesty l(π) = l(t1 ) . . . l(tn ). Řetězec x je přijat automatem M , pokud existuje celková cesta π s posloupnostı́ symbolů x tak, že l(π) = x . (2.3) Definice: Nedeterministický konečný automat M je pětice M = (Σ, Q, E, i, F ) , (2.4) kde Q je konečná množina vnitřnı́ch stavů, Σ je konečná vstupnı́ abeceda, E je zobrazenı́ z Q × (Σ ∪ {}) do Q, i ∈ Q je počátečnı́ stav a F ⊆ Q je množina koncových stavů. Přechod t = (t− , l(t), t+ ) ∈ E je určen stavem t− , ve kterém se automat nacházı́, stavem t+ , kam ukazuje daná spojnice a symbolem l(t), který je čten ze vstupnı́ho řetězce. Znamená to, že oproti deterministickému automatu zde nemusı́ být pro jednotlivé stavy přechod s jedinečným symbolem, ale celá množina přechodů s tı́mto symbolem. Ostatnı́ vlastnosti jsou společné s deterministickým konečným automatem (2.1). 2.3 Polookruh Ohodnocené automaty s konečným počtem stavů uvedené v následujı́cı́m výkladu vyžadujı́ zavedenı́ pojmu polookruh (z angl. semiring). Je to užitečné dı́ky jednotnému 29 tvaru operacı́ s ohodnocenı́mi [Moh02a, Kui86]. Polookruh (K, ⊕, ⊗, 0̄, 1̄) je tak množina K obsahujı́cı́ dvě asociativnı́ matematické operace ⊕ a ⊗, pro které platı́ 0̄ ⊕ a = a ⊕ 0̄ = a 1̄ ⊗ a = a ⊗ 1̄ = a a∈K . (2.5) Napřı́klad polookruhem je (N, +, ×, 0, 1). Ceny použı́vané pro rozpoznávánı́ řeči často reprezentujı́ pravděpodobnosti. Patřičný polookruh pro uvedené použitı́ se tak nazývá pravděpodobnostnı́ polookruh (R, +, ×, 0, 1). Jak již bylo uvedeno v předchozı́ kapitole, je výhodné počı́tat s logaritmy pravděpodobnostı́. Logaritmický polookruh má pro tento přı́pad tvar (R+ ∪ {∞}, ladd, +, ∞, 0), kde ladd(a, b) = ln(ea + eb ) (2.6) a kde e−∞ = 0 a − ln(0) = ∞. Pokud je použı́ván Viterbiho algoritmus, kde se operace součtu nevyskytuje, s výhodou použı́váme tzv. tropický polookruh (z angl. tropical semiring) [Sim78], který se v oblasti zpracovánı́ řeči použı́vá velmi často (R+ ∪ {∞}, max, +, ∞, 0). 2.4 Ohodnocený stavový automat Definice: ohodnocený stavový automat (dále jen WFSA z angl. Weighted Finite-State Acceptor) A = (Σ, Q, E, i, F, λ, ρ) (2.7) přes polookruh K je dán konečnou vstupnı́ abecedou1 Σ, konečnou množinou stavů Q, konečným počtem přechodů E ⊆ Q × (Σ ∪ {}) × K × Q, počátečnı́m stavem i ∈ Q, množinou koncových stavů F ⊆ Q, počátečnı́ cenou λ a koncovou ohodnocenou funkcı́ ρ. Přechod t = (t− , l(t), w(t), t+ ) ∈ E může být reprezentován spojnicı́ ze zdrojového stavu t− do cı́lového stavu t+ se symbolem l(t) a cenou w(t). Přechod označený prázdným symbolem znamená, že tomuto stavu neodpovı́dá žádný vstup. Cesta v A je posloupnost navazujı́cı́ch přechodů t1 , t2 , . . . , tn , pro které platı́ − t+ i = ti+1 , i = 1, . . . , n − 1 . (2.8) Úspěšná cesta π = t1 , t2 , . . . , tn je cesta z počátečnı́ho stavu i do koncového stavu f ∈ F . π je řetězec složený z posloupnosti symbolů jednotlivých přechodů dané celkové cesty l(π) = l(t1 ) . . . l(tn ). Ohodnocenı́ cesty w(π)je ⊗ operace mezi inicializačnı́ cenou, cenami jednotlivých přechodů a konečnou cenou ρ(t+ n) w(π) = λ ⊗ w(t1 ) ⊗ w(t2 ) ⊗ . . . ⊗ w(tn ) ⊗ ρ(t+ n) . 1 (2.9) Možno označit i jako množinu vstupnı́ch symbolů. 30 dáma/0.5 0 <sil>/1 1 2 na/0.5 na/0.5 jezdec/0.5 pět/0.5 5 e/1 3 6 čtyři/0.5 4 <sil>/0.5 <sil>/0.5 8 7 Obrázek 2.1: Přı́klad WFSA č:čtyři/0.5 1 t:<eps>/1 2 i:<eps>/1 3 š:čtyři/0.5 0 ř:<eps>/0.5 r:<eps>/0.5 4 i:<eps>/1 5 d:dva/1 6 v:<eps>/1 7 a:<eps>/1 8 Obrázek 2.2: Přı́klad WFST Řetězec x je přijat automatem A, pokud existuje alespoň jedna úspěšná cesta π s posloupnostı́ symbolů x tak, že l(π) = x . (2.10) Výsledné ohodnocenı́ udělené automatem A a posloupnosti x je dáno ⊕ operacemi mezi cenami všech úspěšných cest π s posloupnostı́ jednotlivých symbolů x. WFSA tak oceňuje vstupnı́ posloupnost symbolů. Dohodou je stanoveno, že stavy se značı́ kružnicemi a jsou očı́slovány dle jejich pořadı́. Počátečnı́ stav je reprezentován silnou kružnicı́, koncové pak zdvojenou. Ceny a symboly budou značeny jako l(t)/w(t). Konečná cena ρ(f ) koncového stavu f ∈ F je v koncovém stavu označena f /ρ(f ), či vynechána pokud ρ(f ) = 1̄(uvedený přı́klad) podobně jako inicializačnı́ cena λ. Na obr. 2.1 vidı́me část jazykového modelu pro hlasové ovládánı́ hry šachy, kde slova coby symboly skrz každou celkovou cestu reprezentujı́ možnou variantu posloupnosti slov. w(π) pak dává věrohodnost dané posloupnosti. Ceny v úlohách rozpoznávánı́ řeči velmi často reprezentujı́ záporné logaritmy pravděpodobnostı́, resp. věrohodnostı́. 2.5 Ohodnocený překladový stavový automat Ohodnocené překladové automaty s konečnými stavy2 (dále jen WFST z angl. Weighted Finite-State Transducers) se od WFSA lišı́ doplněnı́m přechodů namı́sto jednoho symbolu párem (i, o) vstupnı́ho symbolu i a výstupnı́ho symbolu o. 2 Možno nazývat i jako transducery. 31 konstrukčnı́ operace uzavřenı́ A∗ sjednocenı́ A∪B zřetězenı́ AB rozdı́l A − B FSA průnik A ∩ B FSA kompozice A ◦ B FST optimalizačnı́ - identické odstr. epsilon determinizace minimalizace FSA ostatnı́ otočenı́ inverze projekce (FSM→FSA) ekvivalence stlačenı́ cen nejlepšı́ cesta Tabulka 2.1: Výběr binárnı́ch a unárnı́ch operacı́ mezi jednotlivými FSM Definice Ohodnocený transducer (WFST) T = (Σ, Ω, Q, E, i, F, λ, ρ) (2.11) přes polookruh K je dán konečnou vstupnı́ množinou symbolů Σ, konečnou výstupnı́ množinou symbolů Ω, konečnou množinou stavů Q, konečným počtem přechodů E ⊆ Q × (Σ ∪ {}) × (Ω ∪ {}) × K × Q, počátečnı́m stavem i ∈ Q, množinou konečných stavů F ⊆ Q, počátečnı́ cenou λ a konečnou ohodnocenou funkcı́ ρ. Přechod t = (t− , li (t), lo (t), w(t), t+ ) ∈ E může být reprezentován spojnicı́ ze zdrojového stavu t− do cı́lového stavu t+ se vstupnı́m symbolem li (t), výstupnı́m symbolem lo (t) a cenou w(t). Definice cesty, jejı́ posloupnosti symbolů a cen je shodná s WFSA. Přibyla zde posloupnost výstupnı́ch symbolů (řetězce) celkové cesty a ta je dána složenı́m jednotlivých výstupnı́ch symbolů podél této cesty. Gramatiku reprezentovanou na obr. 2.1 pomocı́ WFSA lze stejně dobře reprezentovat pomocı́ WFST přidánı́m nějakých výstupnı́ch symbolů nejčastěji identických se vstupnı́mi. Nenı́ zde žádná nová informace, reprezentace pomocı́ WFST se však dá použı́t stejně dobře jako pomocı́ WFSA. Na obr. 2.2 je znázorněn přı́klad reprezentace slovnı́ku mapujı́cı́ho jednotlivé fonémy do slov pomocı́ WFST, kde ceny coby pravděpodobnosti reprezentujı́ věrohodnosti alternativnı́ch výslovnostı́. 2.6 Základnı́ operace mezi stavovými automaty WFSA, resp. WFST je možné zpracovávat pomocı́ operacı́ [Moh02a, Roc97], viz tab. 2.1, kde silně vytištěné operace jsou důležité pro konstrukci rozpoznávače řeči. 2.6.1 Sjednocenı́ (součet) Pokud WFSA C obsahuje identické celkové cesty π jako WFSA A a B, platı́ C = A ∪ B, resp. C = A + B . (2.12) Grafická reprezentace operace sjednocenı́ je znázorněna na obr. 2.3. 32 0 zelená/0.300 0 1/0 zelená/0.400 červená/0.5 1 modrá/0 ž lutá/0.600 modrá/1.200 2/0.800 A: 2/0.300 B: červená/0.5 <eps>/0 6 0 <eps>/0 3 zelená/0.300 1 zelená/0.400 modrá/1.200 4/0 modrá/0 ž lutá/0.600 2/0.800 5/0.300 C: Obrázek 2.3: Přı́klad sjednocenı́ (součtu) dvou WFSA 2.6.2 Zřetězenı́ (součin) Pokud jsou celkové cesty WFSA C sřetězeny celkovými cestami automatů A a B v tomto pořadı́, platı́ C = AB , (2.13) grafická reprezentace operace zřetězenı́ je znázorněna na obr. 2.4. 0 zelená/0.300 0 1/0 zelená/0.400 červená/0.5 1 modrá/0 ž lutá/0.600 modrá/1.200 2/0.800 A: 2/0.300 B: červená/0.5 0 zelená/0.400 zelená/0.300 1 modrá/0 ž lutá/0.600 2 <eps>/0.800 3 4/0 modrá/1.200 5/0.300 C: Obrázek 2.4: Přı́klad zřetězenı́ (součinu) dvou WFSA 33 2.6.3 Uzavřenı́ Pokud jsou celkové cesty WFSA C sjednocenı́m libovolného počtu opakovánı́ celkových cest automatu B, platı́ C = B∗ = inf X Bn , (2.14) n=0 grafická reprezentace operace uzavřenı́ je znázorněna na obr. 2.5. zelená/0.400 1/0 zelená/0.400 0 <eps>/0 <eps>/0 3/0 0 modrá/1.200 modrá/1.200 <eps>/0.300 2/0.300 B: 1/0 2/0.300 C: Obrázek 2.5: Přı́klad uzavřenı́ WFSA 2.6.4 Otočenı́ Pokud posloupnosti symbolů, tvořı́cı́ celkové cesty WFSA C jsou v reverznı́m pořadı́ oproti posloupnostem symbolů celkových cest automatu A, platı́ C = Ar , (2.15) grafická reprezentace operace otočenı́ (z angl. reverse) je znázorněna na obr. 2.6. červená/0.5 0 4/0 zelená/0.400 zelená/0.300 1 modrá/0 ž lutá/0.600 2 <eps>/0.800 3 modrá/1.200 5/0.300 A: červená/0.5 <eps>/0 0 C: 5 <eps>/0.300 zelená/0.400 modrá/1.200 6 4 <eps>/0.800 3 modrá/0 ž lutá/0.600 2 zelená/0.300 1/0 Obrázek 2.6: Přı́klad otočenı́ WFSA 34 2.6.5 Inverze Pokud u WFST A vyměnı́me vstupnı́ symboly za výstupnı́, dostaneme WFST C. Platı́ C = A−1 , (2.16) grafická reprezentace operace inverze je znázorněna na obr. 2.7. červená:včela/0.5 0 zelená:slon/0.300 včela:červená/0.5 1 modrá:kočka/0 ž lutá:pes/0.600 2/0.800 0 slon:zelená/0.300 1 kočka:modrá/0 pes:ž lutá/0.600 2/0.800 C: A: Obrázek 2.7: Přı́klad inverze WFST 2.6.6 Projekce Odstranı́me-li vstupnı́ (resp. výstupnı́) symboly WFST A, obdržı́me WFSA C. Platı́ C = π1 (A) , (2.17) grafická reprezentace operace projekce je znázorněna na obr. 2.8. červená/0.5 červená:včela/0.5 0 zelená:slon/0.300 1 modrá:kočka/0 ž lutá:pes/0.600 0 2/0.800 zelená/0.300 1 modrá/0 ž lutá/0.600 2/0.800 C: A: Obrázek 2.8: Přı́klad projekce WFST na WFSA 2.6.7 Odstraněnı́ epsilon přechodů Operaci odstraněnı́ epsilon přechodů nejlépe ilustruje obr. 2.9. Vlastnı́ algoritmus byl podrobně popsán v [Moh00]. 2.6.8 Průnik Pokud WFSA C obsahuje identické celkové cesty π jako WFSA A a zároveň WFSA B, platı́ C = A ∩ B, (2.18) grafická reprezentace operace průniku je znázorněna na obr. 2.10. 35 červená/0.5 červená/0.5 1 zelená/0.300 červená/0.5 <eps>/0 0 1 zelená/0.300 zelená/0.300 modrá/0 ž lutá/0.600 2 <eps>/0.5 zelená/0.400 <eps>/0 4 zelená/0.400 modrá/1.200 2 3/0.800 5/0 0 modrá/0 4/0 modrá/1.200 ž lutá/0.600 5/0.300 3/0.800 6/0.300 B: modrá/0.5 ž lutá/1.100 C: Obrázek 2.9: Přı́klad odstraněnı́ epsilon přechodů WFSA A:červená/0.5 0 B: zelená/0.300 1 modrá/0 ž lutá/0.600 2/0.800 zelená/0.400 0/0 červená/0.200 modrá/0.600 1 ž lutá/1.299 2/0.5 C: 3/0.800 modrá/0.600 0 červená/0.699 1 zelená/0.700 2 ž lutá/1.899 4/1.299 Obrázek 2.10: Přı́klad průniku dvou WFSA 2.6.9 Rozdı́l Pokud WFSA C obsahuje identické celkové cesty π jako WFSA A bez celkových cest FSA B, platı́ C = A − B, (2.19) grafická reprezentace operace rozdı́lu je znázorněna na obr. 2.11. 2.6.10 Konexe (ořezánı́) Pokud stavový automat obsahuje nadbytečné stavy, resp. přechody jako WFSA A (obr. 2.12) tzn. takové, přes které nevede celková cesta, je stavový automat bez těchto stavů, resp. přechodů (WFSA C na obr. 2.12) ekvivalentnı́. Odstraněnı́ těchto nadbytečných stavů, resp. přechodů se nazývá konexe (Z angl. connection). 36 A:červená/0.5 0 B: zelená/0.300 1 modrá/0 ž lutá/0.600 zelená 2/0.800 červená modrá 0 C: ž lutá 1 2 červená/0.5 červená/0.5 1 červená/0.5 2 zelená/0.300 zelená/0.300 0 3 modrá/0 ž lutá/0.600 4/0.800 Obrázek 2.11: Přı́klad rozdı́lu dvou WFSA C:červená/0.5 A: zelená/0.200 3 4/0.200 červená/0.5 0 0 modrá/0 zelená/0.300 1 zelená/0.300 modrá/0 ž lutá/0.600 1 2/0.800 2/0.800 ž lutá/0.600 červená/0 5 Obrázek 2.12: Přı́klad konexe WFSA 2.6.11 Ekvivalence Dva WFSA jsou ekvivalentnı́, pokud přiřazujı́ stejné ceny pro každou možnou vstupnı́ posloupnost. Ceny mohou být rozmı́stěny odlišně, ohodnocenı́ všech možných úspěšných cest musı́ být zachována. Přı́klad dvou ekvivalentnı́ch WFSA A a B je na obr. 2.13. Dva WFST jsou ekvivalentnı́, pokud mapujı́ stejnou výstupnı́ posloupnost a stejné ohodnocenı́ úspěšných cest. Rozmı́stěnı́ cen podél celkové cesty být identické nemusı́. B: A: 2/0.300 modrá/0.699 0 červená/0.300 1 0 červená/0 1 modrá/0 ž lutá/0.300 2/1.299 ž lutá/0.899 3/0.400 Obrázek 2.13: Přı́klad dvou ekvivalentnı́ch WFSA 37 2.6.12 Nejpravděpodobnějšı́ cesta (cesty) Tato operace je seřazenı́m n úspěšných cest WFSA A vzestupně dle jejich ohodnocenı́. Tak vzniká acyklický WFSA, jak je znázorněno na obr. 2.14, kde WFSA B je pro n = 1 a WFSA C pro n = 3. A: červená/0.5 červená/0.5 1 červená/0.5 zelená/0.300 2 zelená/0.300 0 3 modrá/0 ž lutá/0.600 4/0.800 B: 0 zelená/0.300 1 modrá/0 2/0.800 C: zelená/0.300 <eps>/0 0 <eps>/0 <eps>/0 2 modrá/0 3/0.800 1 4 7 zelená/0.300 červená/0.5 5 8 ž lutá/0.600 6/0.800 červená/0.5 9 zelená/0.300 10 modrá/0 11/0.800 Obrázek 2.14: Přı́klad hledánı́ nejpravděpodobnějšı́ch cest 2.6.13 Náhodná cesta (cesty) Tato operace je n náhodně vybraných celkových cest WFSA A. Tak vzniká podobně jako u předchozı́ operace acyklický WFSA, jak je znázorněno na obr. 2.15, kde WFSA B je pro n = 1 a WFSA C pro n = 3. 2.6.14 Prořezávánı́ Zavedeme-li práh pro cenu celkových cest ct a odstranı́me celkové cesty s cenou většı́, než je tento práh, mluvı́me o prořezávánı́ WFSA. Názorný přı́klad prořezávánı́ (z angl. pruning) WFSA A s ct = 1 je na obr. 2.16. 38 A: červená/0.5 1 červená/0.5 červená/0.5 2 zelená/0.300 zelená/0.300 0 modrá/0 ž lutá/0.600 3 4/0.800 B: 0 červená/0.5 červená/0.5 1 2 červená/0.5 3 zelená/0.300 4 modrá/0 5/0.800 C: červená/0.5 0 červená/0.5 1 zelená/0.300 zelená/0.300 5 7 modrá/0 2 zelená/0.300 3 ž lutá/0.600 4/0.800 6/0.800 modrá/0 8/0.800 Obrázek 2.15: Přı́klad hledánı́ náhodných cest 2.6.15 Skládánı́ Skládánı́3 (z angl. composition) je klı́čovou operacı́ mezi jednotlivými FST. Zápis této operace pro WFST T , který je složen ze dvou WFST R a S je T =R◦S . (2.20) Skládánı́ má za následek vytvořenı́ cesty mapujı́cı́ posloupnost symbolů u na posloupnost symbolů w právě když WFST R mapuje posloupnost u na posl. v a současně WFST S mapuje posl. v na posl. w. Ceny jsou pak výsledkem operátoru ⊗ mezi odpovı́dajı́cı́mi přechody WFST R a S [Moh02a, Roc97]. V úloze rozpoznávánı́ řeči se skládánı́ často použı́vá pro spojovánı́ jednotlivých úrovnı́ reprezentovaných tzv. rozpoznávacı́ kaskádou. Stavy výsledného WFST po operaci skládánı́ (2.20) jsou dány párem stavů jednotlivých WFST R a S, pokud • Počátečnı́ stav je párem počátečnı́ch stavů R a S • Koncové stavy jsou pár koncových stavů R a S • Pro každý pár přechodů tR z r do r0 a tS z s do s0 existuje přechod t z (r, s) do (r0 , s0 ) tak, že výstupnı́ symbol tR je roven vstupnı́mu symbolu tS Přechod t tak přebı́rá vstupnı́ symbol z tR , výstupnı́ z tS a ohodnocenı́ jako ⊗ operaci cen tR a tS . Problematika prázdných přechodů je diskutována např. v [Moh00]. 3 Též možno použı́t i výrazu kompozice 39 A: červená/0.5 1 červená/0.5 červená/0.5 2 zelená/0.300 zelená/0.300 0 modrá/0 ž lutá/0.600 3 4/0.800 B: 0 zelená/0.300 1 modrá/0 ž lutá/0.600 2/0.800 Obrázek 2.16: Přı́klad prořezávánı́ WFSA a:b/0.600 c:a/0.300 a:b/0.100 0 1 a:a/0.400 2 R: 0 3/0.600 b:b/0.5 b:a/0.200 b:c/0.300 1 a:b/0.400 2/0.699 S: c:b/0.900 c:b/0.700 (0,0) a:c/0.400 (1,1) (1,2) a:b/1 a:b/0.800 (3,2)/1.299 T: Obrázek 2.17: Přı́klad skládánı́ dvou WFST Na uvedeném přı́kladě (obr. 2.17) je použit tropický polookruh, operace ⊗ tak znamená součet (ceny sečteny). 2.6.16 Determinizace WFST je deterministický, pokud každý z jeho stavů má nejvýše jeden přechod s daným vstupnı́m symbolem [Moh02a]. Operaci zapisujeme B = det(A) . (2.21) Obrázek 2.18 ukazuje přı́klad determinizace automatu A1 . Napřı́klad vezmeme-li vstupnı́ posloupnost ”ae”, jsou zde 2 úspěšné cesty s cenami {1 + 8 = 9, 3 + 11 = 14}. Minimum 9 je oceněnı́ přiřazované automatem A2 posloupnosti ”ae”. Pro algoritmus v následujı́cı́m výkladu [Moh02a] jsou všechny stavy dosažitelné daným vstupnı́m symbolem z daného stavu vloženy do společné podmnožiny. I když různé cesty s identickou posloupnostı́ vstupnı́ch symbolů mohou dávat různá oceněnı́, pouze minimálnı́ hodnota tohoto oceněnı́ může být výstupem determinizovaného WFSA. Přebývajı́cı́ ceny tak musı́ 40 být zachovány pro zajištěnı́ identičnosti všech úspěšných a nejlepšı́ch cest. Proto podmnožiny použı́vané v algoritmu determinizace obsahujı́ páry (q, w) stavu q a přebývajı́cı́ ceny w. A1 : A2 : Obrázek 2.18: WFSA A1 před determinizacı́ a determinizovaný WFSA A2 Počátečnı́ podmnožina S = {i, 0}, kde i je počátečnı́ stav původnı́ho automatu. Napřı́klad pro automat A1 z obr. 2.18 je počátečnı́ podmnožina {0, 0}. Pro každý symbol a ze vstupnı́ abecedy Σ označujı́cı́ nejméně jeden přechod ze stavu uvnitř podmnožiny S je v nově vznikajı́cı́m automatu vytvořen nový přechod t vedoucı́ z tohoto stavu. Vstupnı́ symbol přechodu t je a a oceněnı́ t je minimum ze všech možných součtů w + l, kde w je přebývajı́cı́ cena a l je váha a-přechodu ze stavu uvnitř podmnožiny S. Cı́lový stav q 0 přechodu t je v podmnožině S 0 = (q 0 , w0 ), kde w0 je patřičná přebývajı́cı́ cena. Napřı́klad stav 0 v A2 odpovı́dá počátečnı́ podmnožině {0, 0} vytvořené algoritmem. Přechod automatu A2 ze stavu 0 se symbolem ”a” je zı́skán ze dvou přechodů se symbolem ”a” ze stavu 0 automatu A1 . Jeho oceněnı́ představuje minimum cen dvou zmiňovaných přechodů a jeho cı́lovému stavu odpovı́dá podmnožina S = {(1, 1 − 1 = 0), (2, 3 − 1 − 2)}. Celý algoritmus determinizace WFSA pomocı́ podmnožin dobře ilustruje automat A2 na obr. 2.18. Na obr. 2.19 je přı́klad determinizace slovnı́ku čı́slovek. Jak je z obrázku vidět, determinizace zajišt’uje jedinečný vstupnı́ symbol pro přechod z každého stavu a sjednocenı́ shodujı́cı́ch se počátečnı́ch cest. Výsledný automat tedy neobsahuje redundantnı́ cesty. Časová náročnost je úměrná n2 , kde n je počet stavů. Je možné dokázat, že ne všechny ohodnocené automaty lze determinizovat. Nicméně platı́, že determinizovat lze každý acyklický WFSA nebo WFST [Moh02a]. Obecně lze řı́ci, že v přı́padech bloků určených pro rozpoznávánı́ řeči je většina automatů také determinizovatelná. 41 0 d:deset 1 d:dva 6 d:dvacet 7 v:<eps> 10 v:<eps> 15 16 s:<eps> 22 A: 2 v:<eps> 9 d:dvanáct o:osm e:<eps> 23 s:<eps> a:<eps> d:<eps> 0 1 v:<eps> 11 a:<eps> 17 m:<eps> c:<eps> n:<eps> 6 e:<eps> c:dvacet a:<eps> 2 s:<eps> B: 5 m:<eps> 12 18 7 8 9 10 n:dvanáct <eps>:dva o:osm 4 t:<eps> 5 e:<eps> á:<eps> t:<eps> 13 c:<eps> 19 14 20 t:<eps> 21 24 3 4 e:<eps> 8 a:<eps> s:<eps> e:deset 3 11 t:<eps> e:<eps> á:<eps> 13 t:<eps> 14 c:<eps> 15 16 17 t:<eps> 18 12 Obrázek 2.19: Přı́klad determinizace jednoduchého lexikonu 2.6.17 Stlačenı́ Pro možnost použitı́ operace minimalizace na ohodnocený konečný automat popsáné nı́že je nutné stlačit oceněnı́ přechodů. Stlačenı́ oceněnı́ je speciálnı́ operace převáhovánı́ (z angl. reweighting) [Moh02a, Moh97a, Moh97b]. Následujı́cı́ výklad tuto operaci popisuje pro tropický polookruh. Pro ostatnı́ typy polookruhů platı́ analogický postup. Každý netriviálnı́ automat může být převáhován nekonečně mnoha způsoby tak, že výsledný automat bude ekvivalentnı́. Předpokládejme, že WFSA A má jeden koncový stav fA . Necht’ V : Q → R je libovolná funkce, nazývaná potencionálnı́ funkce stavů, pomocı́ které se každému ohodnocenı́ (počátečnı́mu λ, přechodovým w(t) i koncovému ρ(fA )) přiřadı́ nové hodnoty λ←λ + V (i) w(t)←w(t) + (V (t+ ) − V (t− )) ρ(fA )←ρ(fA ) + (V (iA ) − V (fA )) . (2.22) Tı́mto způsobem se nezměnı́ celkové ohodnocenı́ žádné z úspěšných cest. Cı́lem operace stlačenı́ cen směrem k počátečnı́mu stavu je nalézt a použı́t takovou potencionálnı́ funkci V splňujı́cı́ rovnice (2.22), aby pro každý stav q ∈ Q platilo V (q) = d(q), kde d(q) je minimum ze všech ohodnocenı́ cesty ze stavu q do koncového stavu fA . Přı́klad operace stlačenı́ WFSA A2 z obr. 2.18 je na obr. 2.20. 2.6.18 Minimalizace Každý deterministický automat může být minimalizován dle dnes již běžných algoritmů [Rev92] Operaci zapisujeme jako B = min(A) . (2.23) 42 A2 : A3 : a/1 b/2 1 b/1 f/9 c/5 0 a/0 e/8 3/0 f/1 c/4 0 d/8 e/11 d/10 e/9 f/12 e/11 2 e/0 1 3/9 e/0 f/1 2 Obrázek 2.20: Přı́klad aplikace stlačenı́ na WFSA A2 Výsledný automat B má po minimalizaci nejmenšı́ možný počet stavů a přechodů ze všech možných deterministických automatů ekvivalentnı́ch původnı́mu automatu A. Minimalizace ohodnoceného konečného automatu přı́mo vyžaduje před vlastnı́m procesem stlačenı́ cen. Přı́klad minimalizace automatu A3 z obr. 2.20 je zobrazen na obr. 2.21. A3 : A4 : a/0 b/1 f/1 b/1 c/4 0 a/0 e/0 1 3/9 d/10 e/11 2 c/4 0 e/0 d/10 f/1 e/11 e/0 f/1 1 2/9 Obrázek 2.21: Přı́klad minimalizace WFSA A3 V přı́padě aplikace minimalizace na ohodnocený překladový automat - WFST je nutnostı́ tento automat převést zakódovánı́m párů vstupně-výstupnı́ch symbolů na WFSA. Jde v podstatě o vytvořenı́ klı́čového WFST s jednı́m stavem mapujı́cı́ho každou použitou kombinaci vstupnı́ch i výstupnı́ch symbolů všech přechodů na nový symbol4 . Ten je pak použit v zakódovaném WFSA jako vstupnı́ symbol. Analogicky je tomu i pro přı́pad dekódovánı́. <eps> a 4 7 n c 9 v d 0 1 e o 2 á 10 e c 8 t 11 6 s 3 s m 5 Obrázek 2.22: Přı́klad minimalizace determinizovaného lexikonu z obr. 2.19 4 Nutno poznamenat, že ceny lze též zakódovat. Je tedy možné v přı́padě nedeterminizovatelného automatu převést WFST na WFSA, resp. na FSA. 43 Minimalizace FSA je celkem výkonný proces; časová náročnost je zde úměrná m + n, resp. m log n pro acyklický přı́pad, resp. obecný přı́pad, kde m je počet přechodů a n počet stavů. Objevily se tak i algoritmy, které minimalizaci pouze aproximujı́ a tı́m je tak celý proces méně hardwarově náročný [Cas03]. Přı́klad minimalizace determinizovaného lexikonu z obr. 2.19 ilustruje obr. 2.22. 44 Kapitola 3 Stavový automat jako rozpoznávacı́ sı́t’ 3.1 3.1.1 Základnı́ topologie Hlavnı́ komponenty G - WFSA reprezentujı́cı́ jazykový model Též nazýváme WFSA gramatiky. Automat by měl začı́nat a končit promluvu modelem ticha. Váhy WFSA zde vždy představujı́ apriornı́ pravděpodobnosti slov, resp. jejich záporné logaritmy. O modelovánı́ samotném bude vı́ce napsáno v kapitolách 1.5 a 6.2. Zjednodušený přı́klad automatu G pro hru šachy je zobrazen na obr. 2.1. Reprezentaci bigramového, resp. trigramového modelu pomocı́ WFSA pro dvě slova ilustruje obr. 3.1, resp. obr. 3.2. w1:w1/P(w1|w1) w2:w2/P(w2|w1) w1:w1/P(w1) 0 1 w2:w2/P(w2|w2) w1:w1/P(w1|w2) 2 w2:w2/P(w2) Obrázek 3.1: Bigramový model pro slova w1 a w2 45 w1/P(w1|w1,w1) w1,w1 w1/P(w1|w1) w1/P(w1) 0 w2/P(w2|w1) w1 w1/P(w1|w2,w1) w2/P(w2|w1,w1) w1/P(w1|w1,w2) w2/P(w2|w2,w1) w1,w2 w2/P(w2|w1,w2) w2,w1 w1/P(w1|w2,w2) w2/P(w2|w2,w2) w2/P(w2) w2 w2/P(w2|w2) w2,w2 w1/P(w1|w2) Obrázek 3.2: Trigramový model pro slova w1 a w2 n 1 2 3 .. . název unigram bigram trigram počet stavů 1 1+k 1 + k + k2 počet přechodů k k + k2 k + k2 + k3 Tabulka 3.1: Složitost n-gramového modelu dle n a počtu slov k L - WFST reprezentujı́cı́ slovnı́k Na obr. 2.2 je ukázka automatu L pro slova ”dva” a ”čtyři”. Vstupnı́ symboly zde reprezentujı́ kontextově nezávislé fonémy a výstupnı́ pak slova, která musı́ náležitě korespondovat s automatem G připravované rozpoznávacı́ sı́tě. Pravděpodobnosti, resp. jejich záporné logaritmy reprezentujı́ alternativnı́ výslovnosti jednotlivých slov. Např. slovo ”čtyři” jak je na obr. 2.2 uvedeno (”čtyři”,”štyři”,”čtyry”,”štyry”). Lze však i patřičný foném vynechat pomocı́ přechodu. C - FST kontextové závislosti Možnosti jak reprezentovat kontextovou závislost fonémů použité v této práci demonstruje obrázek 3.3. Trifónová reprezentace vede na velký počet modelů (teoreticky 423 = 74088, v praxi se však použije kolem 10000) a tedy i na komplexnějšı́ rozpoznávacı́ sı́t’. Difónová reprezentace na obr. 3.3c dle [Nou04] pak představuje vhodný kompromis mezi monofonnı́ a trifónovou reprezentacı́ akustických modelů. Počet difónů je teoreticky 422 = 1764, při experimentech použito 1108. Dalšı́ výhodou této difónové reprezentace je snı́ženı́ počtu stavů modelů na dva. 46 <sil> c <sil> c+ii ii l <sil> c−ii+l ii−l <sil> a) b) <sil> c c+ii ii ii+l l <sil> c) Obrázek 3.3: Slovo ”cı́l” reprezentováno modely a) monofónů b) trifónů c) difónů FST mapujı́cı́ kontextově závislé fonémy (trifóny, resp. difóny) na kontextově nezávislé. Automat C pro trifóny je poměrně komplexnı́, nebot’ obsahuje n2 + n + 1 stavů a n3 + 2n2 + n přechodů, kde n je počet fonémů. Na obr. 3.4 je z důvodů přehlednosti zobrazen automat C pouze pro dva fonémy. Vstupnı́ posloupnost ”a b a a” bude mapována na ”a+b a-b+a b-a+a a+a”, resp. na ”a/ b b/a a a/b a a/a ” použijeme-li HTK, resp. AT&T značenı́ trifónů. a:a <sp>:sp <sil>:sil 1 a:a−a a:a−a+a a:b−a a:b−a+a 3 <sp>:sp <sil>:sil a:a+a a:a−a+b 4 b:b+a b:a−b+a 0 a:a+b a:b−a+b 5 b:a−b b:b−b+a b:b+b b:a−b+b b:b−b+b <sp>:sp 6 b:b−b 2 <sil>:sil b:b Obrázek 3.4: Přı́klad FST kontextové závislosti pro trifóny 47 Automat C pro difóny byl navržen tak, aby reprezentoval modelovánı́ slov difóny dle [Nou04]. Vstupnı́ posloupnost ”a b a a” tak bude automatem z obr. 3.5 mapována na ”a a+b b b+a a a+a a”. <eps>:a <eps>:a a:a <sp>:sp <sil>:sil <sp>:sp 1 2 a:a+a 5 a:b+a b:a+b 3 <sil>:sil 0 <eps>:b <sil>:sil 4 b:b+b 6 <eps>:b b:b <sp>:sp Obrázek 3.5: Přı́klad FST kontextové závislosti pro difóny Opačného mapovánı́ (automat C −1 ) dosáhneme inverzı́ automatu. Poznamenejme, že bezkontextové fonémy (”<sil>” a ”<sp>”) musı́ být mapovány samy na sebe jak je vidět na obrázcı́ch 3.4 a 3.5. H - WFST reprezentujı́cı́ časové domény HMM Markovovy modely se skládajı́ ze dvou částı́. Jedna reprezentuje spektrálnı́ charakter modelovaných částı́ promluvy a druhá pak charakter časový (dobu trvánı́ jednotlivých úseků) [Rab93, Moh02a]. Právě časová doména HMM je obecně reprezentovatelná ohodnoceným překladovým automatem. Zjednodušený přı́klad automatu H pro 5 modelů je uveden na obr. 3.6. sil#0:<eps>/2.424 sil#1:<eps>/0.054 sil#2:<eps>/0.077 sil#0:<eps>/0.185 sil#0:<eps>/2.520 2 sil#1:<eps>/2.929 3 sil#2:<eps>/3.284 4/0 1 sil#2:<eps>/3.285 <eps>:sil/0 sp#1:<eps>/0.185 5 sp#1:<eps>/2.520 6/0 <eps>:sp/0 a−k+c#0:<eps>/0.531 0 <eps>:a−k+c/0 <eps>:b−n+ou/0 7 a−k+c#0:<eps>/0.886 b−n+ou#0:<eps>/0.656 <eps>:ss−p+a/0 11 b−n+ou#0:<eps>/0.731 ss−p+a#0:<eps>/0.501 15 ss−p+a#0:<eps>/0.931 a−k+c#1:<eps>/0.980 8 b−n+ou#1:<eps>/0.750 12 ss−p+a#1:<eps>/0.907 16 a−k+c#2:<eps>/0.695 a−k+c#1:<eps>/0.469 9 a−k+c#2:<eps>/0.691 10/0 b−n+ou#2:<eps>/1.082 b−n+ou#1:<eps>/0.638 13 b−n+ou#2:<eps>/0.413 14/0 ss−p+a#2:<eps>/1.194 ss−p+a#1:<eps>/0.516 17 ss−p+a#2:<eps>/0.360 18/0 Obrázek 3.6: Přı́klad vytvořenı́ HMM WFST 48 3.1.2 Rozpoznávacı́ sı́t’ Máme-li připravené čtyři výše zmı́něné komponenty v podobě stavových automatů, můžeme zkomponovat rozpoznávacı́ sı́t’. Protože automaty H a L jsou acyklické, je nutné na ně před vlastnı́ kompozicı́ aplikovat operaci uzavřenı́. Přı́klad uzavřeného H automatu je na obr. 3.7. Výslednou rozpoznávacı́ sı́t’ RN je možné obdržet jako RN = min(det(H ◦ det(C ◦ det(L ◦ G)))) , (3.1) RN = min(det(H ◦ det(L ◦ G))) , (3.2) resp. máme-li k dispozici modely kontextově závislých, resp. nezávislých fonémů. Poznamenejme, že v [Moh02a] autoři poukazujı́ na nutnost zavedenı́ pomocných symbolů pro odlišenı́ homonym coby fonémů na konci slov se stejnou výslovnostı́ ve slovnı́ku. Zatı́mco angličtina je jazyk s vysokým výskytem homonym stejně znějı́cı́ch, ale jinak se zapisujı́cı́ch (např. ”read” - ”red”), homonyma v češtině se v drtivé většině přı́padů čtou a zapisujı́ stejně (např. ”pila”). Z vlastnı́ch zkušenostı́ mohu konstatovat že tento postup nenı́ pro češtinu nezbytný. sil#2:<eps>/3.285 sil#2:<eps>/0.077 sil#0:<eps>/0.185 sil#0:<eps>/2.424 1 sil#0:<eps>/2.520 <eps>:sil/0 sil#1:<eps>/2.929 3 sil#1:<eps>/0.054 sil#2:<eps>/3.284 2 4/0 <eps>:<eps>/0 <eps>:<eps>/0 sp#1:<eps>/0.185 a−k+c#2:<eps>/0.691 a−k+c#2:<eps>/0.695 sp#1:<eps>/2.520 5 <eps>:sp/0 10/0 6/0 <eps>:<eps>/0 19/0 <eps>:<eps>/0 0 a−k+c#1:<eps>/0.469 9 a−k+c#1:<eps>/0.980 <eps>:a−k+c/0 a−k+c#0:<eps>/0.531 a−k+c#0:<eps>/0.886 <eps>:b−n+ou/0 8 7 b−n+ou#0:<eps>/0.656 b−n+ou#0:<eps>/0.731 11 b−n+ou#1:<eps>/0.750 12 b−n+ou#2:<eps>/1.082 b−n+ou#1:<eps>/0.638 13 b−n+ou#2:<eps>/0.413 14/0 <eps>:<eps>/0 <eps>:<eps>/0 <eps>:ss−p+a/0 ss−p+a#0:<eps>/0.501 15 ss−p+a#0:<eps>/0.931 ss−p+a#1:<eps>/0.907 ss−p+a#2:<eps>/0.360 ss−p+a#2:<eps>/1.194 ss−p+a#1:<eps>/0.516 16 18/0 17 Obrázek 3.7: Uzavřený HMM WFST z obr. 3.6 49 Část II Softwarové nástroje 50 Kapitola 4 Úvod Na poli rozpoznávánı́ řeči bylo vyvinuto mnoho nástrojů, jejich aktuálnı́ seznam je možné nalézt např. na [wwwa]. V následujı́cı́ch kapitolách bude přiblı́žen nástroj Hidden Markov Model Toolkit - HTK [wwwb], který je šı́řen jako open-source a nástroje firmy AT&T [Moha, Mohb, Allb], které jsou dostupné pouze v binárnı́m formátu. Je potřeba poznamenat, že nynı́ lze nově velmi efektivně namı́sto FSM knihovny použı́t jejı́ otevřenou variantu od stejných autorů nazvanou OpenFst [Ril] napsanou v jazyce C++. Pro realizaci uvedených operacı́ automatů s konečnými stavy jsou použity FSM knihovny v4.0 od AT&T (Mohri a kol. 2000). Z volně dostupných knihoven je tato jedna z nejvýkonnějšı́ch, avšak je dostupná pouze v binárnı́ formě. Pro natrénovánı́ HMM reprezentujı́cı́ch české trifóny je použit HTK toolkit v3.2.1 [wwwb]. Data pro trénovánı́ pocházejı́ z řečové databáze SPEECON (cca 800 mluvčı́ch), která je pro studentské účely k dispozici na katedře teorie obvodů FEL ČVUT. Pro zpracovánı́ dat při trénovánı́ pomocı́ HTK a transformace HTK lattice formátu na AT&T FSM formát byl napsán program hdp - HTK data preparation toolkit. Pro vytvořenı́ překladových automatů H, C, L, G z volného textu, či mlf souborů a vytvořenı́ dopředného nedeterministického automatu z rozpoznávacı́ kaskády je vyvı́jen program rct - recognition cascade toolkit. Ten v současné době umožňuje tyto následujı́cı́ významné operace: • vytvořit sı́tě H, C, L, G a tı́m kompletnı́ rozpoznávacı́ kaskádu ve formátu soborů AT&T • aplikovat Viterbiho algoritmus na rozpoznávacı́ sı́t’ HLG, resp. HCLG • konvertovat akustické modely vytvořené nástrojem HTK na ATT formát • zı́skávat cenná data z Českého národnı́ho korpusu • použı́vat stejné indexy shlukovaných stavů jako moduly HTK knihoven 51 Ze současných významných veřejně dostupných zdrojů dat bych uvedl otevřený repozitář VoxForge [wvo], který je založen na tzv. volně dostupných audioknihách LibriVox [wli] publikovaných jako volné dı́lo. Hlavnı́m jazykem je zde angličtina. Za významné projekty v oblasti rozpoznávánı́ řeči považuji: • Julius [Jul] open source LVCSR systém podporujı́cı́ jazykové modely ve formátu ARPA a akustické modely v HTK formátu. V rámci projektu jsou i nabı́zeny data pro japonštinu (angličtina pouze pro nekomerčnı́ využitı́). • CMU Sphinx [wsp] open source LVCSR systém šı́řen pod BSD licencı́, v rámci projektu dostupné open source modely pro angličtinu. Dostupný je též port pro pocket PC. • ISIP ASR projekt [wIS] open source LVCSR systém šı́řený jako volné dı́lo. 52 Kapitola 5 HTK Hidden Markov Model Toolkit - HTK představuje kompletnı́ nástroje pro trénovánı́ skrytých Markovových modelů libovolné topologie a s n-rozměrným normálnı́m rozdělenı́m emitujı́cı́ch stavů pro volitelné n, volitelný počet směsı́ normálnı́ch hustotnı́ch funkcı́ a volitelný počet datových proudů s možnostı́ sdı́lenı́ na všech možných úrovnı́ch HMM. Vyčerpávajı́cı́ popis nástrojů HTK je uveden v [You02]. Uved’me jen, že HTK dále poskytuje komplexnı́ nástroje pro parametrizaci dat, rozpoznávánı́ a editovánı́ HMM. Nástroje, které byly v práci použity zde budou popsány v takové složitosti v jaké byly použı́vány. 5.1 Parametrizace HCopy - nástroj pro parametrizaci, resp. konverzi zvukových souborů. Použity následujı́cı́ univerzálnı́ parametry: -S fn soubor fn představuje seznam cest vstupnı́ch a výstupnı́ch souborů promluv. -C fn fn - konfiguračnı́ soubor, jehož přı́klad s nejdůležitějšı́mi parametry je uveden nı́že. #Coding Params - pages 298 - 301 in HTK Book SOURCEKIND = WAVEFORM SOURCEFORMAT = NOHEAD SOURCERATE = 625 #vzorkovacı́ frekvence (x 100 ns) TARGETKIND = MFCC_E_D_A #druh parametrizace TARGETRATE = 100000.0 #segmentace - posouvánı́ okna (x 100ns) WINDOWSIZE = 250000.0 #délka okna (x 100ns) USEHAMMING = T #násobenı́ vst. segmentu Hammingovým okénkem PREEMCOEF = 0.97 #koeficient preemfaze NUMCHANS = 26 #pocet kanalu banky filtru CEPLIFTER = 22 #koeficient kepstrálnı́ liftrace NUMCEPS = 12 #počet kepstrálnı́ch koeficientů 53 ENORMALISE = T #USESILDET = T #normalizace podle energie #použitı́ detektoru řeč/pauza (F) Zde uváděný konfiguračnı́ soubor byl použit v experimentech. Konfigurace je nastavena pro vstupnı́ soubory se vzorkovacı́ frekvencı́ 16kHz, použita parametrizace na 12 Melovských kepstrálnı́ch koeficientů plus energie, z toho pak dalšı́ch 13 delta a 13 akceleračnı́ch koeficientů. Význam ostatnı́ch parametrů je možné dohledat v [You02]. konfiguračnı́ho souboru. 5.2 Trénovánı́ modelů HCompV - nástroj pro výpočet globálnı́ střednı́ hodnoty µ a kovariančnı́ matice Σ, resp. jejı́ diagonály r. Použitı́: HCompV [univ. volby] [hmm] Soubor hmm představuje definici topologie jednoho HMM. Přı́klad pro HMM s 2rozměrným normálnı́m rozdělenı́m: ~o~<VecSize> 2 <MFCC> ~h "proto1" <BeginHMM> <NumStates> 5 <State> 2 <Mean> 2 0.0 0.0 <Variance> 2 1.0 1.0 <State> 3 <Mean> 2 0.0 0.0 <Variance> 2 1.0 1.0 <State> 4 <Mean> 2 0.0 0.0 <Variance> 2 1.0 1.0 <TransP> 5 0.0 1.0 0.0 0.0 0.0 0.6 0.4 0.0 0.0 0.0 0.6 0.4 0.0 0.0 0.0 0.7 0.0 0.0 0.0 0.0 <EndHMM> 0.0 0.0 0.0 0.3 0.0 Seznam univerzálnı́ch voleb: 54 -S fn -M dn -c dn -m soubor fn představuje seznam cest souborů s přı́znaky adresář dn představuje cı́lovou cestu k uloženı́ HMM (soubor dn/hmmdefs)s globálnı́mi parametry µ a Σ, resp. r odhad globálnı́ch střednı́ch hodnot (zapsáno jako jeden vektor) do adresáře dn obnovenı́ střednı́ch hodnot v HMM def. souboru HERest - nástroj pro trénovánı́ HMM využı́vajı́cı́ zapouzdřenou verzi Baum-Welchova algoritmu [Rab93, You02]. Použitı́: HERest [univ. volby] hmmList Soubor hmmList je obsahuje seznam názvů všech HMM. Pokud jsou dva názvy HMM vedle sebe, prvnı́ je tzv. logickým HMM přiřazeným k následujı́cı́mu fyzickému HMM. Rozdı́l mezi log. a fyz. HMM spočı́vá pouze v jeho jméně, parametry jsou shodné (soubor hmmdefs tak obsahuje pouze definice fyzických HMM). V následujı́cı́m přı́kladě HMM seznamu jsou logickými HMM uu-nn+e, i-k+n a m-ii+v. u-tt+ii uu-nn+e nn+uu i-k+n ss-k+uu m-ii+v m-ii+m ...atd... Seznam univerzálnı́ch voleb: -S fn -H fn -I fn -M dn -s fn -t f [i l] 5.3 HHEd soubor fn představuje seznam cest souborů s přı́znaky cesta k původnı́mu definičnı́mu souboru fn (hmmdefs) HMM cesta ke vstupnı́mu mlf souboru fn s fonetickým přepisem vět adresář dn představuje cı́lovou cestu k uloženı́ definičnı́ch souborů HMM po natrénovánı́ (soubor dn/hmmdefs). uloženı́ záporných součtů log. pravděpodobnostı́ všech stavů (5.2) do souboru fn (soubor stats - viz dále) nastavenı́ prahu prořezávánı́ na hodnotu f [You02, Psu06]. V přı́padě zadánı́ koeficientů i a l je práh zvětšen o hodnotu i a proces se opakuje dokud neprojde, nebo nenastane celkem l opakovánı́ Shlukovánı́ kontextově závislých fonémů - editor HMM definičnı́ch souborů hmmdefs. Použitı́: HHEd [univ. volby] fn.hed hmmList 55 Kde fn.hed je soubor s přı́kazy editoru - přı́klady těch nejpoužı́vanějšı́ch budou uvedeny dále a hmmList je seznam názvů HMM k editaci. Nejpoužı́vanějšı́ univerzálnı́ volby byly H a M, které jsou identické s nástrojem HERest. 5.3.1 shlukovánı́ řı́zené daty Chceme-li použı́t shlukované stavy HMM, máme dvě možnosti jak vlastnı́ shlukovánı́ provést. Prvnı́ je poměrně jednoduché shlukovánı́ řı́zené daty [You02, Psu06], kde se použı́vá vztah vážené Euklidovy vzdálenosti mezi shluky i a j v u n u 1 X (µik − µjk )2 d(i, j) = t , (5.1) n σik σjk k=1 kde µlk a σlk jsou k-té prvky vektorů střednı́ hodnoty µl a směrodatné odchylky σ l nrozměrného normálnı́ho rozdělenı́ hustoty pravděpodobnosti ve stavu l. Obsahujı́-li shluky vı́ce stavů, vybı́rá se největšı́ vzdálenost mezi stavy. Shlukovánı́ daty však neumožňuje ”vyrobit” nové trifóny, které se při trénovánı́ nevyskytly. Tento závažný nedostatek řešı́ druhá metoda shlukovánı́. 5.3.2 shlukovánı́ založené na fonetických rozhodovacı́ch stromech Následujı́cı́ konfiguračnı́ soubor pro nástroj HHEd definuje množinu otázek (za přı́kazem TR 0) a udává způsob jakým se majı́ tvořit shlukované stavy (za přı́kazem TR2) RO TR QS QS QS 7000.0 data/stats 0 ’L_similar2’ { "j-*","i-*","ii-*" } ’L_fr_bk_vowel19’ { "uu-*","oo-*","aa-*","u-*","o-*","a-*" } ’R_sylab_maker1’ { "*+l","*+r","*+uu","*+u","*+ou","*+oo","*+o","*+ii", "*+i","*+eu","*+ee","*+e","*+au","*+aa","*+a" } QS ’L_sylab_maker1’ { "l-*","r-*","uu-*","u-*","ou-*","oo-*","o-*","ii-*", "i-*","eu-*","ee-*","e-*","au-*","aa-*","a-*" } QS ’R_fr_bk_vowel2’ { "*+e","*+i" } QS ’L_similar1’ { "j-*","i-*" } ...atd... TR 2 TB 720.0 "c2_" {(c, *-c, *-c+*, c+*).state[2]} TB 5000.0 "c3_" {(c, *-c, *-c+*, c+*).state[3]} TB 720.0 "c4_" {(c, *-c, *-c+*, c+*).state[4]} ...atd... NC 1 "a3_" {(*-a+*,a+*,*-a).state[3]} 56 ...atd... TR 1 CO "data/tiedlist" ST "data/trees" Přı́kaz NC definuje shlukovánı́ řı́zené daty. Je uveden čistě demonstrativně a doporučuji ho nepoužı́vat kvůli následné nemožnosti syntetizovat trifóny nevyskytujı́cı́ se v trénovacı́m setu. Soubor stats je zı́skán pomocı́ parametru -s stats nástroje HERest a každá řádka obsahuje čı́slovánı́ trifónů, jejich název, počet výskytů v trénovacı́m setu a sumy záp. log. pravděpodobnostı́ X − log P (Oi |µp , rp ) (5.2) i stavů s. Přı́klad souboru stats je uveden nı́že. 1 "u-p+uu" 2 "ss-k+uu" 3 "v-zz+e" 4 "ou-k+e" 417 "a-c+ii" 954 "aa-c+e" 1015 "aa-c+l" ...atd... 1 5 5 13 659 377 106 1.108081 1.861922 2.626662 12.010897 7.986808 6.997828 5.025526 5.459836 14.221378 23.159161 19.077389 23.544138 944.080566 1541.300659 2397.085938 1171.068481 1108.445679 1834.993164 280.616699 247.487595 414.357513 Postup konstrukce fonetického rozhodovacı́ho stromu fonému *-c+*: - přı́klad pro 3. (prostřednı́) stav 1. do počátečnı́ho dělenı́ jsou vybrány všechny prostřednı́ stavy pro fonémy typu *-c+* (soubor stats) - množina S = {s1 , . . . , sK }. Necht’ jsou tyto stavy svázány tak, že tvořı́ jediný stav se záp. log. pravděpodobnostı́ H(S) = − X log P (Oi |µp , rp ) . (5.3) i 2. pro všechny otázky v konfiguračnı́m souboru pro HHEd je napočı́tána hodnotı́cı́ funkce vypovı́dajı́cı́ kvalitu (strmost Gaussových křivek) rozdělenı́ množiny všech stavů na dvě skupiny −[H(S I )|q + H(S II )|q ] + H(S) , (5.4) kde H(S I )|q , resp. H(S II )|q jsou záp. logaritmy shlukovaných stavů platné pro kladnou (I), resp. zápornou (II) odpověd’ na otázku q podobně jako v (5.3). 57 3. vybere se otázka s největšı́ hodnotı́cı́ funkcı́ a přiřadı́ se dělicı́mu uzlu. Pokud H(S I )|q , resp. H(S II )|q je menšı́, než zvolený práh (zde 5000), vytvořı́ se i-tý shlukovaný stav pro prostřednı́ stavy množiny fonémů *-c+* CC3_i. V opačném přı́padě se vytvořı́ nový uzel. 4. vybere se dalšı́ uzel bez přiřazené otázky, označı́ se za dělicı́ a proces se opakuje od bodu 2 dokud nejsou vyčerpány všechny uzly. j−* i−* ii−* + − uu−* oo−* aa−* u−* o−* a−* + j−* i−* + − l−* r−* uu−* u−* ou−* oo−* *+l *+r *+uu *+u *+ou *+oo o−* ii−* i−* eu−* ee−* e−* *+o *+ii *+i *+eu *+ee *+e au−* aa−* a−* *+au *+aa *+a + − + − *+e *+i + C3_3 C3_4 C3_6 − C3_7 C3_5 − C3_1 C3_2 Obrázek 5.1: Přı́klad fonetického rozhodovacı́ho stromu 5.4 Vytvořenı́ libovolného modelu pomocı́ rozhodovacı́ho stromu Rozhodovacı́ stromy pro jednotlivé stavy trifónů vytvořené výše uvedeným postupem použijeme k vytvořenı́ setu trifónů pro danou testovacı́ množinu dat, resp. set trifónů. Nı́že uvedený výpis ukazuje přı́klad stromu (soubor trees) pro prostřednı́ stav (3) všech trifónů typu *-c+*. QS ’L_similar2’ { "j-*","i-*","ii-*" } QS ’L_fr_bk_vowel19’ { "uu-*","oo-*","aa-*","u-*","o-*","a-*" } QS ’R_sylab_maker1’ { "*+l","*+r","*+uu","*+u","*+ou","*+oo","*+o","*+ii", "*+i","*+eu","*+ee","*+e","*+au","*+aa","*+a" } QS ’L_sylab_maker1’ { "l-*","r-*","uu-*","u-*","ou-*","oo-*","o-*","ii-*", "i-*","eu-*","ee-*","e-*","au-*","aa-*","a-*" } QS ’R_fr_bk_vowel2’ { "*+e","*+i" } QS ’L_similar1’ { "j-*","i-*" } 58 ...atd... c[3] { 0 -1 -2 -3 -4 -5 } ...atd... ’L_similar2’ ’L_fr_bk_vowel19’ ’R_sylab_maker1’ ’L_sylab_maker1’ ’R_fr_bk_vowel2’ ’L_similar1’ -1 -3 "c3_4" -4 "c3_1" "c3_6" -5 -2 "c3_5" "c3_3" "c3_2" "c3_7" Obr. 5.1 pak ukazuje jeho podobu. Nı́že je uveden přı́klad konfiguračnı́ho souboru pro nástroj HHEd, kde soubor trees představuje rozhodovacı́ stromy pro všechny stavy, soubor tr2.mod požadovaný seznam trifónů a soubor tie pak výstupnı́ seznam trifónů s definicemi logických HMM. "LT data/trees" "AU tr2.mod" "CO tie" 5.5 Rozpoznávánı́ HVite - dekodér na bázi Viterbiho algoritmu. Umožňuje rozpoznávánı́ pomocı́ zadané sı́tě na úrovni slov (soubor wdn), slovnı́ku (soubor dict) a seznamu HMM (hmmList). Použitı́: HHEd [univ. volby] fn.hed hmmList Seznam univerzálnı́ch voleb: 59 -S fn -H fn -w fn -s i -t f [i l] -r f -p f -v f -a -I fn -i fn -b silence soubor fn představuje seznam cest souborů s přı́znaky cesta k definičnı́mu souboru fn (hmmdefs) HMM soubor fn představuje sı́t’ na úrovni slov (wdn) nastavenı́ násobenı́ vah sı́tě wdn na hodnotu i, standardně nastaveno 1 pásové prořezávánı́ na práh f. V přı́padě módu zarovnávánı́ a zadánı́ koeficientů i a l je při neúspěšném zarovnánı́ práh zvětšen o hodnotu i a proces se opakuje do úspěšného zarovnánı́, nebo dosaženı́ hodnoty prahu l nastavenı́ násobitele pravděpodobnosti alternativnı́ výslovnosti na f (slovnı́k obsahuje pro jedno slovo vı́ce fon. přepisů), standardně 1 nastavenı́ log. pravděpodobnosti vloženı́ slova na f, standardně 0 povolenı́ prořezávánı́ na koncı́ch slov a nastavenı́ prahu f mód zarovnávánı́ - vstupnı́ promluvy jsou známy (mlf soubor, parametr -I), program tak navrátı́ časové úseky jednotlivých fonémů (mlf soubor definovaný parametrem -i) fn definuje vstupnı́ mlf soubor pro mód zarovnávánı́ fn definuje výstupnı́ mlf soubor pro mód zarovnávánı́ použitı́ slova silence jako hranice vět v módu zarovnávánı́ přı́klad wdn: přı́klad dict: VERSION=1.0 N=7 L=7 I=0 W=!NULL I=1 W=!NULL I=2 W=silence I=3 W=ano I=4 W=!NULL I=5 W=ne I=6 W=silence J=0 S=6 E=1 J=1 S=0 E=2 J=2 S=2 E=3 J=3 S=3 E=4 J=4 S=5 E=4 J=5 S=2 E=5 J=6 S=4 E=6 silence [] sil ano čtyři devět dva dvě jedna ne nula osm pět sedm šest tři 3 !NULL 2 silence ano 0 !NULL 5 a n o sp cc t i rr i sp d e v j e t sp d v a sp d v j e sp j e d n a sp n e sp n u l a sp o s m sp p j e t sp s e d m sp ss e s t sp t rh i sp 6 silence 1 !FINAL 0 ne Obrázek 5.2: Přı́klad realizace rozp. sı́tě ano-ne souborem wdn 60 HResult - nástroj pro porovnávánı́ mlf souborů - nejčastěji základnı́ho (známého) a výstupnı́ho (obdrženého z rozpoznávače) - rec.mlf. Použitı́: HResult [univ. volby] hmmList rec.mlf Seznam univerzálnı́ch voleb: -I fn -t fn definuje vstupnı́ mlf soubor do výpisu přidá i srovnánı́ nesprávně rozpoznaných vět Základnı́ formát výpisu vypadá následovně ------------------------ Overall Results -------------------------SENT: %Correct=89.03 [H=138, S=17, N=155] WORD: %Corr=97.83, Acc=97.60 [H=856, D=7, S=12, I=2, N=875] =================================================================== kde H znamená počet správných, N počet celkových, D počet ztracených, S nahrazených a I počet přidaných položek v rozpoznaném mlf souboru. Úspěšnost počı́tána jako H Corr = × 100% N a přesnost H −I Acc = × 100% . N počet je vy(5.5) (5.6) 61 Kapitola 6 AT&T nástroje Podobně jako v kapitole 5 zde bude uveden pouze nejčastěji použı́vaný výčet nástrojů s jejich volitelnými parametry při konstrukcı́ch rozpoznávačů. 6.1 6.1.1 knihovna DCD Stavba RN dmake - nástroj pro stavbu optimalizované rozpoznávacı́ sı́tě z jednotlivých komponent pomocı́ jejich optimalizace a postupné kompozice zprava doleva, tak jak je zadáno v jeho parametrech. Vlastnosti jednotlivých komponent je dobré blı́že specifikovat (parametry -a, -b, -n před názvem souboru reprezentujı́cı́ komponentu pomocı́ FSM - viz nı́že). Použitı́: dmake [-a fsm | -b fsm | -n fsm | -f file | -c c | -l l | -mv? ] Použity následujı́cı́ parametry: -a fn -b fn -n fn -m -v označuje soubor fn za acyklický překladový automat. Ten je před vlastnı́ kompozicı́ dán programem do jednoznačné podoby a uzavřen. Přı́kladem je reprezentace slovnı́ku a časové části HMM modelů. Výstupnı́ symboly a váhy by měly být co nejvı́ce stlačeny k počátečnı́mu stavu. označuje soubor fn za bi-determinizovatelný překladový automat, t.j. lze determinizovat automat samotný i jeho inverznı́ variantu. Přı́kladem je reprezentace jazykového modelu a FST kontextové závislosti. označuje soubor fn za blı́že nespecifikovaný. Může tak být označena libovolná komponenta v přı́padě neúspěšnosti zadánı́ výše zmı́něných typů. minimalizuje1 všechny vstupnı́ části i zkomponovaný výsledný automat. verbose výstup na stderr. 62 Následujı́cı́ přı́klad demonstruje zkomponovánı́ rozpoznávacı́ sı́tě z WFST časové části HMM hmm.fst, FST kontextové závislosti cntx.fst, WFST slovnı́ku lex.fst a WFSA jazykového modelu gram.fst. , dmake -mv -a hmm.fst -b cntx.fst -a lex.fst -b gram.fsa >hclg.fst 6.1.2 Přı́prava modelů amcompile - nástroj pro konverzi textové reprezentace HMM modelů definovaných v textovém AT&T DCD (obdržených např. programem rct - viz kap. 7.7) na binárnı́ formát pro nástroj drecog. Formát AT&T DCD akustických modelů je podrobněji popsaném v kapitole 7.7. Použitı́: amcompile hmmset.am kde soubor hmmset.am obsahuje seznam jednotlivých úrovnı́ HMM modelů tak jak je popsáno v kap. 7.7. Binárnı́ reprezentace se pak nacházı́ na stdout. 6.1.3 Rozpoznávánı́ drecog - nástroj pro rozpoznávánı́ na základě zadané RN (hclg.fst), akustických modelů (model.am) a seznamu cest vstupnı́ch promluv (fea.scp). Použitı́ pro rozpoznávánı́: drecog [univ. parametry] drecog.conf fea.scp kde drecog.conf je konfiguračnı́ soubor jehož přı́klad je uveden nı́že. # komentáře lze psát pouze na nový řádek, nikoliv jak je uvedeno následovně # vyžadované parametry: fsms data/hclg.fst #cesta k~rozpoznávacı́ sı́ti, nepovinné pro zarov. model data/model.am #cesta k~binárnı́ reprezentaci AT&T DCD HMM beam 20 #hodnota pásového prořezávánı́ dur_mult 1 #násobitel koef. setrvánı́ ve stavu gram_mult 1 #násobitel jazykového modelu self_loop false #false - smyčky rozvinuty v~zadané RN model_level state #state - úroveň stavů HMM, model - úroveň HMM #volitelné parametry final_state_mode prefer #ignore|prefer (def.)|require arcs_max 10000 #max. počet hypotéz na segment (default: INT_MAX) response_type onebest #onebest (def.),lattice - výst. mřı́žka hyp. prom. suppress_labels int1 int2 #konverze výst symbolů na <eps> - (sil) 63 kde dur mult a gram mult jsou při výpočtu celkové váhy total svázány dle total = ac dur mult + dc + gc , gram mult gram mult (6.1) kde ac jsou váhy akustických modelů, dc váhy koeficientů setrvánı́ ve stavu jsou-li použity (jinak 0) a gc váhy jazykového modelu. Pro zarovnávánı́, resp. ”podrobné” rozpoznávánı́ je nutné specifikovat souborem fsmlist bud’ seznam cest k automatům, nebo far archiv reprezentujı́cı́ jednotlivé RN (v nejjednoduššı́m přı́padě RN reprezentujı́cı́ jedinou možnou větu - přı́pad zarovnávánı́). Použitı́: drecog [univ. parametry] drecog.conf fsmlist fea.scp Použity následujı́cı́ parametry: -i str -X -v 6.2 zadánı́ formátu vstupnı́ch promluv, kde str může být bud’ ”raw” - pouze data bez hlavičky, ”blasr”, či ”ssw” (default), přičemž poslednı́ dva uvedené formáty nejsou obecně známy. nastavenı́ big-endian pro vstupnı́ promluvy při použitı́ parametru -i raw verbose výstup - vypisujı́ se na stderr následujı́cı́ informace: utt: - pořadı́ promluvy, recog: 1 = rozpoznávánı́ proběhlo úspěšně (0 např při prázdném vstupu), final: 1 = při rozpoznávánı́ bylo dosaženo koncového stavu, nframes: - počet vektorů přı́znaků v promluvě, nres: - počet výstupnı́ch FSM na promluvu, nres: - průměrný počet aktivnı́ch přechodů (hypotéz) na jeden segment, time:.- doba rozpoznávánı́ dané promluvy [sec]. grmtools 6.2.1 Vytvořenı́ statistického jazykového modelu grmcount - nástroj pro vytvořenı́ čı́tacı́ho FSM, pro pozdějšı́ modelovánı́ gramatiky nástrojem grmmake. Nástroj počı́tá výskyt všech možných cest všech automatů uvedeném ve far archivu (stdin) - zı́skaného např. z textu nástrojem farcompilestrings. Výstupem je tzv. čı́tacı́ fsm. Např. z následujı́cı́ho textů (převedených do tvaru konečných automatů nástrojem farcompilestrings) - soubor grmdes.txt vznikne pro bigramovou verzi automat na obr. 6.1 byl měl měl měl by by by to to měl to to zkusit zkusit 64 Přı́klad použitı́: farcompilestrings grmdes.txt -i grmdes.lab|\ grmcount -n2 -s"<st>" -f"<en>" -i grmdes.lab>cnt.fsm grmdes.lab je soubor symbolů pro far-archiv. Výsledný automat cnt.fsm je zobrazen na obr. 6.1. Použity následujı́cı́ parametry: 2/0 byl/1 měl/3 <st>/4 3/0 by/1 byl/1 to/3 4/0 by/3 měl/1 <en>/1 0/0 to/4 5/0 měl/4 1/0 zkusit/2 <en>/1 6/0 by/2 to/1 <en>/4 zkusit/2 <en>/2 7/0 Obrázek 6.1: Přı́klad čı́tacı́ho automatu -n n -s i ”s” -f i ”s” -i fn čı́tánı́ pro n-gram řádu n. specifikace symbolu začátku věty (nevyskytujı́ se ve vstupnı́m textu). Možné bud’ indexem symbolu i, nebo symbolem samotným ”s” - v tom přı́padě nutné specifikovat soubor symbolů parametrem -i specifikace symbolu konce věty, platı́ stejné podmı́nky jako pro parametr -s. specifikace souboru symbolů fn grmmake - nástroj vytvořı́ jazykový model stdout dle čı́tacı́ho FSM stdin. Implicitnı́ metoda vyhlazovánı́ je Katzův model (viz kapitola 1.5.2). Je možné použı́t i model s absolutnı́m diskontem (viz kapitola 1.5.2), nebo vyhlazovánı́ vypnout [Allb]. Přı́klad z obr. 6.1 je na obr. 6.2. 65 zkusit/0.698 <en>/1.504 to/1.504 3 <eps>/4.080 to/0.003 <en>/1.396 měl/1.396 0/0 <en>/1.396 by/1.791 1 zkusit/2.197 <eps>/5.046 to/1.396 <eps>/5.451 7 <eps>/4.971 <eps>/4.421 byl/2.890 4 5 by/0.698 2 by/0.010 měl/1.504 byl/1.396 6 <eps>/3.947 <en>/0.005 měl/0.291 Obrázek 6.2: Přı́klad automatu reprezentujı́cı́ho jazykový model 66 Kapitola 7 Úvod do programu rct Program rct - Recognition Cascade Tool byl průběžně vyvı́jen po celou dobu doktorandského studia. V současnosti program rct umožňuje úpravu mlf souborů, práci s databázı́ KARLÍK, převody symbolů z formátu AT&T na HTK, převody jazykových modelů HTK lattice na AT&T fsm, stavbu slovnı́kového FST, stavbu FST kontextové závislosti, stavbu HMM WFST, stavbu WFSA reprezentujı́cı́ pravděpodobnosti modelů pro vstupnı́ přı́znaky, úpravy vstupnı́ch přı́znaků, konverzi HTK HMM modelů na AT&T DCD formát, úpravu výstupu rozpoznávače AT&T DCD nástrojů pro HTK nástroj HResult a vlastnı́ rozpoznávánı́. 7.1 Univerzálnı́ parametry Univerzálnı́ parametry jsou v přı́kazové řádce uváděny vždy jako prvnı́. Jejich seznam je následujı́cı́. -t nastavenı́ textové reprezentace pro zpracovánı́ FSM, standardně nastavena binárnı́ reprezentace -d dir nastavenı́ cesty (dir ) k HTK definičnı́m souborům HMM, kde by se měly nacházet soubory macros, hmmdefs a tiedlist -b možnost vynechánı́ zpětného přechodu v modelu ticha (sil ), standardně model ticha vytvářen včetně zpětného přechodu -s file v souboru file jsou uloženy po řádkách cesty jednotlivých souborů (nejčastěji řečových promluv) určených ke zpracovánı́ -p int klestěnı́ při rozpoznávánı́. počet aktivnı́ch hypotéz na segment nastaven na int. Pouze pro parametr -V -a float multiplikačnı́ koeficient jazykového modelu. Při rozpoznávánı́ udává čı́slo, kterým se vynásobı́ vstupnı́ rozpoznávacı́ sı́t’. Pouze pro parametr -V 67 7.2 Zpracovánı́ mlf-souborů Pro vlastnı́ rozpoznávánı́ AT&T nástroji, přı́padně modifikaci vstupnı́ho textu na úroveň slabik, či morfémů byly navrženy následujı́cı́ funkce. Nutno poznamenat, že ve všech následně uvedených přı́padech se předpokládá vstupnı́ mlf soubor na stdin a výstupnı́ mlf soubor pak na stdout. -Gm seřazenı́ jednotlivých položek mlf souboru do řádků, každá promluva -Gms tak představuje jeden řádek. Použito zejména pro následnou aplikaci nástroje farcompilestrings. -Ym převod mlf souboru na slabikovou verzi. Slova jsou rozdělena algoritmem PUML [Lá05], který rozdělı́ slovo na skupiny souhlásek a samohlásek, slabiku pak vyhodnocuje jako skupinu samohlásek ke které je přidán pravý kontext skupiny souhlásek délky n + 1, resp. n pro celkový počet souhlásek 2n + 1, resp. 2n ve skupině představujı́cı́ pravý kontext a levý kontext délky n ze skupiny souhlásek 2n + 1, či 2n ve skupině představujı́cı́ levý kontext. -GkMm f rozdělenı́ mlf souboru na morfémy, které zatı́m představujı́ rozdělenı́ slov na základnı́ části (předpona+kořen) a přı́pony. Rozdělenı́ je provedeno na základě souboru morfologického popisu (soubor f ), který by měl obsahovat všechny koncovky (vzory) pro všechna použitá slova - viz kapitola 9. Na následujı́cı́m přı́kladě je demonstrováno použitı́ těchto funkcı́. vstupnı́ mlf soubor: úprava pomocı́ -Ym: úprava pomocı́ -GkMm: #!MLF!# "*/mb73bc103003.lab" protestnı́ jı́zda sanit . #!MLF!# "*/mb73bc103003.lab" protestnı́ <sp> jı́zd a <sp> sanit <sp> . úprava pomocı́ -Gm: #!MLF!# "*/mb73bc103003.lab" pro tes tnı́ <sp> jı́z da <sp> sa nit <sp> . úprava pomocı́ -Gms: protestnı́ jı́zda sanit <sil> protestnı́ jı́zda sanit <sil> 68 7.3 Úprava souborů symbolů V této kategorii byl vytvořen algoritmus pro převod kódovánı́ fonémů z jednoznakové abecedy na vı́ceznakovou a algoritmus pro redukci souboru symbolů na symboly, které jsou obsaženy v zadaném automatu. -cc pro zpracovánı́ použit standardnı́ vstup/výstup -R f.sym na stdout ponechá ze souboru f.sym pouze symboly, které jsou obsaženy v automatu na stdin. Standardně je pro FSM nastaven binárnı́ vstup, volba -t před hlavnı́m parametrem nastavı́ textový vstup. přı́klad souboru symbolů pro FST kontextové závislosti: úprava pomocı́ -cc: <eps> <sil> <sp> a/<eps>_<eps> a/<eps>_š a/H_t’ b/a_e l/z_ý <eps> sil sp a a+ss ch-a+tt a-b+e z-l+ii 7.4 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 Přeindexovánı́ vstupnı́ch symbolů v automatu Tato operace se týká hlavně zpracovánı́ trifónů. Vytvořı́me-li programem rct FST kontextové závislosti C, obdržı́me soubor obsahujı́cı́ n3 symbolů, kde n je počet fonémů. Je možné použı́t pouze redukci a přidělit nové indexy pouhým čı́tánı́m. Myšlenka je založena na možnosti disponovat stejnými indexy jednotlivých HMM tak jak je tomu v HTK knihovnách. -r fn1 fn2 7.5 ke všem vstupnı́m symbolům v souboru fn1 je nalezen index (nutno definovat cestu k definičnı́m souborům HMM univerzálnı́m parametrem -d) HMM a vstupnı́ symboly s novými indexy jsou zapsány do souboru fn2. Pak je načten automat ze stdin, staré indexy vstupnı́ch symbolů jsou nahrazeny novými a takto upravený automat je odeslán na stdout. Zpracovánı́ výstupu Výstupem rozpoznávače v AT&T DCD nástrojı́ch je posloupnost slov realizovaná množinou FSA - souborem far. Chceme-li použı́t HTK nástroj HResult který vypočı́tá 69 vlastnı́ úspěšnost rozpoznávánı́, potřebujeme obdržet mlf soubor reprezentujı́cı́ výstupnı́ promluvy. K tomu sloužı́ následujı́cı́ parametr. -M g.s scp 7.6 na stdin je far soubor obdržený z AT&T rozpoznávače drecog, g.s je popisovacı́ soubor symbolů gramatiky a scp je soubor, obsahujı́cı́ po řádcı́ch seznam cest k jednotlivým přı́znakům, reprezentujı́cı́ promluvy. Na stdout se pak nacházı́ požadovaný mlf soubor. Zpracovánı́ přı́znaků Pro rozpoznávánı́ nástrojem AT&T drecog jsou jednı́m z možných formátů holá data reprezentujı́cı́ vlastnı́ přı́znaky1 typu float (32 bitů). Dalšı́ možnostı́ úpravy kepstrálnı́ch přı́znaků je jejich normalizace na celkový průměr dat, na kterých se trénovaly HMM modely. V praxi to znamená výpočet průměru všech segmentů všech dat trénovacı́ množiny TR a testovacı́ množiny TS (např. pomocı́ HTK nástroje HCompV). Vlastnı́ normalizaci pak provedeme přičtenı́m rozdı́lu vektorů T¯R − T¯S ke všem segmentům reprezentujı́cı́ kepstrálnı́ rovinu testovacı́ch dat. Představuje to způsob jak obejı́t možnost rozdı́lných mikrofonů, či akustických kanálů v při pořizovánı́ trénovacı́ch a testovacı́ch dat. -E -U a s nutno použı́vat ve spojenı́ s univerzálnı́m parametrem -s. Odřı́zne 12 bitů představujı́cı́ch hlavičku jednotlivých HTK souborů přı́znaků uvedených v souboru jejich seznamu za parametrem -s a výsledné soubory uložı́ na stejné mı́sto s rozdı́lnou přı́ponou .fea. Seznam cest k těmto novým souborům je na stdout nutno použı́vat ve spojenı́ s univerzálnı́m parametrem -s. Upravı́ všechny přı́znaky jednotlivých HTK souborů přı́znaků uvedených za parametrem -s tak, že k nim přičte rozdı́l T¯R − T¯S , kde a představuje definičnı́ soubor průměru trénovacı́ množiny dat T¯R a kde b představuje definičnı́ soubor průměru testovacı́ množiny dat T¯S . Seznam cest k těmto novým souborům je na stdout přı́klad souborů a, resp. b : <CEPSNORM> <MFCC_E_D_A> <MEAN> 39 -2.382369e+00 -2.991617e+00 -1.603375e+00 2.098884e+00 -6.115943e+00 ... 7.7 Konverze HTK HMM modelů na AT&T DCD formát Dalšı́ nutnostı́ pro rozpoznávánı́ nástrojem AT&T drecog je daný formát modelů. Ten je reprezentován souborem splt.am, který se odkazuje na jednotlivé hierarchické úrovně 1 v této práci kepstrálnı́ koeficienty + energie, jejich delta a akceleračnı́ koef. - celkem 39 na segment 70 Markovových modelů. Pro tuto konverzi bylo s výhodou použito otevřených HTK knihoven umožňujı́cı́ch načı́tánı́ a zpracovánı́ HTK HMM definičnı́ch souborů. -C fn -Ct fn vytvořı́ soubor splt.am spolu s definičnı́mi soubory Markovových modelů v něm uvedených. Indexovánı́ jednotlivých HMM, resp. jejich stavů je prováděno na základě souboru fn. Ten může být zadán ve smyslu symbolů pro jednotlivé HMM2 (koeficienty setrvánı́ ve stavu jsou napočı́távány pouze v tomto přı́padě), nebo ve smyslu symbolů stavů. Podmı́nkou správné funkce je umı́stěnı́ symbolů pro modely ticha a pauzy tak jak je zobrazeno na následujı́cı́m přı́kladě. vytvořeno pro převod HMM se shlukovanými stavy. fn zde musı́ být soubor symbolů reprezentujı́cı́ jména HMM. Indexy stavů jednotlivých HMM (tedy i soubor fn) je však potřeba vytvořit pomocı́ parametru -r kvůli nutné shodě s indexovánı́m modelů uvnitř HTK knihoven. Následujı́cı́ přı́klad zobrazuje použitı́ parametru -C pro čtyři modely. L.sym představuje soubor symbolů reprezentujı́cı́ jména Markovových modelů a H.sym pak jejich stavy. splt.am je výstupem tohoto algoritmu. Řádek odkazujı́cı́ na definičnı́ soubor koeficientů setrvánı́ ve stavu je vytvořen pouze je-li specifikován vstupnı́ soubor symbolů reprezentujı́cı́ HMM. Soubor splt.hmm reprezentuje po řádcı́ch jednotlivé HMM, kde prvnı́ čı́slo znamená index HMM, druhé počet výskytů (nenı́ podstatné) a dalšı́ pak indexy na jednotlivé emitujı́cı́ stavy. Obrázek 7.1 zobrazuje návaznost jednotlivých souborů. mean pdf st var dur Obrázek 7.1: Struktura modelů DCD knihovny 71 L.sym: <eps> <sil> <sp> a o~4 H.sym: 0 1 2 3 <eps> <sil>#0 <sil>#1 <sil>#2 <sp>#1 a#0 a#1 a#2 o#0 o#1 o#2 0 1 2 3 4 5 6 7 8 9 10 výstupnı́ soubor splt.am: splt.hmm: hmms states pdfs means variances state_durations 1 2 3 4 splt.hmm splt.st splt.pdf splt.mean splt.var splt.dur 1 1 1 1 1 2 3 4 5 6 7 8 9 10 Soubor splt.st reprezentuje po řádkách emitujı́cı́ stavy HMM, kde prvnı́ sloupec znamená index stavu, druhý počet výskytů (-1 znamená nepoužito) a dále pak po sobě následujı́ indexy jednotlivých mixtur a jejich váhy. Akustické modely v AT&T DCD formátu nezahrnujı́ pravděpodobnostnı́ matici přechodů. Dá se však nahradit distribučnı́ funkcı́ setrvánı́ ve stavu. Jestliže pravděpodobnost přechodu do stejného stavu je v HTK aii , potom pravděpodobnost, že HMM setrvá di segmentů ve stejném stavu je dána geometrickou distribučnı́ funkcı́ (1 − aii )adiii −1 di ≥ 1 pi (di ) = . (7.1) 0 di ≤ 0 Střednı́ hodnota je spočı́tána jako d̄i = 1 , 1 − aii (7.2) a rozptyl potom 1 2 1 σdi = d̄i = . 2 2(1 − aii )2 (7.3) Takto jsou spočı́tány jednotlivé hodnoty souboru splt.dur, který reprezentuje pro každý stav střednı́ hodnotu a rozptyl. Soubor splt.pdf zahrnuje indexy střednı́ch hodnot a rozptylů (diagonály kovariančnı́ch matic vı́cerozměrného normálnı́ho rozdělenı́), a hodnotu báze (0 znamená báze nepoužita). 72 splt.dur: splt.st - prvnı́ 2 mixture: 1 -1 7.80e+00 3.04e+01 2 -1 3.64e+01 6.62e+02 3 -1 2.06e+01 2.13e+02 4 -1 1.95e+01 1.90e+02 atd .. 10 -1 2.77e+00 3.83e+00 1 -1 193 0.100469 2 -1 225 0.129627 3 -1 257 0.122439 4 -1 225 0.129627 atd. ... 10 -1 161 0.00000 194 226 258 226 splt.pdf: 0.045112 0.020172 0.024472 0.020172 ... ... ... ... 1 1 1 0 2 2 2 0 3 3 3 0 4 4 4 0 atd. ... 162 0.087337 ... 288 288 288 0 Soubory splt.mean a splt.var reprezentujı́ střednı́ hodnoty a rozptyly (diagonály kovariančnı́ch matic vı́cerozměrného normálnı́ho rozdělenı́). Formát je shodný s dřı́ve uváděnými formáty. splt.mean - prvnı́ 2 přı́znaky: splt.var - prvnı́ 2 přı́znaky: 1 -1 0.000000e+00 0.000000e+00 ... 1 -1 1.000000e+00 1.000000e+00 ... 2 -1 5.427643e+00 -6.866843e+00 ... 2 -1 7.478480e+00 2.573437e+01 ... 3 -1 5.064353e+00 -2.239911e+00 ... 3 -1 1.128059e+01 2.815436e+01 ... atd. ... atd. ... 288 -1 -9.095788e+00 -1.425313e+00 ... 288 -1 8.665616e+00 8.845456e+00 ... 7.8 Rozpoznávánı́ programem rct Současný stav algoritmu pro rozpoznávánı́ programu rct je možné posoudit z výsledků v sekci 10. Algoritmus založený na bázi Viterbiho algoritmu použı́vá všechny druhy prořezávánı́ uvedených v kap. 1.8.1, přičemž volitelně nastavit lze pouze prořezávánı́ typu beam. Algoritmus použı́vá HTK knihovny, a tak je nutné specifikovat cestu k HTK HMM definičnı́m souborům. Vstupem je rozpoznávacı́ sı́t’ H ◦ L ◦ G, resp. H ◦ C ◦ L ◦ G, definičnı́ soubor symbolů a daná promluva, resp. soubor se seznamem cest k daným promluvám. Výstupem pak mlf soubor. 73 -V f1 [f2] rozpoznánı́ vstupnı́ promluvy (uvedené za univ. parametrem -o), resp. promluv (seznam za univ. parametrem -s) pomocı́ rozpoznávacı́ sı́tě (stdin) a seznamu vstupnı́ch symbolů této sı́tě f1. Ten je automaticky rozpoznán (na základě výskytu znaků # a ve druhém řádku tohoto souboru symbolů) zda se jedná názvy shlukovaných stavů, či nikoliv. Výstupem je standardně rozpoznaná posloupnost slov (stdout) reprezentovaná pomocı́ FSA, resp. zřetězené posl. slov (far archı́v), pokud je vstupem jediná promluva (volba -o), resp. seznam cest na vstupnı́ promluvy (volba -s). Výstup může být i rovnou v HTK mlf formátu, pokud je specifikován seznam symbolů slov f2. Implicitnı́ hodnota pro násobenı́ vah (univ. parametr -a) je 1 a pro prořezávánı́ typu beam 100. Nutnostı́ je parametr -d, kterým specifikujeme cestu k HTK HMM definičnı́m souborům. 74 Kapitola 8 Generovánı́ jednotlivých částı́ rozpoznávacı́ sı́tě 8.1 Jazykový model Na úvod je dobré poznamenat, že vyčerpávajı́cı́ možnosti generovánı́ jazykových modelů podává set AT&T nástrojů grmtools. Program rct tak obsahuje algoritmy generovánı́ FSA, resp. WFSA, reprezentujı́cı́ jazykový model pouze na základě HTK lattice souboru. -gl fn -gh fn 8.2 převod bezváhového HTK lattice (stdin) na FSA (stdout) a vygenerovánı́ souboru symbolů fn. Vytvořeno zejména pro převod výstupu HTK nástroje HParse a možnost srovnávánı́ výsledků rozpoznávánı́ za použitı́ HTK a AT&T nástrojů. Poznamenejme, že pro správnou funkci algoritmu je nutné začı́nat a končit jazykový model symbolem ticha (“sil“). převod HTK lattice ARPA formátu [You02] stdin na WFSA stdout a vygenerovánı́ souboru symbolů fn. V současnosti je funkčnı́ pouze reprezentace bigramu (navrženo pro zpracovánı́ výstupu HTK nástroje HLStats s parametrem -b) a jen textový formát výstupu reprezentujı́cı́ WFSA. Slovnı́k Způsoby vytvořenı́ slovnı́kového WFST programem rct jsou vždy založené na zpracovánı́ vstupnı́ch symbolů jazykového WFSA např. G.sym, seznamu slov (wlist) a k němu přı́slušı́cı́mu seznamu jejich jednoznakových fonetických přepisů (pron). Výstupem je pak reprezentace slovnı́kového WFST a soubor symbolů jednotlivých fonémů. Přı́klady potřebných vstupnı́ch souborů ukazuje následujı́cı́ výpis. 75 G.sym: <eps> <sil> <sp> tři čtyři pět 0 1 2 3 4 5 -l f1 f2 f3 -ls f1 f2 f3 -lL f1 f2 f3 wlist: pron: čtyři pět tři čtyřy pjet tŘy použije definičnı́ soubor symbolů gramatiky stdin, seznam slov f1 a seznam jejich fonetických přepisů f2 (jejich řazenı́ po řádcı́ch si musı́ navzájem odpovı́dat) pro vytvořenı́ WFST reprezentujı́cı́ho slovnı́k stdout a seznamu jeho symbolů f3. Přı́klad pro výše uvedené přı́klady vstupnı́ch souborů je na obr. 8.1 nahoře. funguje stejným způsobem jako parametr -l, na konec slov však přidává model krátké pauzy, viz obr. 8.1 dole. funguje obdobně jako parametr -ls, pro jednotlivá slova však uvažuje i alternativnı́ výslovnost. Data pro alternativnı́ výslovnost si program rct načı́tá ze souboru rctdata/paltpron.txt. Zde je dobré upozornit, že pokud připravujeme model gramatiky pomocı́ nějakého mlf souboru, je na mı́stě nutnost jeho modifikace. Často se stává, že mlf soubor obsahuje dva termı́ny znamenajı́cı́ jedno slovo akorát s jiným fonetickým přepisem, napřı́klad čtyři-štyři. Zde je potřeba toto odstranit, tedy pro uvedený přı́klad výskyty slov štyři nahradit slovy čtyři. To je možné provést pomocı́ parametru -m (stdin/stdout), kde se k nahrazovánı́ slov použı́vá soubor rctdata/altpron.txt, který by měl korespondovat s výše uvedeným souborem potřebným pro vytvořenı́ alternativnı́ výslovnosti. Přı́klad WFST vytvořeného tı́mto způsobem je na obr. 8.2. rctdata/altpron.txt: rctdata/paltpron.txt: $b B /B/ $bé $c C /C/ $cé čtyři čtyry štyry štyři b@ bé c@ cé čtyři čtyry štyry štyři 8.3 FST kontextové závislosti Použı́váme-li trifóny jako základnı́ fonetickou jednotku (HMM modely je pak reprezentujı́), potřebujeme tento překladový automat ke kompozici se sı́tı́ LG. Jak již bylo popsáno automat je poměrně složitý (n2 + n + 1 stavů a n3 + 2n2 + n přechodů, kde n je počet fonémů - 45 pro češtinu). Nicméně po jeho kompozici CLG = C ◦ LG má automat CLG srovnatelnou složitost jako původnı́ LG. 76 0 <sil>:<sil> 1 č:čtyř i 2 t:<eps> p:pět j:<eps> 7 t:tř i 3 8 Ř:<eps> 11 12 y:<eps> ř :<eps> 4 e:<eps> t:<eps> 9 y:<eps> y:<eps> 5 6 10 13 l 0 <sil>:<sil> 1 č:čtyř i 2 p:pět t:tř i 8 13 t:<eps> j:<eps> Ř:<eps> 3 9 14 y:<eps> e:<eps> y:<eps> ls 4 10 15 ř :<eps> t:<eps> <sp>:<eps> 5 11 y:<eps> 6 <sp>:<eps> <sp>:<eps> 7 12 16 Obrázek 8.1: Přı́klad vytvořenı́ WFST slovnı́ku pomocı́ parametrů -l a -ls č:<eps> č:<eps> 0 <sil>:<sil> 1 <eps>:čtyř i 2 š:<eps> 27 j:<eps> 32 Ř:<eps> p:pět t:tř i š:<eps> 3 9 15 21 28 33 t:<eps> 4 t:<eps> 10 t:<eps> 16 t:<eps> e:<eps> y:<eps> 22 29 34 y:<eps> y:<eps> y:<eps> y:<eps> t:<eps> <sp>:<eps> 5 11 17 23 30 ř :<eps> r:<eps> r:<eps> ř :<eps> <sp>:<eps> 6 12 18 24 y:<eps> 7 y:<eps> 13 y:<eps> y:<eps> <sp>:<eps> <sp>:<eps> 19 <sp>:<eps> 25 <sp>:<eps> 8 14 20 26 31 35 Obrázek 8.2: Přı́klad vytvořenı́ WFST slovnı́ku s alternativnı́mi výslovnostmi pomocı́ parametru -lL -x fn -xd fn 8.4 vstupem (stdin) je soubor symbolů slovnı́ku (fonémy), výstupem pak úplný soubor symbolů trifónů počtu (n + 1)3 (n je počet fonémů) fn a výstupnı́ FSA (stdout) v textovém formátu. Pro správnou funkci je potřeba ve výstupnı́m automatu zaměnit vstupnı́ symboly s výstupnı́mi (AT&T operace fsminvert). vytvořı́ se FST kontextové závislosti pro difóny, jinak totéž jako předchozı́ parametr. WFST reprezentujı́cı́ Markovovy modely Připomeňme, že Markovovy modely se zahrnujı́ dvě části. Prvnı́ je stavový automat s definovanými pravděpodobnostmi přechodů reprezentujı́cı́ časové vlastnosti elementárnı́ch úseků řeči, druhou pak definice vı́cerozměrných normálnı́ch rozdělenı́, resp. jejich 77 hustotnı́ch funkcı́ reprezentujı́cı́ spektrálnı́ vlastnosti elementárnı́ch úseků řeči. Konečným automatem bez znalosti vstupnı́ promluvy je možné reprezentovat pouze prvnı́ část. -Hw fn -Ht fn vstupem (stdin) je soubor symbolů FST kontextové závislosti (trifóny), resp. slovnı́ku (fonémy), výstupem pak úplný soubor vstupnı́ch symbolů Markovových modelů (generován jménem fonému a následným přidánı́m indexu stavu) (fn - soubor Hw.sym na následujı́cı́m přı́kladě) a WFST (stdout), kde váhy znamenajı́ záporné přirozené logaritmy pravděpodobnostı́ přechodů jednotlivých HMM aij . Nutnostı́ je použı́t univerzálnı́ parametr -d hmm, kde hmm je cesta k definičnı́m souborům HTK HMM. rozdı́l této volby oproti parametru -Hw spočı́vá v předpokládaném shlukovánı́ všech stavů v zadaných definičnı́ch souborech pro HMM (volba -d). Názvy symbolů a jejich indexy (soubor H.sym na následujı́cı́m přı́kladě) tak přı́mo odpovı́dajı́ názvům a indexům definovaných pro shlukované stavy HTK HMM definičnı́mi soubory a HTK knihovnami. Přı́klad sestavenı́ touto cestou pomocı́ souboru symbolů uvedeného v následujı́cı́ch přı́kladech pro 5 modelů C.sym je na obr. 8.3 . C.sym: <eps> <sil> <sp> k/a_c n/b_O p/š_a 8.5 Hw.sym: 0 1 2 3 4 5 <eps> <sil>#0 <sil>#1 <sil>#2 <sp>#1 k/a_c#0 k/a_c#1 k/a_c#2 n/b_O#0 n/b_O#1 n/b_O#2 p/š_a#0 p/š_a#1 p/š_a#2 H.sym: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 <eps> n2_8 k2_8 p4_7 p3_3 n4_6 k4_4 p2_7 k3_3 sill silr 0 133 158 376 666 803 815 936 1088 1204 1205 Vytvořenı́ WSFA reprezentujı́cı́ho pravděpodobnosti stavů promluvy Tato procedura je nutná pouze v přı́padě, že rozpoznáváme pomocı́ AT&T nástroje fsmcompose. Jedná se v podstatě o napočı́tánı́ pravděpodobnostı́ všech modelů pro všechny 78 sill:<eps>/2.424 silst:<eps>/0.054 sill:<eps>/0.185 sill:<eps>/2.520 <eps>:<sil>/0 1 2 silr:<eps>/0.077 silst:<eps>/2.929 3 silr:<eps>/3.284 4/0 silst:<eps>/3.285 silst:<eps>/0.185 <eps>:<sp>/0 5 silst:<eps>/2.520 k2_8:<eps>/0.531 0 <eps>:k/a_c/0 <eps>:n/b_O/0 7 k2_8:<eps>/0.886 n2_8:<eps>/0.656 <eps>:p/š_a/0 11 n2_8:<eps>/0.731 p2_7:<eps>/0.501 15 p2_7:<eps>/0.931 6/0 k3_3:<eps>/0.980 8 n3_5:<eps>/0.750 12 p3_3:<eps>/0.907 16 k4_4:<eps>/0.695 k3_3:<eps>/0.469 9 k4_4:<eps>/0.691 10/0 n4_6:<eps>/1.082 n3_5:<eps>/0.638 13 n4_6:<eps>/0.413 14/0 p4_7:<eps>/1.194 p3_3:<eps>/0.516 17 p4_7:<eps>/0.360 18/0 Obrázek 8.3: Přı́klad vytvořenı́ HMM WFST pro shlukované stavy segmenty, které jsou pak reprezentovány jednotlivými vahami. Potřebný WFSA tak obsahuje T + 1 stavů a n ∗ T přechodů, kde T je počet segmentů vstupnı́ promluvy a n počet HMM modelů reprezentujı́cı́ch fonémy. -O fn vytvořı́ WFSA (stdout) na základě souboru vstupnı́ch symbolů HMM WFSTfn, HTK definičnı́ch souborů HMM definovaných podle cesty za univ. parametrem -d a souboru promluvy HTK mfc formátu definované za parametrem -o. Je možné použı́t i univ. parametr -s který zpracuje celý seznam mfc souborů uvedený za tı́mto parametrem a výsledné WFSA v binárnı́m formátu se objevı́ zřetězeně (far archı́v) na stdout. Přı́klad pro tři segmenty je zobrazen na obr. 8.4. Poznamenejme, že proces neumožňuje zadat jako vstup symboly ve tvaru názvů shlukovaných stavů. 79 <sil>#0:1/55.07 k/a_c#0:5/75.13 <sil>#0:1/58.52 <sil>#1:2/61.57 <sil>#1:2/67.68 k/a_c#1:6/80.43 0 <sil>#2:3/54.41 <sp>#1:4/78.92 1 <sil>#0:1/57.53 <sil>#1:2/67.15 2 <sil>#2:3/60.76 <sp>#1:4/79.00 k/a_c#0:5/73.02 <sil>#2:3/60.88 k/a_c#0:5/75.03 k/a_c#1:6/78.87 <sp>#1:4/80.31 k/a_c#1:6/80.11 3/0 Obrázek 8.4: Přı́klad WFSA reprezentujı́cı́ pravděpodobnosti stavů promluvy 80 Kapitola 9 Zpracovánı́ databáze s morfologickými kódy 9.1 Zpracovánı́ dat z Českého národnı́ho korpusu Český národnı́ korpus (dále jen UCNK) umožňuje zaregistrovaným uživatelům zadávat dotazy do zvolené databáze. Seznam dostupných korpusů lze nalézt na [Fila]. Pro experimenty v této práci byl vybrán korpus SYN2000. Poznamenejme, že zde uvedené texty popisujı́cı́ morfologický kód z UCNK jsou převzaty z [Kop]. 9.1.1 Struktura UCNK korpusu SYN2000 Korpus SYN2000 [Filb] je označen jako žánrově vyvážený korpus, kde převažujı́ texty z let 1990 až 1999. Obsahuje cca 100 mil. slov, každé slovo má přiřazený základnı́ tvar (lemma) a morfologickou značku (TAG). Struktura morfologické značky, resp. TAGu je znázorněna tabulkou 9.1, kde POS je slovnı́ druh (z angl. part of speeech). A C D I 1 POS adjektivum (přı́davné jméno) numerál (čı́slovka, nebo čı́selný výraz s čı́slicemi) adverbium (přı́slovce) interjekce (citoslovce) 2 SPO 3 GEN 4 NUM 5 CAS 6 PGE 7 PNU 8 PER 9 TEN 10 GRA 11 NEG 12 VOI 15 OPT 16 ASP Tabulka 9.1: Struktura morfologické značky v UCNK korpusu 81 J N P R T V X Z konjunkce (spojka) substantivum (podstatné jméno) pronomen (zájmeno) prepozice (předložka) partikule (částice) verbum (sloveso) neznámý, neurčený, neurčitelný slovnı́ druh interpunkce, hranice věty SPO je detailnı́ určenı́ slovnı́ho druhu (z angl. zkratky SUBPOS ). Detailnı́ slovnı́ druh sloužı́ předevšı́m k určenı́ dalšı́ch relevantnı́ch morfologických kategoriı́, které jsou uvedeny na dalšı́ch pozicı́ch (ne vždy však jednoznačně). Ze znaku použitého pro detailnı́ určenı́ slovnı́ho druhu je možné jednoznačně vyvodit hlavnı́ slovnı́ druh (pozice 1). ! # , . : ; = ? ^ } @ 0 1 2 3 4 5 6 7 8 zkratka jako adverbium hranice věty (jen u ”virtuálnı́ho” slova ”###”) slovo ”krát” (slovnı́ druh: spojka) spojka podřadicı́ (vč. ”aby” a ”kdyby” ve všech tvarech) zkratka jako adjektivum interpunkce všeobecně (ne však ”virtuálnı́” slovo ### jako hranice věty) zkratka jako substantivum čı́slo psané čı́slicemi (značkováno jako slovnı́ druh: čı́slovka - ’C’) čı́slovka ”kolik” spojka souřadicı́ čı́slovka psaná řı́mskými čı́slicemi zkratka jako sloveso slovnı́ tvar, který nebyl morfologickou analýzou rozpoznán (značkováno jako slovnı́ druh: neznámý - ’X’) předložka s připojeným ”-ň” (něj), ”proň”, ”naň”, atd. (značkováno jako slovnı́ druh: zájmeno - ’P’) vztažné přivlastňovacı́ zájmeno ”jehož”, ”jejı́ž”, ... slovo před pomlčkou zkratka jako čı́slovka vztažné nebo tázacı́ zájmeno s adjektivnı́m skloňovánı́m (obou typů: ”jaký”, ”který”, ”čı́”, ...) zájmeno ”on” ve tvarech po předložce (tj. ”n-”: ”něj”, ”něho”, ...) reflexı́vnı́ zájmeno ”se” v dlouhých tvarech (”sebe”, ”sobě”, ”sebou”) reflexı́vnı́ zájmeno ”se”, ”si” pouze v těchto tvarech, a dále ”ses”, ”sis” přivlastňovacı́ zájmeno ”svůj” 82 9 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j vztažné zájmeno ”jenž”, ”již”, ... po předložce (”n-”: ”něhož”, ”nı́ž”, ...) adjektivum obyčejné sloveso, tvar přı́tomného nebo budoucı́ho času adjektivum, jmenný tvar zájmeno ukazovacı́ (”ten”, ”onen”, ...) vztažné zájmeno ”což” součást předložky, která nikdy nestojı́ samostatně (”nehledě”, ”vzhledem”, ...) přı́davné jméno odvozené od slovesného tvaru přı́tomného přechodnı́ku krátké tvary osobnı́ch zájmen (”mě”, ”mi”, ”ti”, ”mu”, ...) citoslovce (značkováno jako slovnı́ druh: citoslovce - ’I’) vztažné zájmeno ”jenž” (”již”, ...), bez předložky zájmeno tázacı́ nebo vztažné ”kdo”, vč. tvarů s ”-ž” a ”-s” zájmeno neurčité ”všechen”, ”sám” přı́davné jméno odvozené od slovesného tvaru minulého přechodnı́ku substantivum, obyčejné samostatně stojı́cı́ zájmena ”svůj”, ”nesvůj”, ”tentam” osobnı́ zájmena (vč. tvaru ”tys”) zájmeno tázacı́/vztažné ”co”, ”copak”, ”cožpak” předložka, obyčejná zájmeno přivlastňovacı́ ”můj”, ”tvůj”, ”jeho” (vč. plurálu) částice (slovnı́ druh ’T’) adjektivum přivlastňovacı́ (na ”-ův” i ”-in”) předložka vokalizovaná (”ve”, ”pode”, ”ku”, ...) zájmena záporná (”nic”, ”nikdo”, ”nijaký”, ”žádný”, ...) slovnı́ tvar, který byl rozpoznán, ale značka (ve slovnı́ku) chybı́ zájmeno ”co” spojené s předložkou (”oč”, ”nač”, ”zač”) zájmeno neurčité (”nějaký”, ”některý”, ”čı́koli”, ”cosi”, ...) čı́slovka neurčitá (”mnoho”, ”málo”, ”tolik”, ”několik”, ”kdovı́kolik”, ...) přı́slovce (bez určenı́ stupně a negace; ”pozadu”, ”naplocho”, ...) kondicionál slovesa být (”by”, ”bych”, ”bys”, ”bychom”, ”byste”) čı́slovka druhová, adjektivnı́ skloňovánı́ (”jedny”, ”dvojı́”, ”desaterý”, ...) slovesný tvar přechodnı́ku přı́tomného (”-e”, ”-ı́c”, ”-ı́ce”) slovesný tvar: infinitiv přı́slovce (s určenı́m stupně a negace; ”velký”, ”zajı́mavý”, ...) čı́slovky druhové ”jedny” a ”nejedny” slovesný tvar rozkazovacı́ho způsobu čı́slovka druhová >= 4, substantivnı́ postavenı́ (”čtvero”, ”desatero”, ...) 83 k l m n o p q r s t u v w x y z čı́slovka druhová >= 4, adjektivnı́ postavenı́, krátký tvar (”čtvery”, ...) čı́slovky základnı́ 1-4, ”půl”, ...; sto a tisı́c v nesubstantivnı́m skloňovánı́ slovesný tvar přechodnı́ku minulého, přı́p. (zastarale) přechodnı́k přı́tomný dokonavý čı́slovky základnı́ >= 5 čı́slovky násobné neurčité (”-krát”: ”mnohokrát”, ”tolikrát”, ...) slovesné tvary minulého aktivnı́ho přı́čestı́ (včetně přidaného ”-s”) archaické slovesné tvary minulého aktivnı́ho přı́čestı́ (zakončenı́ ”-t’”) čı́slovky řadové slovesné tvary pası́vnı́ho přı́čestı́ (vč. přidaného ”-s”) archaické slovesné tvary přı́tomného a budoucı́ho času (zakončenı́ ”-t’”) čı́slovka tázacı́ násobná ”kolikrát” čı́slovky násobné (”-krát”: ”pětkrát”, ”poprvé” ...) čı́slovky neurčité s adjektivnı́m skloňovánı́m (”nejeden”, ”tolikátý”, ”několikátý” ...) zkratka, slovnı́ druh neurčen/neznámý zlomky zakončené na ”-ina” (značkováno jako slovnı́ druh: čı́slovka - ’C’) čı́slovka tázacı́ řadová ”kolikátý” GEN je rod (z angl. gender) F H I M N Q T X Y Z neurčuje se femininum (ženský rod) femininum nebo neutrum (tedy nikoli maskulinum) maskulinum inanimatum (rod mužský neživotný) maskulinum animatum (rod mužský životný) neutrum (střednı́ rod) femininum singuláru nebo neutrum plurálu (pouze u přı́čestı́ a jmenných adjektiv) masculinum inanimatum nebo femininum (jen plurál u přı́čestı́ a jmenných adjektiv) libovolný rod (F/M/I/N) masculinum (animatum nebo inanimatum) ’nikoli femininum’ (tj. M/I/N; předevšı́m u přı́slovcı́) NUM je čı́slo (z angl. number). D P neurčuje se duál (pouze 7. pád feminin) plurál (množné čı́slo) 84 S W X singulár (jednotné čı́slo) pouze v kombinaci s jmenným rodem ’Q’ (singulár pro feminina, plurál pro neutra) libovolné čı́slo (P/S/D) CAS je pád (z angl. case). 1 2 3 4 5 6 7 X neurčuje se nominativ (1. pád) genitiv (2. pád) dativ (3. pád) akuzativ (4. pád) vokativ (5. pád) lokativ (6. pád) instrumentál (7. pád) libovolný pád (1/2/3/4/5/6/7) PGE je přivlastňovacı́ rod ( z angl. zkratky POSSGENDER). Rody mužský neživotný a střednı́ se nikdy nevyskytujı́ samostatně.’M’ se může vyskytnout jen u přivlastňovacı́ch adjektiv (ne u přı́slovcı́). F M X Z neurčuje se femininum (ženský rod) maskulinum animatum (rod mužský životný) libovolný rod (F/M/I/N) ’nikoli femininum’ (tj. M/I/N; u přivlastňovacı́ch adjektiv) PNU je přivlastňovacı́ čı́slo z angl. zkratky POSSNUMBER). P S neurčuje se plurál (množné čı́slo) singulár (jednotné čı́slo) PER je osoba (z angl. person). 1 2 3 X neurčuje se 1. osoba 2. osoba 3. osoba libovolná osoba (1/2/3) 85 TEN je čas (z angl. tense). F H P R X neurčuje se futurum (budoucı́ čas) minulost nebo přı́tomnost (P/R) prézens (přı́tomný čas) minulý čas libovolný čas (F/R/P) GRA je stupeň (z angl. grade). 1 2 3 neurčuje se 1. stupeň 2. stupeň 3. stupeň NEG je negace (z angl. negation). A N neurčuje se afirmativ (bez negativnı́ předpony ”ne-”) negace (tvar s negativnı́ předponou ”ne-”) VOI je aktivum / pası́vum (z angl. voice) A P neurčuje se aktivum nebo ’nikoli pası́vum’ pası́vum OPT je varianta, stylový přı́znak apod. (z angl. option). 1 2 3 4 5 6 7 8 9 neurčuje se (”základnı́” tvar pro kategorie v pozicı́ch 1-14) varianta, vı́ceméně rovnocenná (”méně častá”) řı́dká, archaická nebo knižnı́ varianta velmi archaický tvar, též hovorový velmi archaický nebo knižnı́ tvar, pouze spisovný (ve své době) hovorový tvar, ale v zásadě tolerovaný ve veřejných projevech hovorový tvar (koncovka standardnı́ obecné češtiny) hovorový tvar (koncovka standardnı́ obecné češtiny), varianta k ’6’ zkratky speciálnı́ použitı́ (tvary zájmen po předložkách apod.) 86 ASP je vid (z angl. aspect). P I B perfektivum (dokonavé sloveso) imperfektivum (nedokonavé sloveso) obouvidé sloveso Protože jediným oficiálnı́m možným způsobem přı́stupu do databáze UCNK je pomocı́ programu bonito [Kop], který je plně grafický a neumožňuje zpracovánı́ dat pomocı́ skriptů, byl vyvinut komunikačnı́ modul pro program rct. -GUn q -GUq t q -GUs l -GUf -Gku 9.1.2 vypı́še počet výskytů dotazu q v UCNK syntaxe dotazu dle manuálu k programu bonito [Kop]. vypı́še výsledek dotazu q v UCNK syntaxe dotazu dle manuálu k programu bonito [Kop]. Formát výsledku f lze specifikovat pomocı́ dalšı́ho řetězce. Napřı́klad volánı́ rct -GUq "word,lemma,tag" \"lesem\" vrátı́ lesem \{col0 coll\} /les/NNIS7-----A---- attr vypı́še frekvenčnı́ analýzu slov (včetně morfologických značek) pro lemma l naplnı́ MYSQL databázi SYN2000 pro všechna lemma slov na stdin vytvořı́ soubor morfologického popisu na základě naplněné MYSQL databáze parametrem -GUf. MYSQL Databáze pro ukládánı́ slov a jejich morfologických značek W_Word D_Distribution D_W_Id INT(10) D_T_Id INT(10) W_Id INT(10) W_Word VARCHAR(64) Indexes D_Lemma_W_Id INT(10) D_NOccur INT(10) Indexes T_Tag T_Id INT(10) T_Tag CHAR(16) Indexes Obrázek 9.1: Schéma databáze pro ukládánı́ morfologických struktur slov Program rct je v souvislosti s korpusem SYN2000 použit s volbou -GUf. Pomocı́ té se do MYSQL databáze (struktura viz obr. 9.1) uložı́ nejen všechna slova z nějaké trénovacı́ 87 množiny slov a jejich morfologické kódy, ale i slova přı́buzná (slova se společným lemmatem). Databáze je pak použita pro vytvořenı́ morfologického analyzátoru1 . Jejı́ hlavnı́ význam spočı́vá v jakési cache, která zamezuje opakovaným žádostem na UCNK server. 9.2 Soubor morfologického popisu V době vývoje programu rct byla k dispozici databáze UJC [Tě85]. Ta sloužila jako zdroj dat pro soubor morfologického popisu jehož ukázka je uvedena nı́že. #NOUNS <MODELS> 184 ůkol délka ... atd ... <WORDS> 1320 vývoz špı́gl škodovka ... atd ... #ADJECTIVES <MODELS> 103 jiný jiný jiný jiný prvnı́ prvnı́ prvnı́ prvnı́ ... atd ... <WORDS> 1425 nyplový nespolehlivý konkurenčnı́ ... atd ... zdůrazňovati zdůrazňovati zdůrazňovati zdůrazňovati najı́ti najı́ti najı́ti najı́ti ... atd ... <WORDS> 549 najı́ti vyjı́ti zdůrazňovati vyjadřovati 0 ka u~u~0 ky ce 110211 110211 110321 ý ý á é 0 0 0 0 _ ku u~em ko y ce ů kou ům ky y ek _ kám eH ky y ky káH kami ého ý ou é ho 0 0 0 _ _ _ _ 0 _ _ _ 0 ém é ém 0 m 0 m ém ým ou ým m m 0 m ı́ é é á 0 0 0 0 ýH ýH ýH ýH H H H H ým ým ým ým 0 0 0 0 é é é á 0 0 0 0 0 _ _ _ _ _ _ _ 0 ýH ýH ýH _ H H H ými ými ými ými mi mi mi mi oval oval ovala ovalo šel šel šla šlo ujeme _ _ _ jdeme _ _ _ _ _ _ _ jdete jděte _ _ ujı́ _ _ _ jdou _ _ _ ovat _ _ _ jı́t _ _ _ _ _ _ _ _ _ _ _ _ _ ovány _ _ _ šly _ ovali _ ovaly _ šli šly šly _ 5 ůkol 5 ůkol 6 délka ého ého é ého ho ho 0 ho ému ému é ému 0 mu 0 mu 23 222 23 222 22 227 uji _ _ _ jdu _ _ _ 5151 5131 5261 5241 uješ uj _ _ jdeš jdi _ _ 1 1 1 1 2 2 7 6 uje _ _ _ jde _ _ _ _ _ _ _ _ _ _ _ 6 jiný 11 jiný 11 prvnı́ _ _ _ _ _ _ _ _ _ ován ována ováno šel _ _ šlo najı́ti najı́ti zdůrazňovati zdůrazňovati 1 Z důvodu časové nenáročnosti byl zvolen jazyk C# platformy .NET. Program generujı́cı́ morfologický analyzátor z databáze se jmenuje rctsharp. 88 ... atd ... #ADVERBS <UC_WORDS> 1996 nezbytně 66 zejména 1104118 .. atd ... #UC_NOUNS <UC_WORDS> 28517 vnitro 110412 vnitra 110412 zněnı́ 157416 .. atd ... 14 311 1 10 1 Jedná se o sekce modelů (vzorů) pro dané slovnı́ druhy, se seznamem všech koncovek pro pády v jednotném a množném čı́sle následované sekcemi, kde jsou slova modelům přiřazena. S tı́mto souborem je možné jak vytvářet FST reprezentujı́cı́ morfologický analyzátor, tak rozdělenı́ slov na morfémy, tj. kořeny a přı́pony. -Gkb fn vytvořenı́ FST mapujı́cı́ho slova na morfologické kódy (stdout) za použitı́ souboru vstupnı́ch symbolů - slov (fn ) a morfologického popisu přivedeného do stdin. Přı́klad jednoduchého morfologického analyzátoru vytvořeného touto cestou je uveden na obr. 9.3. -GkM fn rozdělı́ slova přivedená na stdin na morfémy dle souboru morfologického popisu fn. -GkMm f vstupem je mlf file, jinak totéž jako výše uvedená volba. 9.3 Použité kódovánı́ morfologických značek Na úvod je nutné poznamenat, že v práci jsou použity 2 různé typy kódovánı́. Prvnı́ je popsán tabulkami 9.16 až 9.22 a v zásadě s nı́m pracuje program rct. Morfologické kódy zahrnujı́ pro ohebné slovnı́ druhy slovnı́ druh, čı́slo, rod a pád v tomto pořadı́. Tzn., že např. zájmeno jednotného čı́sla ženského rodu a 4. pádu by bylo kódováno symbolem pro_sg_fe_n_. Pro 4 ohebné slovnı́ druhy, které čeština má tak připadá 56 kódů na jeden druh. Slovesa jsou řazena do 25 skupin, kód pak záležı́ na následujı́cı́m: • rozkazovacı́ způsob - slovnı́ druh, čı́slo, osoba a kód ”imp”; přı́klad pro rozkazovacı́ způsob 2. osobu množného čı́sla je ver_pl_se_imp_ • přı́tomný čas - slovnı́ druh, čı́slo, osoba a kód ”pr”; přı́klad pro 2. osobu množného čı́sla je ver_pl_se_pr_ • minulý čas - slovnı́ druh, čı́slo, rod (činný - trpný) a osoba; přı́klad pro ženský rod 2. osobu množného čı́sla trpného rodu je ver_pl_se_pass_fe_ 89 pád 1. 2. 3. 4. 5. 6. 7. název nominative genitive dative accusative vocative locative instrumental kód n g d a v l i 0 Tabulka 9.16: Kódy pádů český název podstatné jméno přı́davné jméno zájmeno čı́slovka sloveso přı́slovce předložka spojka částice citoslovce anglický název noun adjective pronoun numeral verb adverb preposition conjunction particle intersection kód nou adj pro num ver adv pre con par int stál 1 tam 2 samotný 3 vysoký 4 sloup 5 Obrázek 9.2: Přı́klad věty ”stál tam samotný vysoký sloup” U reprezentované pomocı́ FSA Tabulka 9.17: Kódy slovnı́ch druhů název singular plural kód sg pl Tabulka 9.18: Kódy pro čı́slo osoba 1. 2. 3. kód fi se th Tabulka 9.19: Kódy pro osobu český název mužský neživotný mužský životný ženský střednı́ anglický název masculine inanimate masculine animate feminine neuter kód mi ma fe ne Tabulka 9.20: Kódy pro rod český název činný trpný anglický název past passive kód past pass Tabulka 9.21: Kódy pro slovesný rod vyjádřenı́ podmiňovacı́ho způsobu zvratné zájmeno nahoř e:adv_ tam:adv_ stál:ver_sg_past_mi_ stál:ver_sg_past_ma_ udělal:ver_sg_past_mi_ udělal:ver_sg_past_ma_ opravdový:adj_sg_mi_a_ opravdový:adj_sg_mi_n_ opravdový:adj_sg_ma_n_ samotný:adj_sg_mi_a_ samotný:adj_sg_mi_n_ vysoký:adj_sg_mi_a_ vysoký:adj_sg_mi_n_ vysoký:adj_sg_ma_n_ sloup:nou_sg_mi_a_ sloup:nou_sg_mi_n_ poř ádek:nou_sg_mi_a_ poř ádek:nou_sg_mi_n_ <sil>:<sil> 0 Obrázek 9.3: Přı́klad morfologického analyzátoru M realizovaného pomocı́ FST mod zvr Tabulka 9.22: Ostatnı́ druhy slov 90 slovnı́ druh V P N,C,A kód POS SPO GEN NUM PER TEN VOI POS NUM GEN CAS PGE PNU POS NUM GEN CAS POS Tabulka 9.23: Kódovánı́ morfologických značek programem sharprct dle symbolů popsaných v kapitole 9.1.1 adj_sg_ma_n_ 0 ver_sg_past_ma_ ver_sg_past_mi_ 1 adv_ 2 adj_sg_mi_a_ adj_sg_mi_n_ 3 adj_sg_mi_a_ adj_sg_mi_n_ 4 nou_sg_mi_a_ nou_sg_mi_n_ 5 Obrázek 9.4: FSA P = π2 (U ◦ M ), kde U je na obr. 9.2 a M na obr. 9.3 Druhý způsob kódovánı́ morfologických značek vznikl na základě kódů, resp. TAGů uváděných v UCNK korpusech. Znamená to, že kód je složen ze znaků uvedených v kapitole 9.1.1. Výstupnı́ kódy morfologických značek z FST morfologického analyzátoru M jsou uvedeny v tab. 9.23. Poznamenejme, že dle experimentálnı́ch výsledků se ukázalo, že je výhodné předložky vůbec netransformovat na morfologický kód. Napřı́klad předložky v a ve by transformacı́ na jednoduchý kód pre dle tab. 9.17 ztratily informaci o rodu slova v pravém kontextu. Tj. klidně bychom napřı́klad připustili možnost ve jámě. 9.4 Sestavenı́ FSM pro gramatiku Následujı́cı́ postup byl úspěšně ověřen a je použit ve všech experimentech týkajı́cı́ch se modelovánı́ na základě morfologických značek. 1. vytvořı́me FST morfologického analyzátoru M (jednoduchý přı́klad na obr. 9.3), 2. kompozicı́ vět reprezentovaných pomocı́ FSA (př. na obr. 9.2) s morf. analyzátorem reprezentovaným pomocı́ FST a následnou projekcı́ výstupnı́ch symbolů dle P = π2 (U ◦ M ) (9.1) dostáváme sadu FSA P (př. na obr. 9.4), 3. nástroji grmtools dle kap. 6.2 ze sady FSA P vygenerujeme n-gramový statistický model grm(P ), 4. formulı́ G = π2 (grm(P ) ◦ M −1 ) (9.2) dostáváme FSM G reprezentujı́cı́ gramatiku. 91 počet slov 9 42 101 206 663 M 1/18 1/91 1/216 1/449 1/1616 grm(P ) 18/61 71/320 92/582 131/1170 233/3697 G 20/67 73/440 94/1990 133/6290 235/63713 HLG 604/1079 3578/6379 8007/15512 16304/34005 53491/155684 Tabulka 9.24: Ukázka závislosti složitosti automatů M ,P , G a HLG na počtu použitých slov pro n = 2 92 Část III Tvorba rozpoznávačů 93 Kapitola 10 Experimentálnı́ výsledky 10.1 Použitý hardware Všechny experimenty byly prováděny na clusteru magi katedry teorie obvodů. Jedná se o několik PC s procesorem AMD Athlon(tm) 64 X2 Dual Core 4400+ (2200MHz) s operačnı́m systémem linux. Vlastnı́ skripty psané v skriptovacı́m jazyce Bourne shell [itwh] jsou spouštěny systémem pro frontálnı́ distribuce úloh SGE [itwf]. Všechny časy uváděné zde ve výsledcı́ch jsou součtem dob trvánı́ procesů všech uzlů, tj. teoreticky je vše přepočı́táno na jedno jádro procesoru AMD Athlon(tm) 4400+. 10.2 Použité řečové databáze Hlavnı́ řečovou databázı́ byla zvolena databáze SPEECON, část dospělých lidı́ [Pol03]. Celkem tak bylo k dispozici cca 300 hodin řečového signálu od 580 různých lidı́. 10.3 Akustické modely V experimentech se použı́vajı́ Markovovy modely reprezentujı́cı́ monofóny, difóny, resp. trifóny popsané v kapitole 3.3. Akustické modely jsou parametrizovány nástrojem HCopy (kap. 5.1 - uveden i použitý konfiguračnı́ soubor) a trénovány nástrojem HERest (kap. 5.2). ze sady nástrojů HTK. Trénovacı́ data pro experimenty uváděné v kapitole 10.6 představujı́ kompletnı́ databázi SPEECON. Trénovacı́ data pro experimenty uváděné v kapitole 10.7 byla použita s důrazem na obdrženı́ co nejvyššı́ho skóre. Byly tak z řečové databáze SPEECON vybrány promluvy pouze žen v prostředı́ office s tichým pozadı́m (tj. nikoliv se zapnutým hudebnı́m přehrávačem). 94 10.4 Jazykové modely Jazykové modelovánı́ použité v experimentech nese nedostatek v ekvivalenci trénovacı́ a testovacı́ množiny dat. Důvodem, proč autor vybral toto řešenı́, je zejména jednoduchost. Uved’me přehled všech třı́ jazykových modelů a vliv uvedeného nedostatku na jednotlivé modely: 1. uniformnı́ model - použit v testech kap. 10.7. Násobitel jazykového modelu je v těchto testech nastaven vždy na hodnotu 1. Zde ekvivalence trénovacı́ a testovacı́ množiny nemá velký význam, nebereme-li v úvahu možnost většı́ množiny slov pro trénovánı́ jazykového modelu. 2. bigram - tento bigram na bázi slov je použit v kapitole 10.6 a v testu slabikového modelu (kap. 10.7). Jeho volba sice může vypadat na prvnı́ pohled nesmyslně, ale zde šlo hlavně o porovnánı́ výkonu dekodérů. 3. n-gram na bázi morfologických značek - použit v testech kap. 10.7. Model je popsán v kapitole 9.1. Jelikož jde o model založený na třı́dách slov, který je schopný velmi dobře zobecňovat kontextové závislosti (kap. 1.5.3 ) neměl by být uvedený nedostatek ekvivalence trénovacı́ a testovacı́ množiny dat problémem. Je zde použita Katzova metoda vyhlazovánı́ třı́d. Morfologický analyzátor použitý pro tento typ jazykového modelu je zkonstruován na základě Českého národnı́ho korpusu metodami uvedenými v kap. 9.1. Podrobný postup konstrukce všech zde použitých modelů je uveden v [Šta]. 10.5 Rozpoznávacı́ sı́t’ Konstrukce rozpoznávacı́ sı́tě popsaná v kap. 3.1.2 v tomto přı́padě nevyhovuje, nebot’ ne každý FST, resp. WFST je determinizovatelný. Pro přı́pady jazykového modelu, kde sı́t’ L ◦ G je determinizovatelná použijeme následujı́cı́ úpravu formule (3.2), resp. (3.1). Použijeme tak CLG = min [det [C ◦ min(det(L ◦ G))]] (10.1) HCLG = de [min (det (en (H ◦ CLG)))] pro sı́t’ s kontextově závislými fonémy, resp. HLG = de {min [det [en [H ◦ min(det(L ◦ G))]]]} (10.2) pro sı́t’ s kontextově nezávislými fonémy. Pokud sı́t’ L ◦ G nenı́ determinizovatelná, použijeme CLG = de [min (det (en (C ◦ L)))] ◦ G , (10.3) HCLG = de [min (det (en (H ◦ CLG)))] 95 pro sı́t’ s kontextově závislými fonémy, resp. HLG = de [min (det (en (H ◦ L)))] ◦ G (10.4) pro sı́t’ s kontextově nezávislými fonémy. Poznamenejme, že ohodnocené překladové automaty L a H uvedené v (10.1) až (10.4) jsou uzavřené (kap. 2.6.3), operace en, resp. de znamenajı́ zakódovánı́ WFST na FSA, resp. dekódovánı́ FSA na WFST přes nějaký pomocný FST (kap. 2.6.18 ). V přı́padě použitı́ shlukovaných stavů v akustických modelech (kap. 5.3) je nutné před vlastnı́ konstrukcı́ HCLG sı́tě přeindexovat vstupnı́ symboly CLG v (10.1), resp. (10.3) sı́tě na indexy modelů HMM tak jak je tomu v HTK knihovnách (kap.7.4). 10.6 Experimentálnı́ srovnánı́ dostupných dekodérů Pro porovnánı́ jednotlivých dekodérů byly použity akustické HMM modely se čtyřmi hustotnı́mi funkcemi natrénované na celé databázi SPEECON, části dospělých lidı́. • testovacı́ promluvy jsou podmnožinou trénovacı́ch promluv pro akustické modely, • testovacı́ promluvy jsou ekvivalentnı́ trénovacı́m promluvám jazykového modelu. Jak již bylo uvedeno, k dispozici jsou 3 dekodéry s Viterbiho algoritmem. 1. drecog z AT&T DCD nástrojů popsaných (kapitola 6.1.3). Ten je dále rozdělen na • kontextový HCLG - automat reprezentujı́cı́ HMM je zakomponován do rozpoznávacı́ sı́tě HCLG - vstupnı́ symboly představujı́ stavy HMM, • kontextový CLG - vstupnı́ symboly rozpoznávacı́ sı́tě CLG představujı́ jednotlivé HMM. Jejich pravděpodobnosti setrvánı́ ve stavu jsou přepočı́távány při konverzi z HTK modelů tak, jak je uvedeno v kap. 7.7. 2. rct v režimu Viterbiho dekodéru (kapitola 7.8). 3. HVite z HTK (kapitola 5.5). Tento test si klade za cı́l porovnat jednotlivé dekodéry podle výkonu, resp. časové náročnosti. V testech je vždy experimentálně nalezen násobitel jazykového modelu, poté se s tı́mto parametrem provádı́ výkonnostnı́ test. V tomto srovnávacı́m testu byl použit bigramový model slov s Katzovým vyhlazovánı́m. 10.6.1 Nalezenı́ optimálnı́ho násobitele jazykového modelu Pro dosaženı́ optimálnı́ch výsledků bylo nutné nalézt hodnotu koeficientu násobitele vah jazykového modelu. Obr. 10.1 a tab. 10.1 ukazuje výsledky testu pro jednotlivé druhy dekodérů. Záměrně zde byla zvolena vysoká hodnota kpp pro dosaženı́ nejvyššı́ho možného skóre. Odtud plynou i vysoké časy rozpoznávánı́ v grafu. 96 typ drecog CLG drecog HCLG rct HVite násobitel vah RN 30 7.4 4 5 Tabulka 10.1: Optimálnı́ velikost násobitele vah RN pro jednotlivé dekodéry dle testů Obrázek 10.1: Závislost úspěšnosti a koeficientů násobitele vah RN na době rozpoznávánı́ - 125 slov, databáze SPEECON 10.6.2 Vliv pásového prořezávánı́ Vliv koeficientu pásového prořezávánı́ (dále jen kpp) rozpoznávacı́ sı́tě demonstruje schopnosti rozpoznávacı́ch systémů, které nemohou fungovat jednoznačně s danými parametry podobně jako v předchozı́m přı́padě s násobitelem vah RN. Obr. 10.2 ukazuje výsledek závislostı́ na koeficientu pásového prořezávánı́ pro položky typu ”CD” z databáze SPEECON. Seřazenı́ jednotlivých dekodérů od nejrychlejšı́ho k nejpomalejšı́mu je shrnuto v tabulce 10.2. 97 Obrázek 10.2: Závislost úspěšnosti a koeficientů pásového prořezávánı́ - kpp na době rozpoznávánı́ - 125 slov, databáze SPEECON typ drecog HCLG HVite drecog CLG rct kpp [-] 21 70 100 100 čas [sec] 113 163 175 1550 úspěšnost [%] 97.32 96.34 89.02 94.88 Tabulka 10.2: Výsledky testů jednotlivých dekodérů 10.6.3 Vliv architektury Bylo realizováno porovnánı́ dekodéru rct přeloženého pro 32 a 64 bitovou architekturu x86. Výsledkem bylo rychlejšı́ dekódovánı́ až o 25% na 64 bitové platformě. 10.6.4 Vyhodnocenı́ srovnávacı́ch testů dekodérů Na základě testů z nichž vyšel nejlépe nástroj firmy AT&T drecog v módu rozpoznávacı́ sı́tě se vstupnı́mi symboly stavů HMM, tj. rozpoznávacı́ sı́t’ typu HCLG, resp. HLG, byl tento typ dekodéru použit i pro následujı́cı́ test, který posoudı́ náročnost navrženého n-gramového jazykového modelu založeného na třı́dách slov pro jednotlivá n. 10.7 Srovnávacı́ test jazykových modelů Test je uzavřený, tj. že testovacı́ množina dat je podmnožinou trénovacı́ množiny dat. Znamená to, že 98 • testovacı́ promluvy jsou podmnožinou trénovacı́ch promluv pro akustické modely, • testovacı́ promluvy jsou ekvivalentnı́ trénovacı́m promluvám jazykového modelu. Testovacı́ sada dat představuje položky typu S0, kde se jedná celkem o 111 vět, 954 slov a 5769 znaků, viz přı́klady nı́že. Počet všech navzájem různých slov je N = 663. Ukázka 3 vět z položek S0 je uvedena nı́že. a nemohla tu vzniknout ani tradičnı́ všeobecně přijı́maná autokracie za těch pět let jsem ho přece jen trochu ochočil že už mi leccos řekl spı́š si myslı́m že by měl žı́t podle zákonů svaté tóry Převedeme-li věty na slabiky algoritmem PUML uvedeným v kapitole 7 a popsaným v [Lá05], dostaneme testovacı́ set o 111 větách a 2950 slabikách (model mezislovnı́ krátké pauzy se zde také počı́tá jako slabika). Počet všech navzájem různých slabik je N = 689. Pro hlavnı́ testovánı́ byly použity následujı́cı́ jazykové modely. 1. uniformnı́ jazykový model - v grafech a tabulkách označen pı́smenem U. Model je použit z důvodů možnosti porovnávánı́ s ostatnı́mi jazykovými modely. Protože sı́t’ LG tohoto modelu je determinizovatelná, byla použita optimalizovanějšı́ forma rozpoznávacı́ sı́tě (10.2), resp. (10.1). 2. n-gramový model založený na morfologických kódech slov - v grafech a tabulkách označen MCnn. Z důvodu nedeterminizovatelnosti sı́tě LG tohoto modelu byla použita méně optimalizovaná forma rozpoznávacı́ sı́tě, tj. (10.4), resp. (10.3). Maximálnı́ úroveň těchto třı́dových n-gramů je limitována hardwarem. Pro představu uved’me, že nejsložitějšı́ sı́t’ v testech, tj. binárnı́ reprezentace quadragramového modelu (8 mil. stavů. 15 mil. přech.) pro monofóny představuje soubor o velikosti cca 300MB. 10.7.1 Monofóny Srovnánı́ výsledků testů pro monofonnı́ rozpoznávač s uniformnı́m jazykovým modelem a n-gramovými modely založených na morfologických kódech popsaných v kapitole 9 je uvedeno v grafech na obr. 10.3. Tabulka 10.3 zobrazuje parametry a výsledky jednotlivých pokusů. Násobitel vah byl v tomto přı́padě pro uniformnı́ rozdělenı́ slov 1 a pro jazykové modely založené na morfologických kódech 4.1. 99 Obrázek 10.3: Uzavřený test, monofóny, 46 hustotnı́ch funkcı́, N = 663 slov typ JM uniformnı́ MC - bigram MC - trigram MC - quadragram složitost G 669/1993 235/63713 3622/328309 17192/895459 složitost HLG 7257/12940 53491/155684 1582699/3088613 7849147/14726588 úspěšnost [%] 70.44 90.36 96.75 98.01 přesnost [%] 66.67 89.31 96.23 97.59 čas [sec] 186 1552 9099 12776 kpp [-] 206 41 46 47 Tabulka 10.3: Uzavřený test, monofóny, 46 hustotnı́ch funkcı́, N = 663 slov Srovnánı́ výsledků testů pro monofonnı́ rozpoznávač založený na slabikách s uniformnı́m a n-gramovým jazykovým modelem je na obr. 10.4. Tabulka 10.4 zobrazuje vybraná nejlepšı́ skóre pro jednotlivé jazykové modely. Všechny modely použı́vajı́ násobitel vah 5.1 krom uniformnı́ho (1). 100 Obrázek 10.4: Uzavřený test jazykového modelu založeného na slabikách, monofóny, 46 hustotnı́ch funkcı́, N = 689 slabik typ JM uniformnı́ bigram trigram quadragram pentagram hexagram složitost G 694/2759 694/3087 2398/7302 4824/12446 7434/17747 10016/22936 složitost HLG 1665/3788 8722/18220 23234/47852 47594/98206 78046/161498 110502/229795 úspěšnost [%] 31.36 41.80 52.64 55.53 55.76 55.93 přesnost [%] 23.63 41.15 51.76 54.58 54.85 55.02 čas [sec] 70 61 87 96 100 101 kpp [-] 196 21 21 21 21 21 Tabulka 10.4: Uzavřený test jazykového modelu založeného na slabikách, monofóny, 46 hustotnı́ch funkcı́, N = 689 slabik Nepřesnosti jsou způsobeny: • fonetickou transkripcı́ slabik. Napřı́klad slovo op-řel bude foneticky přeloženo na slovo ob-řel, • model krátké pauzy umožňuje přeskočit jediný emitujı́cı́ stav, který HMM má. Vede to na vysoký počet výskytů modelu pro krátkou pauzu v rozpoznané větě. Úspěšnost uniformnı́ho modelu pro slabiky byla dle testů o 10% většı́ než přesnost. 10.7.2 Difóny Vstupnı́ data jsou stejná jako v podkapitole 10.7.1. Zde se testujı́ kontextově závislé fonémy - difóny. Výsledek testu analogický s obr. 10.3 je na obr. 10.5. Srovnánı́ pomocı́ tab. 10.5 umožňuje srovnánı́ s ostatnı́mi akustickými modely. n-gramové jazykové modely v tomto testu zde měly použity násobitel vah 5.1 (uniformnı́ pak 1). Poznamenejme, že 101 v tomto přı́padě nenı́ jistá, zda poslednı́ hodnota pro trigramový model je konečná. Zde už šlo o velmi rozsáhlou sı́t’. Z důvodů časové náročnosti byl test předčasně ukončen. Obrázek 10.5: Uzavřený test, difóny, 46 hustotnı́ch funkcı́, N = 663 slov Srovnánı́ výsledků rozpoznávánı́ pro různý počet hustotnı́ch funkcı́ je na obr. 10.6. Obrázek 10.6: Uzavřený test, difóny, bigramový model založený na morfologických kódech, srovnánı́ pro 16, 23 a 46 hustotnı́ch funkcı́, N = 663 slov 102 typ JM uniformnı́ MC - bigram MC - trigram složitost G 669/1993 235/63713 3622/328309 složitost HLG 12025/18576 85703/283042 515940/901199 úspěšnost [%] 81.55 91.40 97.69 přesnost [%] 51.36 88.16 95.91 čas [sec] 285 4012 11909 kpp [-] 131 51 51 Tabulka 10.5: Uzavřený test, difóny, 46 hustotnı́ch funkcı́, N = 663 slov 10.7.3 Trifóny Vstupnı́ data jsou stejná jako v podkapitole 10.7.1. Zde se testujı́ kontextově závislé fonémy - trifóny. Výsledek testu analogický s obr. 10.3 je na obr. 10.7. Tab. 10.6 opět shrnuje jednotlivé testy uniformnı́ho (koef. násobitele vah rozpoznávacı́ sı́tě zvolen 1) a na morfologických kódech založeného modelu. Obrázek 10.7: Uzavřený test, trifóny, 46 hustotnı́ch funkcı́, N = 663 slov typ JM uniformnı́ MC - bigram MC - trigram složitost G 669/1993 235/63713 3622/328309 složitost HLG 10697/18630 66253/255669 411325/776114 úspěšnost [%] 78.20 92.24 98.32 přesnost [%] 71.38 90.78 98.01 čas [sec] 307 727 1780 kpp [-] 156 31 36 Tabulka 10.6: Uzavřený test, trifóny, 46 hustotnı́ch funkcı́, N = 663 slov Srovnánı́ výsledků rozpoznávánı́ pro různý počet hustotnı́ch funkcı́ je na obr. 10.8. 103 Obrázek 10.8: Uzavřený test, trifóny, bigramový model založený na morfologických kódech, srovnánı́ pro 16, 23 a 46 hustotnı́ch funkcı́, N = 663 slov 104 Kapitola 11 Shrnutı́ 11.1 Splněnı́ cı́lů Základnı́mi cı́li bylo: 1. vytvořit algoritmus, který sestrojı́ na základě základnı́ch znalostı́ i velmi složité překladové stavové automaty reprezentujı́cı́ jednotlivé části rozpoznávacı́ sı́tě, 2. otestovat ATT nástroje pro český jazyk, 3. vytvořit algoritmus pro možnou konverzi modelů mezi HTK a ATT nástroji, 4. vytvořit vlastnı́ dekodér umožňujı́cı́ ze zadané optimalizované rozpoznávacı́ sı́tě v ATT formátu a akustických modelů v HTK formátu rozpoznat vstupnı́ promluvu, 5. nalézt vhodný zdroj a způsob zpracovánı́ dat pro vytvořenı́ českého jazykového modelu, 6. navrhnout jazykový model pro český jazyk, který by kombinoval výhody spočı́vajı́cı́ v možnostech nástrojů pro zpracovánı́ stavových automatů a možnosti použitı́ morfologicky označkovaného korpusu. 11.1.1 Algoritmus generovánı́ FST z bloků částečných znalostı́ Pro syntézu FST z bloků částečných znalostı́ byl vyvinut rct. Způsob použitı́ programu rct pro generovánı́ konečných automatů reprezentujı́cı́ jednotlivé části rozpoznávacı́ sı́tě je uveden v kap. 3. 11.1.2 Otestovánı́ ATT nástrojů pro český jazyk Byly rozebrány a prověřeny možnosti nové teorie vážených překladových automatů při zpracovánı́ českého jazyka. V uváděných experimentech (kap. 10) byly pozorovány jevy, které jsou pro český jazyk charakteristické: • velké množstvı́ krátkých jednoslabičných předložek v českém jazyce způsobuje jejich záměnu, či nechtěné vloženı́, 105 • akustická podobnost slov způsobuje záměnu rovněž, • problém homonym může vést k mylnému výsledku při použitı́ JM založeného na třı́dách slov. 11.1.3 Konverze akustických modelů z HTK do ATT Způsob vytvořenı́ akustických modelů pro ATT nástroje pomocı́ rct (modul htk base) je uveden v kap. 8.4. Připomeňme, že zde byly použity HTK knihovny pro načı́tánı́ HMM, takže je zaručena kompatibilita s řadou jiných projektů. 11.1.4 Vytvořenı́ Viterbiho dekodéru Manuál k rozpoznávánı́ pomocı́ rct je uveden v kap. 7.8. Základnı́ modul pro rozpoznávánı́ je pojmenován asr base. Kvůli časové náročnosti (kap. 10.6.2) byl dalšı́ vývoj pozastaven a testy pokračovaly s nejrychlejšı́m nástrojem ATT drecog. Nicméně z důvodů jednoduchosti a přehlednosti algoritmu může být výhradně použit pro studijnı́ účely. 11.1.5 Zdroj pro jazykový model Zde byl s výhodou použit Český národnı́ korpus [Fila] umožňujı́cı́ přı́stup k označkovaným textům. Popis použitı́ UCNK pro účely rozpoznávánı́ je podrobně popsán v kap. 9.1. Modul rct pro připojenı́ na UCNK server je pojmenován ucnk comm anton. 11.1.6 Návrh JM Způsob návrhu jazykového modelu založeného na třı́dách slov je popsán v kapitolách 1.5.3, 9.1 a 10. Experimenty jsou uvedeny v kapitole 10. Model se vyznačuje relativně dobrou úspěšnostı́ za cenu vysoké složitosti rozpoznávacı́ sı́tě a tı́m i pomalostı́ v rozpoznávánı́ (cca 1-4 sec na jedno slovo, tj. 3 - 12 krát pomalejšı́, než verze JM s uniformnı́m modelem). 11.2 Přı́nosy výsledků práce V kapitolách 3 a 6 je podrobně popsán způsob modelovánı́ rozpoznávacı́ sı́tě a použitı́ nástrojů firmy AT&T pro rozpoznávánı́ mluvené řeči. Velmi podrobně je provedena rešerše teprve v nedávné době publikované rozsáhlé nové teorie vážených překladových automatů a nalezena řada souvislostı́ této teorie s jinými významnými technikami rozpoznávánı́ řeči. Poznamenejme, že v České Republice zatı́m nikde nenı́ podobná rešerše uvedena. Nejde jen o použı́vánı́ nástrojů s uzavřeným kódem (knihovny GRM, FSM, DCD a LEXTOOLS ) ale nově i o možnost použı́t otevřenou variantu FSM knihovny - Open-FST [Ril]. Dále byl vytvořen způsob zı́skávánı́ cenných dat z Českého národnı́ho korpusu a jejich následné využitı́ v podobě konstrukce jazykového modelu založeného na těchto datech. 106 Jedná se hlavně o zı́skávánı́ frekvenčnı́ analýzy potřebných slov, všech tvarů slov k danému lemmatu a jejich morfologických značek. Vše je možné nalézt kromě kapitoly 9.1 i ve velmi podrobné formě v [Šta] a [Štb]. 107 Literatura [Alla] [Allb] [All07] [Cas03] [Cho06] [Dra06] [Fila] [Filb] [Haj04] [Jel85a] Allauzen, C., Mohri, M., Roark, B. A general weighted grammar library. Allauzen, C., Mohri, M., Roark, B. GRM library - grammar library. http://www.research.att.com/ fsmtools/grm/. Allauzen, C., Riley, M., Schalkwyk, J., Skut, W., Mohri, M. OpenFst: A general and efficient weighted finite-state transducer library. In Proceedings of the Ninth International Conference on Implementation and Application of Automata, (CIAA 2007), volume 4783 of Lecture Notes in Computer Science, pages 11–23. Springer, 2007. http://www.openfst.org. Caseiro, D., Trancoso, I. A tail-sharing WFST composition algorithm for large vocabulary speech recognition. Acoustics, Speech, and Signal Processing, 2003. Proceedings. (ICASSP ’03). 2003 IEEE International Conference on., 1:356– 359, 2003. Choueiter, G., Povey, D., Chen, S.F., Zweig, G. Morpheme-based language modeling for arabic LVCSR. Acoustics, Speech and Signal Processing, 2006. ICASSP 2006 Proceedings. 2006 IEEE International Conference on., 1:1053– 1056, 2006. Drábková, J. Tvorba jazykového modelu založeného na třı́dách. Disertačnı́ práce, FM, TUL, Liberec, 2006. Filozofická fakulta University Karlovy. Český národnı́ korpus - dostupné korpusy. http://ucnk.ff.cuni.cz/struktura.php. Filozofická fakulta University Karlovy. Český národnı́ korpus - SYN2000. Ústav Českého národnı́ho korpusu FF UK, Praha 2000. Dostupný z WWW: http://www.korpus.cz. Hajič, J. Disambiguation of rich inflection (computational morphology of czech). Karolinum Charles University Press, Praha, 1, 2004. Jelinek, F. The developement of an experimental discrete dictation recognizer. Proceedings of the IEEE., 11:1616–1624, 1985. 108 [Jel85b] [Jul] [Kat87] [Kop] [Kor02] [Kui86] [Lá05] [Mel03] [Moha] [Mohb] [Moh94] [Moh96] [Moh97a] [Moh97b] [Moh97c] [Moh00] [Moh02a] Jelinek, F. Markov source modeling of text generation. The Impact of Processing Techniques on Communication (Skwirzynski, J.K., ed.) Nijhoff, Dordrecht, The Netherlands., 1985. Julius project team, Nagoya Institute of Technology. Open-source large vocabulary CSR engine julius. http://julius.sourceforge.jp/. Katz, S., M. Estimation of probabilities from sparse data for the language model component of a speech recognizer. IEEE Transaction on Acoustic, Speech, and Signal Processing, 35(3):400–401, 1987. Kopřivová, M., Kocek, J. Manuál korpusového manažeru bonito. http://ucnk.ff.cuni.cz/bonito. Korenář, V. Stochastické procesy. Vysoká škola ekonomická v Praze - ISBN 80-245-0311-5, 1. edition, 2002. Kuich, W., Salomaa, A. Semirings, automata, languages. Number 5 in EATCS Monographs on Theoretical Computer Science. Springer-Verlag Berlin, Germany., 1986. Lánský, J. Slabiková komprese. Diplomová práce MFF UK, 2005. Melichar, B. Jazyky a překlady. ČVUT Praha, 2003. Mohri, M., Pereira, F., Railey, M. AT&T FSM library - finite-state machine library. http://www.research.att.com/ fsmtools/fsm/. Mohri, M., Railey, M. DCD library - speech recognition decoder library. http://www.research.att.com/ fsmtools/dcd/. Mohri, M., Pereira, F. Compact representations by finite-state transducers. 32nd Annual Meeting of the Association for Computational Linguistics, San Francisco, California, 1994. Mohri, M., Pereira, F., Railey, M. Weighted automata in text and speech processing. Extended Finite State Models of Language: Proceedings of the ECAI’96 Workshop, pages 46–50, 1996. Mohri, M. Finite-state transducers in language and speech processing. Association for Computational Linguistic, 23:2, 1997. Mohri, M. Minimization algorithms for sequential transducter. Theoretical Computer science, 234:177–201, 1997. Mohri, M., Riley, M. Network optimizations for large vocabulary speech recognition. MIT Press , Cambridge, Massachusetts, 25:3, 1997. Mohri, M., Pereira, F. The design principles of weighted finite-state transducer library. Theoretical Computer Sience, 231:17–32, 2000. Mohri, M., Pereira, F. Weighted finite state transducers in speech recognition. Computer Speech and Language, 1:69–88, 2002. 109 [Moh02b] Mohri, M., Pereira, F. Weighted finite state transducers in speech recognition. Computer Speech and Language, 1:69–88, 2002. [Moh04] Mohri, M., Pereira, F. A generalized construction of integrated speech recognition transducers. Acoustics, Speech, and Signal Processing, 2004. Proceedings. (ICASSP ’04). IEEE International Conference on, 1:I– 761–4, 2004. [Ney94] Ney, H., Essen, U., Knesser, R. On structuring probabilistic dependences in stochastic language modeling. Computer Speech and Language., 8(1):1–38, 1994. [Ney95] Ney, H., Knesser, R. Improved backing-off for m-gram language modelling. Proceedings of ICASSP, 1:181–184, 1995. [Nou04] Nouza, J., Nouza, T. A voice dictation system for a million-word czech vocabulary. Proc. of ICCCT 2004, Austin, USA, ISBN 980-6560-17-5., 1:142–152, 2004. [Per97] Pereira, F., Riley, M. Speech recognition by composition of weighted finite automata. MIT Press , Cambridge, Massachusetts, 1997. [Pol03] Pollák, P., Černocký, J. Czech Speecon Adult database, Speech Driven Interfaces for Consumer applications (speecon) project. FEL ČVUT Praha, 2003. [Psu95] Psutka, J. Komunikace s počı́tačem mluvenou řečı́. Academia, nakladatelstvı́ Akademie věd ČR, ISBN 80-200-0203-0, 1. edition, 1995. [Psu06] Psutka, J., Muller, L., Matoušek, J., Radová, V. Mluvı́me s počı́tačem česky. Academia, středisko společných činnostı́ AV ČR, ISBN 80-200-1309-1, 1. edition, 2006. [Rab93] Rabiner, L., Juang, B., H. Fundamentals Of Speech Recognition. Englewood Cliffs, N.J., PTR Prentice Hall, c1993. 507 p. TK7895.S65R33, 1993. [Rev92] Revuz, D. Minimisation of acyclic deterministic automata in linear time. Theoretical Computer Science., 92:181–189, 1992. [Ril] Riley, M. Openfst library. http://openfst.org/. [Roc97] Roche, E., Schabes, Y. Finite-State Language Processing. 464p, ISBN 0-26218182-7, 1997. [Rog98] Rogalewicz, V. Pravděpodobnost a statistika pro inženýry. Vydavatelstvı́ ČVUT, 1. edition, 1998. [Sed03] Sedgewick, R. Algoritmy v C. SoftPress s.r.o, ISBN 80-96497-56-9, 1 edition, 2003. [Sim78] Simon, I. Limited subsets of a free monoid. Proceedings of the 19th Annual Symposium on Foundation of Computer Science., pages 143–150, 1978. [Spo07] Spoustová, D., Hajič, J., Votrubec, J., Krbec, P., Květoň, P. The best of two worlds: Cooperation of statistical and rule-based taggers for czech. Proceedings of the Workshop on Balto-Slavonic Natural Language Processing., pages 67–74, 2007. 110 [Sza01] [Tě85] [Uhl07] [Vil06] [wIS] [wli] [wsp] [wvo] [wwwa] [wwwb] [You02] [Šta] [Štb] Szarvas, M., Furui, S. The use of finite-state transducers for modeling phonological and morphological constraints in automatic speech recognition. Tokyo Institute of Technology., 1, 2001. Těšitelová, M. a kol. Kvantitativnı́ charakteristiky současné češtiny. Academica, 1985. Uhlı́ř, J. a kol. Technologie hlasových komunikacı́. ČVUT v Praze, ISBN 807184-786-0, 2007. Villarejo, L. Building a morphological analyzer for regular nouns in swedish using FSTs. NLP1 - GSLT courses., 1, 2006. Institute for signal and information processing - speech recognition. http://www.isip.piconepress.com/projects/speech/. LibriVox. http://librivox.org/. The CMU sphinx group open source speech recognition engines. http://cmusphinx.sourceforge.net/. VoxForge. http://www.voxforge.org/. ASRNews. http://www.asrnews.com/. HTK. http://htk.eng.cam.ac.uk/. Young, S. The HTK Book (for HTK Version 3.2.1). Microsoft Corporation, Cambridge University Engineering Department, 3.2 edition, 2002. Štemberk, P. AT&T FSM & GRM knihovny pro rozpoznávánı́ řeči. http://gaya.agron.org/wz/skola/fsm-howto/grmtools.html. Štemberk, P. UCNK korpus jako zdroj dat pro rozpoznávánı́ řeči. http://gaya.agron.org/wz/ucnk-howto/. 111 Autorovy publikace [Št03] [Št04a] [Št04b] [Št04c] [Št04d] [Št05a] [Št05b] [Št05c] [Št05d] [Št05e] Štemberk, P. Miniaturnı́ platformy s procesorem ARM pro zpracovánı́ řeči. Přı́spěvek ve sbornı́ku, Analýza a zpracovánı́ signálů IV Vydavatelstvı́ ČVUT, Praha, ISBN 80-01-02768-6, 1:129–139, 2003. Štemberk, P. Implementation of self-designed IIR filter. POSTER 2004 [CDROM], Praha: ČVUT v Praze, FEL, 2004. Štemberk, P. Introduction to speech recognition based on FSM. Přı́spěvek ve sbornı́ku, 14. Czech-German Workshop , AV ČR, Ústav radiotechniky a elektroniky, Praha, ISBN 80-86269-11-6, 1:106–109, 2004. Štemberk, P. Platforma LART a zpracovánı́ řeči. Přı́spěvek ve sbornı́ku, Analýza a zpracovánı́ signálů V, Vydavatelstvı́ ČVUT, Praha, ISBN 80-01-03139-X, 1:66–76, 2004. Štemberk, P. Speech recognition based on FSM and HTK toolkits. Přı́spěvek ve sbornı́ku, Digital Technologies 2004, EDIS-Žilina University publishers, Žilina, ISBN 80-8070-334-5, 1:55–60, 2004. Štemberk, P. Comparison of chosen ASRs based on FSM. Přı́spěvek ve sbornı́ku, POSTER 2006 [CD-ROM]. Praha: ČVUT FEL Praha, 2005. Štemberk, P. Increasing the recognition speed by using FSM. Přı́spěvek ve sbornı́ku, Electronic Speech Signal Processing 2005, TUDpress, Dresden, ISBN 3-938863-17-X, 1:310–315, 2005. Štemberk, P. Modernı́ metody automatického rozpoznávánı́ řeči. Přı́spěvek ve sbornı́ku, ATP 2005, VUT Brno, Fakulta elektrotechniky a komunikačnı́ch technologiı́, Brno, ISBN 80-214-2925-9, 1:87–94, 2005. Štemberk, P. Speech recognition using finite-state automata. Přı́spěvek ve sbornı́ku, Analýza a zpracován signálů VI. Vydavatelstvı́ ČVUT, Praha, ISBN 80-01-03217-5, 1:114–124, 2005. Štemberk, P. Speech recognizer based on the FSM. Přı́spěvek ve sbornı́ku, POSTER 2005 [CDROM]. ČVUT FEL Praha, pages 66–76, 2005. 112 [Št05f] Štemberk, P. Using AT&T FSM toolkit for speech recognition. Přı́spěvek ve sbornı́ku, Analýza a zpracovánı́ řečových a biologických signálů. Vydavatelstvı́ ČVUT, Praha, ISBN 80-01-03412-7., 1:36–45, 2005. [Št05g] Štemberk, P. Using FSM based ASR on the czech speech database SPEECON. Přı́spěvek ve sbornı́ku, Digital Technologies 2005, EDIS-Žilina University publishers, Žilina, ISBN 80-8070-486-4, 1:76–79, 2005. [Št05h] Štemberk, P.(50%), Hanžl, V.(50%). Finite-state transducer toolkit for faster ASR. In ASIDE 2005 - Applied Spoken Language Interaction in Distributed Environments - Book of Abstracts [CD-ROM]. Grenoble : International Speech Communication Association, ISBN 87-90834-85-2, 1, 2005. [Št06a] Štemberk, P. Speech recognizer construction using AT&T toolkit. Přı́spěvek ve sbornı́ku, Analýza a zpracovánı́ řečových a biologických signálů - Sbornı́k pracı́ 2006. Vydavatelstvı́ ČVUT, Praha, ISBN 80-01-03621-9, 1:65–71, 2006. [Št06b] Štemberk, P. Speech recognizer construction using the optimized network. Přı́spěvek ve sbornı́ku, Nové smery v spracovánı́ signálov VIII, Akadéma ozbrojených sı́l gen. Milana R. Štefánika, Tatranské Zruby, ISBN 80-8040-294-9, 1:301– 304, 2006. [Št07] Štemberk, P. Použitı́ morfologických kódů pro český jazykový model. Přı́spěvek ve sbornı́ku, Analýza a zpracovánı́ řečových a biologických signálů. Vydavatelstvı́ ČVUT, Praha, ISBN 978-80-01-03940-3, 1:43–48, 2007. 113 Literatura použitá pro tvorbu publikacı́ testovánı́ a vývoj software [Her01] Herout , P. Učebnice jazyka C. Kopp, České Budějovice, ISBN 80-85828-21-9, 2001. [Her04] Herout , P. Učebnice jazyka C - 2.dı́l. Kopp, České Budějovice, ISBN 80-7232221-4, 2004. [itwa] GAWK. http://www.gnu.org/software/gawk/. [itwb] Gnuplot homepage. http://www.gnuplot.info/. [itwc] Graphviz - Graph Visualization Software. http://www.graphviz.org/. [itwd] MySQL C API. http://dev.mysql.com/doc/refman/4.1/en/c.html. [itwe] MYSQL manuál. http://mm.gene.cz/. [itwf] Sun Grid Engine. http://www.sun.com/software/sge/. [itwg] The GAWK Manual. http://www.cs.utah.edu/dept/old/texinfo/gawk/gawk_toc.html. [itwh] UNIX Shell Script Tutorials & Reference. http://www.injunea.demon.co.uk/ /pages/page201.htm. [itwi] Československé sdruženı́ uživatelů TeXu. http://www.cstug.cz/. [Sed03] Sedgewick, R. Algoritmy v C. SoftPress s.r.o, ISBN 80-96497-56-9, 1 edition, 2003. [Vir02a] Virius , M. Od C k C++. Kopp, České Budějovice, ISBN 80-7232-110-2, 2002. [Vir02b] Virius , M. Od C++ k C#. Kopp, České Budějovice, ISBN 80-7232-176-5, 2002. 114