Experimentální stanovení entropie českého textu Antonín Novák
[email protected] Tomáš Báča
[email protected] 4. dubna 2012 Abstrakt Práce se zabývá analýzou českého textu. Zkoumali jsme syntaktickou strukturu psaného jazyka pomocí nástrojů teorie informace, zejména entropie. Zjistili jsme, že český jazyk vykazuje velkou redundanci a tím silnou míru vnitřní struktury. Výsledkem práce je stanovení entropie češtiny a konstrukce prediktoru českého textu včetně implementace komunikačního kompresního kanálu založeného na znalosti pravděpodobnostního modelu českých znaků a slov.
Motivace V roce 1950 C. E. Shannon [1] publikoval článek pojednávající o možnostech predikce anglického textu. Jeho experimenty byly založeny na myšlence, že anglický jazyk vykazuje velmi silná vnitřní pravidla syntaxe a při znalosti těchto pravidel není úplně náhodné, jaké písmeno či slovo bude následovat po tom, které už známe. Ukazuje se například, že pravděpodobnosti písmen následujících v souvislém anglickém textu po písmenu T nemají rovnoměrné rozdělení. Je to způsobeno např. tím, že v angličtině je nejčastějším slovem člen the tudíž je poměrně pravděpodobné, že po T bude následovat právě H a ne například Q. Tyto a jiné podněty dovedly Shannona k tomu zkoumat míru této vnitřní struktury syntaxe s využitím nástrojů teorie informace. Intuitivně lze očekávat, že „méně entropickýÿ (později definujeme přesněji) text bude snadnější predikovat, jelikož je „méně náhodnýÿ tudíž je svázán jistým množstvím pravidel, které jeho syntaktickou strukturu do jisté míry předurčují. Všechny používané logaritmy v této práci jsou dvojkového základu (pokud není uvedeno jinak).
Definice Neformálně řečeno, rozumný způsob, jak definovat entropii textu, je nahlížet na konkrétní jazyk jako na informační zdroj ((Xn )n∈N ) nad abecedou χ, pro který existuje pojem rychlosti entropie (entropie na znak). Tento způsob definice se ukazuje být opodstatněný a přináší své výsledky [1]. Dle [2, s. 173] existuje několik způsobů, jak tuto rychlost entropie najít. Jedním z nich je například metoda stanovení horní a dolní hranice rychlost entropie pomocí „sázekÿ na následující písmena obdobně jako při sázkách na koně a výsledky interpretovat pomocí narůstajícího „bohatstvíÿ z případných výher. Tato partie teorie informace nazývána gambling je rozebrána v [2]. My jsme v naší práci postupovali podobně jako C. E. Shannon - výpočtem z definice. Pro to si nejprve musíme přesně zavést několik pojmů. Budeme tedy určovat entropii českého textu jednou nad abecedou bez mezery a za využití pravděpodobností koncových a počátečních písmen a druhou pro abecedou obsahující mezeru. 1
Náhodné veličiny Písmeno Náhodná veličina X reprezentuje písmeno textu. Je to diskrétní náhodná veličina s rozdělením pX nad abecedou χ = {A,. . .,Ž, }. Písmeno CH, ačkoliv se jedná o dva znaky, uvažujeme jako jeden. Mezera je v abecedě χ přítomna při druhé variantě experimentu odhadování entropie. N-gram Náhodný vektor GN reprezentuje N-gram českého textu (N náhodných veličin X). Je definován pomocí pN , kde pN je pravděpodobnostní rozdělení N-gramu nad množinou všech Ngramů (uspořádaných n-tic písmen) χN . Například množina 2-gramů (digramů) je χ2 ={AA,. . .,ŽŽ} ve variantě abecedy bez mezer. Čeština nární.
Čeština je náhodný proces ((Xn )n∈N ) nad abecedou χ, který považujeme za stacio-
Střední podmíněná entropie písmena Střední podmíněná entropie písmena X podmíněná (N-1)-gramem je: HN
= H(X|GN −1 ) = X = pN −1 (y)H(X|GN −1 = y) = y∈χN −1
= −
X X y∈χN −1
pN (yx)log
x∈χ
pN (yx) pN −1 (y)
(1)
a vyjadřuje průměrné množství informace, kterou se dozvíme při pozorování X při předcházející znalosti předchozích N-1 písmen.
Mezní rychlost entropie Mezní rychlost entropie náhodného procesu ((Xn )n∈N ) je definována jako limita posloupnosti středních podmíněných entropií a tedy platí: ˜ H((X n )n∈N ) = lim HN N →∞
(2)
Výpočet Jak jsme již zmínili výše, experiment jsme provedli pro dvě různé abecedy χ - s mezerou a bez mezery. CH bylo považováno za jedno písmeno. Všechna data vycházejí z 700 MB českého textu s diakritikou pocházejícího z české a světové literatury, který byl vhodně zpracován počítačem.
Odhady pravděpodobnostních rozdělení X a GN Rozdělení pX Pravděpodobností rozdělení pX odhadneme pomocí relativní četnosti písmen nad zkoumanými daty. Pro ilustraci uvádíme v tabulce 1 prvních osm nejčetnějších písmen. Rozdělení digramu G2 Podobným způsobem odhadneme pravděpodobnostního rozdělení veličiny G2 . Výsledkem je rozdělení p2 . Na obrázku 1 vidíme, že pravděpodobností rozdělení p2 není rovnoměrné - z toho je zřejmé, že syntaxe češtiny vykazuje vnitřní strukturu a slova jazyka se negenerují ze všech n-tic písmen rovnoměrně. Důkaz nerovnoměrnosti tohoto rozdělení není pro nás klíčový, proto jej ponecháváme bez důkazu jen pro ilustraci. Abeceda má uspořádání: A-Z, Á-Ž, CH. 2
písmeno e o a n l t s i
pst. 0.0832 0.0809 0.0759 0.0593 0.0570 0.0540 0.0472 0.0439
Tabulka 1: Nejčetnější písmena češtiny
0.015
0.01
0.005
0 5 40
10
35
15
30
20
25
25
20
30
15 10
35 5
40
Obrázek 1: Pravděpodobnostní rozdělení digramů Rozdělení trigramu G3 Odhad pravděpodobností trigramů p3 pro případ abecedy χ obsahující mezeru je analogický s odhadem p2 . Pokud mezeru nepovažujeme za znak abecedy, postup stanovení rozdělení se mírně změní. Musíme vzít v úvahu i trigramy, které spojují dvě po sobě jdoucí slova. Například v sousloví hnijící koudel bychom rádi započítali výskyt trigramů cík a íko. Formule popsaná v [1], pomocí které upravíme odhadnuté pravděpodobnosti, vypadá následovně: 3.83 1 1 pˆ3 (y1 y2 y3 ) + pT (y1 )p2 (y2 y3 ) + p2 (y1 y2 )pS (y3 ) (3) 5.83 5.83 5.83 kde pS (y1 ) je pst. že písmeno y1 je začínajícím znakem slova, pT (y3 ) je pst, že y3 je koncovým znakem slova. Hodnota 5.83 je průměrná délka českého slova délky větší než 3 a vážena výskytem slova v textu. 3.83 je průměrný počet trigramů uvnitř českého slova. pˆ3 je odhad na základě četnosti trojic písmen uvnitř slova. Tuto úpravu Shannon použil v [1] za předpokladu nezávislosti počátečního písmena jednoho slova a konečného písmena. Výpočtem s takto upraveným pravděpodobnostním rozdělením jsme dostali hodnotu H3 větší než H2 , což indikuje chybu odhadu rozdělení. Proto soudíme, že tato metoda není pro češtinu p3 (y1 y2 y3 ) =
3
možná a dále pokračujeme s původními pravděpodobnostmi p3 .
−3
10
−4
relativni cetnost
10
−5
10
−6
10
−7
10
−8
10
0
1
10
2
10
3
10
10
4
10
poradi cetnosti
Obrázek 2: Sestupně seřazené pravděpodobnosti trigramů v log-log měřítku
Četnosti slov 4-gramy a více již nebudeme konstruovat z podobných důvodů jako uvádí Shannon [1] - věrohodnost však takových dat je již daleko nižší než v případě trigramů. Lepším způsobem pro další aproximaci limity posloupnosti HN je použít četnosti slov. V [3] Zipf postuloval, že rovnice (4) platí pro mnoho různých jazyků. pn je relativní četnost n-tého nejčastějšího slova. My jsme pro češtinu určili tvar této rovnice (5). pn = pn =
k n
0.03/n0.6 0.1/n
(4) n ≤ 10 n > 10
(5)
Na obrázku 3 vidíme v log-log měřítku četnosti nejčastějších českých slov. Modře jsou vyznačena naše data, červeně aproximace k = 0.1 pro angličtinu dle Shannona [1]. Zeleně je naše aproximace (5) pro češtinu.
Rychlost entropie Pro stacionární náhodné procesy (a češtinu za něj považujeme) platí věta, že rychlost entropie se rovná mezní rychlosti entropie: 1 ˜ H(X1 , . . . , Xn ) = H((X n )n∈N ) n→∞ n Pro výpočet mezní rychlosti entropie použijeme vztah (2). Začneme postupně rozepisovat jednotlivé členy posloupnosti. Při prvním přiblížení uvažujeme jen počet písmen v abecedě (bez mezery): H((Xn )n∈N ) = lim
H0 = log|χ| = 5.39 bits/znak
4
(6)
data aproximace 2. radu aproximace 1. radu
−2
10
a
kde
−3
pst. slova v textu
10
dobre −4
10
zarizení −5
10
nevydrzel −6
10
−7
vtipnou
10
0
10
1
2
10
10
3
10 poradi cetnosti slova
4
5
10
10
Obrázek 3: Sestupně seřazené pravděpodobnosti slov v log-log měřítku Ve druhém uvažujeme jejich samotné četnosti:
H1 = −
X
pX (x)log(pX (x)) = 4.7187 bits/znak
(7)
x∈χ
Pro výpočet dalších středních podmíněných entropií si výraz (1) přepíšeme do vhodnější formy:
HN = H(X|GN −1 ) = −
X X
pN (yx)log
y∈χN −1 x∈χ
= −
X X
pN (yx) pN −1 (y)
pN (yx)[log(pN (yx)) − log(pN −1 (y))]
y∈χN −1 x∈χ
= −
X X
pN (yx)log(pN (yx)) − pN (yx)log(pN −1 (y))
y∈χN −1 x∈χ
= −
X X
pN (yx)log(pN (yx)) +
y∈χN −1 x∈χ
X y∈χN −1
log(pN −1 (y))
X |
= −
X X
pN (yx)log(pN (yx)) +
y∈χN −1 x∈χ
X y∈χN −1
Čili bude platit:
5
pN (yx)
x∈χ
{z
=pN−1 (y)
log(pN −1 (y))pN −1 (y)
} (8)
XX
H2 = H(X|G1 ) = −
y∈χ1
p2 (yx)log(p2 (yx)) +
x∈χ
X
log(p1 (y))p1 (y)
(9)
y∈χ1
|
{z
=−H1
}
= 8.4149 − 4.7187 = 3.6962 bits/znak a velmi podobně také pro trigramy: X XX log(p2 (y))p2 (y) p3 (yx)log(p3 (yx)) + H3 = H(X|G2 ) = − y∈χ2
x∈χ
(10)
y∈χ2
= 11.5935 − 8.4149 = 3.1786 bits/znak Při odhadu pravděpodobnostních rozdělení jsme diskutovali, že dále budeme postupovat podle aproximace pomocí četnosti slov rovnicí (5). Aby pn byla pravděpodobnost, musí pro ní platit: ∞ X
pn = 1
(11)
n=1
Je zřejmé že suma z rovnice (11) diverguje a tudíž součet nemůže být až do nekonečna. P Hodnota n, pro kterou se pn = 1 je 60800. Bez jakéhokoliv nároku na lepší odhad entropie slova ji stanovujeme jako: Hw = −
60800 X
pn log(pn ) = 12.04 bits/slovo = 2.07 bits/znak
(12)
n=1
Otázkou zůstává, s jakou hodnotou HN toto číslo ztotožnit. Ačkoliv je průměrná délka českého slova 5.83 znaků, tak entropie slova na znak je nižší než hodnota H5.83 . Důvodem, který zmiňuje i Shannon v [1], je, že slovo jazyka vykazuje silnější vnitřní strukturu než uspořádaná 6tice písmen, což vyústí v menší entropii bloku písmen poskládaného do slova, jakožto jazykové jednotky se silnou strukturou. Lze soudit, že entropie slova přísluší hodnotě přibližně H7 či H8 . abeceda 42 p. 43 p.
H0 5.39 5.42
H1 4.72 4.57
H2 3.69 3.71
H3 3.18 3.17
Hw 2.07 2.07
Tabulka 2: Posloupnost podmíněných entropií Vidíme, že jsou v podstatě zanedbatelné rozdíly mezi abecedou obsahující mezeru a abecedou bez mezery. Pokud češtinu modelujeme 2-Markovským modelem písmen, pak je její entropie rovna přibližně 3.17 bitů na písmeno. Pokud přistoupíme k modelování pomocí N-Markovského řetězce slov (kde N není příliš velké), pak lze očekávat, že entropie bude menší než námi zjištěná hodnota 2.07 bitů na písmeno. Ze znalosti českého jazyka je zřejmé, že věrnějším odhadem bude N-Markovský řetězec slov, kde N není příliš velké. Proto definujeme-li redundanci českého jazyka procentuální poměr entropie na znak mezi nezávislým náhodným zdrojem a N-Markovským řetězcem slov, pak redundance bude přibližně 40%.
Výsledky Entropie českého textu Zjistili jsme, že rozdíly v rychlosti entropie procesu nad abecedou obsahující mezeru a and abecedou bez mezery jsou zanedbatelné. Pokud češtinu modelujeme jako N-Markovkský řetězec 6
slov, kde N není příliš velké (jednotky), pak je rychlost entropie takového zdroje přibližně: H(((Xn )n∈N )) = ˙
2.07 bits/znak
(13)
Tabulky četnosti slov a písmen češtiny Pro výpočet entropie bylo třeba zkonstruovat tabulky četností písmen, digramů, trigramů a četnosti slov. Tyto tabulky jsou součástí práce a uvolňujeme je pod licencí Creative Commons Attribution-NonComercial-ShareAlike 3.0 Unported.
Prediktor textu 2-Markovský řetězec znaků Tento popis modeluje češtinu tak, že pravděpodobnost výskytu písmena je podmíněna dvěma předcházejícími. Tento popis přirozeně neposkytuje kvalitní predikci celých slov, avšak slouží dobře na predikci předložek, spojek či obecně kratších stavebních prvků češtiny. Následuje ukázka textu, který takový prediktor dokáže vygenerovat: jed_doostval_st_ja_př_sesi_e_dvalka__řejake_sen__měo_so_spro a_pjede_v_mustoabyto_a_pe_mne_přie_z_prby_ku_a_d_pako__mijí_ ohou_pby_i_skte_žeale_stle_ný_kola_dbyl_veprol_nter_v_e_m_mu 2-Markovský řetězec slov Podobně jako se znaky můžeme zacházet i se slovy. Za pomocí předchozí analýzy jsme byli schopni zkonstruovat prediktor, který maximalizuje pravděpodobnost podmíněnou dvěma předchozími slovy. Jeho výstup pro představu je možné vidět zde: jednoho_dne_se_vrátí_do_své_kanceláře_a_zavřel_oči_a_pak_se_ otočil_a_zamířil_k_němu_a_řekl_jsem_a_on_se_na_něj_a_jeho_hlas _zněl_trochu_drsně_díky_žaludečním_šťávám_a_projít_se_po_něm
Komunikační predikční kanál Ve své práci [1] Shannon popsal model komunikačního kanálu založeného na umístění identických prediktorů na vstupu a výstupu. Tento kanál přenáší prázdné kódové slovo, pokud prediktor správně na první pokus určí slovo na vstupu. Toto rozhodování provádí na základě znalosti předchozích znaků zprávy. Pokud se nepodaří správně určit znak napoprvé, tak se pokračuje sestupně přes všechny pravděpodobnosti a odešle se číslo iterace, kdy nastala shoda. Za předpokladu identičnosti prediktorů je pak možno odeslanou zprávu bezchybně rekonstruovat. Prázdné kódové slovo, jenž indikuje správnou predikci, je příhodné kódovat nejkratším možným kódovým slovem (např. nulovým bitem). Ostatní přenášená kódová můžeme kódovat běžným způsobem (např. Huffmanovým kódem). original text
comparison
reduced text
comparison
predictor
original text
predictor Obrázek 4: Shannonův model komunikačního kanálu dle [1]
Čím bude lepší predikce, tím méně bitů je třeba přenášet. V extrémních případech lze předpokládat, že z jednoho počátečního písmena budu schopen na druhém konci rekonstruovat celou
7
zprávu. Naše implementace využívá 2-Markovského řetězce slov vytvořeného z cca. 200 MB českého textu. Při větší velikosti dat jsme se již potýkali s výkonovými problémy. Lze předpokládat, že lepší implementací by bylo možné dosáhnout lepších výsledků. Naše implementace pracuje jen s celými slovy. Proto když predikce není vůbec možná (z nedostatku dat), tak se odešle celé slovo najednou. Jednou námi navrhovaných změn je začlenění 2-Markovského řetězce znaků do predikce. Pro ilustraci uvádíme zprávu včetně jejího přenosu naší implementací kanálu: vstup: ahoj_tondo_píšu_ti_protože_bych_se_rád_zeptal_jak_se_máš_jakpak_se_má_tvůj_kocour _už_jsem_ho_dlouho_neviděl poslaná zpráva: ahoj_tondo_píšu_ti 1 bych 1 8 5 5 1 29 jakpak_se 7 110 kocour_už_jsem 12 359 13 výstup: ahoj_tondo_píšu_ti_protože_bych_se_rád_zeptal_jak_se_máš_jakpak_se_má_tvůj_kocour _už_jsem_ho_dlouho_neviděl
Závěr Podařilo se nám ověřit předpoklad, že syntaxe českého jazyka vykazuje vnitřní strukturu, která redukuje jeho entropii. Rychlost entropie češtiny za předpokladu, že je modelována N-Markovským řetězcem slov, kde N je přiměřeně malé (jednotky) je menší než 2.07 bits/znak. Tato poměrně malá míra entropie implikuje větší předurčenost textu a tím jeho snadnější predikovatelnost. Se znalostí pravděpodobnostího rozdělení písmen a slov českého jazyka jsme byli schopni zkonstruovat komunikační kanál popsaný v [1]. Vzhledem k zajímavým výsledkům této práce věříme, že si problematika entropie textů zaslouží další zkoumání.
Reference [1] SHANNON, C. E. Prediction and Entropy of Printed English. 1950. [2] THOMAS M. COVER, JOY A. THOMAS, Elements of Information Theory. 2nd editon, 2006 [3] ZIPF, G. K., Human Behavior and the Principle of Least Effort, Addison-Wesley Press, 1949
8