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

Podobné dokumenty