NPFL067 - Martin Majliš

Zadání

Entropy of a Text

V této úloze bylo mým cílem zjistit podmíněnou entropii a podmíněnou perpelexitu zadaných souborů.

Podmíněnou entropii jsem spočítal podle vzorce: H(J|I) = - ∑i ∈ I; j ∈ J P(i, j) log2P(j|i).

Podmíněnou perplexitu jsem spočítal ze vzorce: PX(P(J|I)) = 2H(J|I).

Informace pro češtinu byly spočitány ze souboru TEXTCZ1.txt a pro angličtinu ze souboru TEXTEN1.txt.

Entropie a perplexita textů

Výsledky první úlohy jsou následující:

Čeština

  • Podmíněná entropie: 4.74784
  • Podmíněná perplexita: 26.86849

Angličtina

  • Podmíněná entropie: 5.28745
  • Podmíněná perplexita: 39.05528

Podmíněná perplexita nám říká, z kolika možností se vybírá další slovo, pokud známe současné slovo. Čím vyšší je tedy podmíněná perplexita, tím těžší je pro model správně určit následující slovo. Na použitých datech vyšlo, že angličtina má vyšší podmíněnou perplexitu. Pro jazykový model by mělo být těžší odhadnout následující slovo pro angličtinu než pro češtinu.

Náhodná záměna písmen a slov

Dalším úkolem bylo změnit určité množsví znaků za jiné znaky. Pro hodnotu 10% byla u každého znaku 10% šance, že bude náhodně změněn na jiný znak z textu. Obdobný byl i následující úkol, kde se místo znaků zaměňovala celá slova. Pro určené hodnoty jsem každý experiment zopakoval 10krát.

Entropie - čestina

Nejdříve jsem spočítal hodnoty pro češtinu.

Sloupce v následující tabulce znamenají: Ratio - poměr změnených znaků; Min. - minimální hodnota; 1st_Qu. - první kvantil; Median - medián; Mean - průměr; 3st_Qu. - 3. kvantil; Max. - maximální hodnota.

Slova
Ratio Min. 1st_Qu. Median Mean 3rd_Qu. Max.
0.0000 4.748 4.748 4.748 4.748 4.748 4.748
0.0010 4.748 4.748 4.748 4.748 4.748 4.748
0.0100 4.748 4.748 4.748 4.748 4.748 4.748
0.1000 4.746 4.746 4.747 4.746 4.747 4.747
1.0000 4.733 4.733 4.734 4.734 4.735 4.736
5.0000 4.670 4.675 4.676 4.676 4.677 4.681
10.0000 4.592 4.595 4.596 4.597 4.599 4.603
Znaky
Ratio Min. 1st_Qu. Median Mean 3rd_Qu. Max.
0.00 4.748 4.748 4.748 4.748 4.748 4.748
0.00 4.748 4.748 4.748 4.748 4.748 4.748
0.01 4.746 4.747 4.747 4.747 4.747 4.747
0.10 4.738 4.738 4.738 4.739 4.739 4.739
1.00 4.656 4.657 4.657 4.658 4.659 4.660
5.00 4.335 4.341 4.342 4.341 4.343 4.345
10.00 4.009 4.015 4.019 4.018 4.021 4.024

Pro češtinu se při zvětšování množství změnených písmen i slov podmíněná entropie snižovala.

Perplexita - čeština

Slova
Ratio Min. 1st_Qu. Median Mean 3rd_Qu. Max.
0.0000 26.87 26.87 26.87 26.87 26.87 26.87
0.0010 26.87 26.87 26.87 26.87 26.87 26.87
0.0100 26.86 26.86 26.87 26.87 26.87 26.87
0.1000 26.83 26.84 26.84 26.84 26.85 26.85
1.0000 26.59 26.60 26.62 26.62 26.64 26.66
5.0000 25.47 25.55 25.56 25.56 25.59 25.65
10.0000 24.13 24.16 24.18 24.20 24.23 24.30
Znaky
Ratio Min. 1st_Qu. Median Mean 3rd_Qu. Max.
0.00 26.87 26.87 26.87 26.87 26.87 26.87
0.00 26.86 26.87 26.87 26.87 26.87 26.87
0.01 26.84 26.85 26.85 26.85 26.85 26.85
0.10 26.69 26.69 26.69 26.70 26.71 26.71
1.00 25.20 25.23 25.23 25.24 25.26 25.27
5.00 20.18 20.26 20.28 20.27 20.29 20.32
10.00 16.10 16.16 16.22 16.20 16.23 16.27

Pro češtinu se při zvětšování množství změnených písmen i slov podmíněná perplexita snižovala.

Entropie - angličtina

Slova
Ratio Min. 1st_Qu. Median Mean 3rd_Qu. Max.
0.0000 5.287 5.287 5.287 5.287 5.287 5.287
0.0010 5.287 5.287 5.287 5.287 5.287 5.288
0.0100 5.288 5.288 5.288 5.288 5.288 5.288
0.1000 5.289 5.289 5.289 5.289 5.289 5.290
1.0000 5.304 5.305 5.306 5.306 5.306 5.307
5.0000 5.371 5.372 5.374 5.375 5.377 5.379
10.0000 5.446 5.452 5.455 5.454 5.456 5.458
Znaky
Ratio Min. 1st_Qu. Median Mean 3rd_Qu. Max.
0.00 5.287 5.287 5.287 5.287 5.287 5.287
0.00 5.287 5.287 5.287 5.287 5.287 5.287
0.01 5.287 5.287 5.287 5.287 5.287 5.287
0.10 5.283 5.284 5.284 5.284 5.284 5.285
1.00 5.250 5.252 5.253 5.254 5.255 5.258
5.00 5.079 5.081 5.084 5.083 5.085 5.086
10.00 4.781 4.784 4.785 4.786 4.787 4.796

Pro angličtinu se při zvětšování množství změnených slov entropie zvyšovala, zatímco při změně znaků snižovala.

Perplexita - angličtina

Slova
Ratio Min. 1st_Qu. Median Mean 3rd_Qu. Max.
0.0000 39.06 39.06 39.06 39.06 39.06 39.06
0.0010 39.06 39.06 39.06 39.06 39.06 39.06
0.0100 39.06 39.06 39.06 39.06 39.06 39.07
0.1000 39.09 39.10 39.10 39.10 39.11 39.11
1.0000 39.51 39.52 39.55 39.55 39.56 39.59
5.0000 41.38 41.42 41.48 41.49 41.55 41.63
10.0000 43.59 43.76 43.86 43.82 43.90 43.95
Znaky
Ratio Min. 1st_Qu. Median Mean 3rd_Qu. Max.
0.00 39.06 39.06 39.06 39.06 39.06 39.06
0.00 39.05 39.05 39.05 39.05 39.06 39.06
0.01 39.04 39.04 39.04 39.04 39.05 39.05
0.10 38.94 38.96 38.96 38.96 38.97 38.98
1.00 38.04 38.12 38.13 38.15 38.18 38.26
5.00 33.79 33.84 33.91 33.90 33.94 33.97
10.00 27.49 27.54 27.58 27.59 27.61 27.78

Pro angličtinu se při zvětšování množství změnených slov perplexita zvyšovala, zatímco při změně znaků snižovala.

Srovnání

Následující grafy obsahují sloučené výsledky předchozích úloh.

Entropie
Perplexita

Z grafů je patrné, že angličtina má vyšší entripii než čeština (jak pro znaky, tak i pro slova). Pokud bylo změneno méně než 0.1% znaků, nebo slov, tak k žádné výrazné změněně v entropii nedošlo. Pouze při změně anglických slov entropie vzrostla.

Očekával jsem, že entropie se bude ve všech případech zvyšovat, protože náhodným zaměňováním budou vznikat nové dvojice písmen a slov, takže bude mnohem těžší je predikovat, a proto se zvyší entropie a perplexita.

Charakteristika jazyka

Dalším úkolem bylo podívat se na jednotlivé charakteristiky zkoumaných jazyků. Pro výpočet těchto statistik byl text převeden na malá písmena.

Základní charakteristiky

Čeština
Word count 222412
Char count 1030631
Unique word count 39313
Unique char count 91
Chars per word 4.634
Avg. word length 7.813
Avg. unique chars in word 6.912
Angličtina
Word count 221098
Char count 972917
Unique word count 8696
Unique char count 48
Chars per word 4.400
Avg. word length 7.445
Avg. unique chars in word 6.230

V obou textech bylo srovnatelné množství slov (Word Count) a znaků (Char count).

Množství unikátních slov (Unique word count) se pro češtinu a angličtinu významně liší. Čeština má 4.5x více unikátních slov než angličtina. Tento rozdíl je způsoben tím, že angličtina je syntetický jazyk, kde se informace vyjadřuje slovosledem, zatímco čeština je jazyk flektivní, ve kterém se tato informace vyjadřuje skloňováním a časováním. Proto obsahuje mnohem více různých slovních tvarů.

Počet unikátních znaků (Unique char count) pro angličtinu je překvapivě malý. Tento počet je ještě menší, než byl můj minimální odhad alespoň 50 různých znaků (27 písmen, 10 číslic, 5 znamének pro interpunkci, 2 druhy uvozovek, závorky a pomocné znaky jako %$+-). Počet unikátních znaků pro češtinu byl navýšen znaky s diakritikou.

Průměrná délka slov v textu (Chars per word) je také u obou jazyků srovnatelná.

Průměrná délka slov je v obou jazycích srovnatelná (Avg. word length). Také obsahují srovnatelný počet unikátních písmen (Avg. unique chars in word). Pro oba jazyky platí, že v průměrném slově se alespoň 1 písmeno opakuje.

Nejčastější slova a písmena

V následující tabulce je zobrazeno nejčastějších 20 slov a písmen pro oba jazyky.

Nejčastějši slova

Čeština
Word count %
, 13788 6.199%
. 12931 5.814%
a 4768 2.144%
v 4653 2.092%
: 3434 1.544%
se 3421 1.538%
na 2944 1.324%
- 2549 1.146%
" 2506 1.127%
) 1761 0.792%
( 1748 0.786%
že 1696 0.763%
je 1600 0.719%
o 1580 0.710%
s 1250 0.562%
z 1178 0.530%
i 1147 0.516%
to 1091 0.491%
do 1058 0.476%
ve 931 0.419%
Angličtina
Word count %
, 14721 6.658%
the 13949 6.309%
of 9400 4.252%
. 5645 2.553%
and 5601 2.533%
in 5123 2.317%
to 4583 2.073%
a 3286 1.486%
that 2667 1.206%
as 2180 0.986%
; 2151 0.973%
have 2086 0.943%
be 2072 0.937%
is 2035 0.920%
species 1801 0.815%
which 1762 0.797%
by 1724 0.780%
are 1621 0.733%
or 1617 0.731%
it 1492 0.675%

Nejčastějši písmena

Čeština
Char count %
o 78934 7.659%
e 75442 7.320%
a 65514 6.357%
n 64822 6.290%
t 51233 4.971%
s 48483 4.704%
i 44525 4.320%
v 43315 4.203%
r 40767 3.956%
l 40479 3.928%
d 35637 3.458%
k 35531 3.447%
p 32594 3.163%
m 30734 2.982%
u 29649 2.877%
í 27402 2.659%
c 24141 2.342%
h 22301 2.164%
á 21204 2.057%
z 19686 1.910%
Angličtina
Char count %
e 125799 12.930%
t 85818 8.821%
a 75777 7.789%
i 69966 7.191%
o 67736 6.962%
n 67594 6.948%
s 64989 6.680%
r 59249 6.090%
h 48154 4.949%
l 39763 4.087%
d 35291 3.627%
c 32954 3.387%
f 25944 2.667%
u 24113 2.478%
m 23891 2.456%
p 17766 1.826%
g 17177 1.766%
b 16110 1.656%
y 15645 1.608%
w 15529 1.596%

Mezi 20 nejčastějšími slovy pro češtinu není ani jedno plnovýznamové. Jedná se převážně interpunkční znaménka a předložky. V češtině je mezi 2 nejčastějšími slovy a zbytkem slov mnohem větší odstup než pro angličtinu. Také srovnatelný počet výskytů slov "," a "the" je pro mne překvapivý.

Délka slov

V této tabulce jsou zobrazeny délky slov a jejich počty. Jsou započítaná všechna slova (ne jen unikátní).

Čeština
Length count
1 60432
5 23081
2 21863
6 19567
7 18911
4 18904
8 15669
3 13149
9 11932
10 7959
11 4793
12 2780
13 1528
14 865
15 466
16 221
Angličtina
Length count
2 37852
3 35577
4 31651
1 28195
5 21157
6 17290
7 16783
8 9882
9 9737
10 5954
11 3708
12 1998
13 892
14 281
15 110
16 25

Čeština má mnohem více dlouhých slov než angličtina. Toto je způsobeno hlavně výskytem složenin - "biologicko-rasově-nacionální". Na češtině je také zajímavý nízký počet slov o dálce 3. Zatímco slova o délce 2 a 5 se vyskytují srovnatelně často. Pro angličtinu je zajímavý relativně nízký počet výskytů slov délky 1 (hlavně v porovnání s češtinou).

Výskyt slov

V následující tabulce jsou zobrazeny počty výskytů jednotlivých slov a kolik slov se tolikrát vyskytovalo. Tedy řádek 1; 23597; 60.023% znamená, že v textu bylo 23597 slov, které se vyskytly pouze jednou. Takových slov bylo 60% ze všech, které se v textu vyskytly.

Čeština
Occur count %
1 23597 60.023%
2 6117 15.560%
3 2748 6.990%
4 1486 3.780%
5 1000 2.544%
6 674 1.714%
7 472 1.201%
8 412 1.048%
9 293 0.745%
10 257 0.654%
11 207 0.527%
12 171 0.435%
13 148 0.376%
14 115 0.293%
16 113 0.287%
15 99 0.252%
17 91 0.231%
18 86 0.219%
19 66 0.168%
21 62 0.158%
20 58 0.148%
Angličtina
Occur count %
1 3165 36.396%
2 1275 14.662%
3 706 8.119%
4 450 5.175%
5 367 4.220%
6 276 3.174%
7 225 2.587%
8 155 1.782%
10 145 1.667%
9 143 1.644%
12 109 1.253%
11 106 1.219%
13 79 0.908%
15 72 0.828%
16 64 0.736%
14 63 0.724%
21 59 0.678%
18 56 0.644%
17 56 0.644%
20 42 0.483%
19 42 0.483%

Čeština má pro jednotlivý počet výskytů vyšší počet slov - ale to je způsobeno tím, že čeština má vyšší počet unikátních slov.

Slovní úloha

Zadání

Předpokládejme, že existují 2 jazyky - L1 a L2, které nemají žádné stejné slovo. Podmíněná entropie na textu T1 pro jazyk L1 je E a podmíněná entropie na textu T2 pro jazyk L2 je také E. Nový text T vznikne spojením textů T1 a T2. Bude podmíněná entropie tohoto nového textu větší, stejná nebo menší než ta původní?

Řešení

Řešení je v samostatném souboru slovni-uloha.pdf

Závěr

Vztah mezi hodnota podmíněná entropie samostatných textů a sloučeného textu je závislý na hodnotě podmíněné entropie E a počtu výskytů posledního slova z prvního textu T1.

Pokud je log(c(i1)) menší než než původní podmíněná entropie E, tak podmíněná entropie sloučených textů bude menší.

Pokud je log(c(i1)) větší než než původní podmíněná entropie E, tak podmíněná entropie sloučených textů bude větší.

Jinak bude podmíněná entropie samostatných textů i sloučených textů shodná.

Zdroje

Řešené je možné získat pomocí příkazu make task1, případně pomocí ./task1.pl FILE.

Cross-Entropy and Language Modeling

V této úloze bylo mým cílem implementovat EM Smoothing algoritmus. Data jsem rozdělil na 3 části. Na první části (dále jen trénovací data) jsem natrénoval jazykový model - zjistil jsem počty unigramů, bigramů a trigramů. Z těchto počtů jsem také spočítal podmíněné pravděpodobnosti. Druhou část (dále jen heldout data) jsem použil pro určení parametrů lambda. Třetí část (dále jen testovací data) jsem použil na výpočet křížové entropie.

Pro výpočet jednotlivých podmíněných pravděpodobností jsem použil následující vzorce:

T je velikost trénovacích dat a V je velikost slovníku.

Vyhlazovací algoritmus jsem ukončil, když se žádná lambda nezměnila o více než 0.0001.

Lambdy pro heldout data

První úlohou bylo spočítat lambdy pro heldout data. V obou případech bylo potřeba přibližně 10 iterací k jejich určení.

Čeština

λ0 λ1 λ2 λ3
0.140 0.429 0.245 0.186

Angličtina

λ0 λ1 λ2 λ3
0.070 0.254 0.492 0.184

Parametr λ3 je pro češtinu a angličtinu skoro stejný a parametr λ0 je také srovnatelný. Zajímavé jsou parametry λ1 a λ2, které jsou také přiblížně stejné, jen jsou "prohozené". V češtině existuje mnohem více různých bigramů, proto se na ně model nemůže tolik spoléhat a preferuje unigramy. V angličtině se vyplatí využívat informace z bigramů. Viz sekce Pokrytí. Shodnost parametrů λ3 pro oba jazyky mi přijde zajímavá - očekával bych, že pro češtinu bude parametr λ3 mnohem menší.

Lambdy pro trénovací data

Dalším úkolem bylo spočítat lambdy pro trénovací data. V obou případech bylo potřeba přibližně 10 iterací k jejich určení.

Čeština

λ0 λ1 λ2 λ3
0.000 0.000 0.000 1.000

Angličtina

λ0 λ1 λ2 λ3
0.000 0.000 0.000 1.000

V této úloze mělo teoreticky vyjít λ3 rovno 1 a ostatní lambdy 0. Tento teoretický výsledek se potvrdil, protože algoritmus tohoto teoretického výsledku dosáhl.

Boost

Dalším úkolem bylo spočítat křížovou entropii (cross-entropy) na testovacích datech s upravenými lambdami. Lambdy se měly upravit následujícím způsobem: přidat 10%, 20%, ..., 90%, 95%, 99% (parametr Boost) rozdílu mezi původní hodnotou parametru λ3 a 1. A ostatní lambdy se měly proporcionálně zmenšit.

Čeština
Boost λ0 λ1 λ2 λ3 Cross entr. Perplexity
0 0.140 0.429 0.245 0.186 10.220 1192.703
0.1 0.126 0.386 0.220 0.267 10.224 1196.392
0.2 0.112 0.343 0.196 0.349 10.254 1221.057
0.3 0.098 0.300 0.171 0.430 10.306 1265.949
0.4 0.084 0.257 0.147 0.512 10.382 1334.214
0.5 0.070 0.214 0.122 0.593 10.485 1433.491
0.6 0.056 0.172 0.098 0.674 10.625 1579.323
0.7 0.042 0.129 0.073 0.756 10.818 1805.336
0.8 0.028 0.086 0.049 0.837 11.103 2199.220
0.9 0.014 0.043 0.024 0.919 11.600 3104.684
0.95 0.007 0.021 0.012 0.959 12.092 4367.084
0.99 0.001 0.004 0.002 0.992 13.165 9181.867
Angličtina
Boost λ0 λ1 λ2 λ3 Cross entr. Perplexity
0 0.070 0.254 0.492 0.184 7.468 177.053
0.1 0.063 0.229 0.443 0.265 7.470 177.247
0.2 0.056 0.203 0.394 0.347 7.497 180.581
0.3 0.049 0.178 0.345 0.429 7.546 186.918
0.4 0.042 0.152 0.295 0.510 7.620 196.713
0.5 0.035 0.127 0.246 0.592 7.722 211.097
0.6 0.028 0.102 0.197 0.673 7.860 232.393
0.7 0.021 0.076 0.148 0.755 8.053 265.669
0.8 0.014 0.051 0.098 0.837 8.341 324.279
0.9 0.007 0.025 0.049 0.918 8.850 461.499
0.95 0.004 0.013 0.025 0.959 9.361 657.744
0.99 0.001 0.003 0.005 0.992 10.500 1448.257

Z výsledků je patrné, že změna parametrů vedla ke zvýšení křížové entropie. To znamená, že umělé zvýšení vah pro trigramy by snížilo kvalitu vytvořeného modelu.

Discount

V této úloze také bylo cílem změnit parametry a to následujícím způsobem: nastavit parametr λ3 na 90%, 80%, 70%, ... 10%, 0% své původní hodnoty a ostatní parametry proporcionálně zvětšit.

Čeština
Discount λ0 λ1 λ2 λ3 Cross entr. Perplexity
1 0.140 0.429 0.245 0.186 10.220 1192.703
0.9 0.144 0.439 0.250 0.167 10.223 1195.343
0.8 0.147 0.448 0.256 0.149 10.228 1199.563
0.7 0.150 0.458 0.261 0.130 10.236 1205.592
0.6 0.153 0.468 0.267 0.112 10.245 1213.751
0.5 0.156 0.478 0.273 0.093 10.258 1224.509
0.4 0.160 0.488 0.278 0.074 10.274 1238.594
0.3 0.163 0.497 0.284 0.056 10.296 1257.237
0.2 0.166 0.507 0.289 0.037 10.325 1282.837
0.1 0.169 0.517 0.295 0.019 10.368 1321.596
0 0.172 0.527 0.301 0.000 10.489 1436.721
Angličtina
Discount λ0 λ1 λ2 λ3 Cross entr. Perplexity
1 0.070 0.254 0.492 0.184 7.468 177.053
0.9 0.072 0.260 0.503 0.165 7.472 177.525
0.8 0.073 0.265 0.514 0.147 7.478 178.229
0.7 0.075 0.271 0.525 0.129 7.485 179.198
0.6 0.076 0.277 0.536 0.110 7.496 180.480
0.5 0.078 0.283 0.548 0.092 7.509 182.140
0.4 0.080 0.288 0.559 0.073 7.526 184.281
0.3 0.081 0.294 0.570 0.055 7.547 187.071
0.2 0.083 0.300 0.581 0.037 7.576 190.823
0.1 0.084 0.305 0.592 0.018 7.617 196.297
0 0.086 0.311 0.603 0.000 7.704 208.488

Z výsledků je patrné, že změna parametrů vedla ke zvýšení křížové entropie. To znamená, že umělé snížení vah pro trigramy by snížilo kvalitu vytvořeného modelu.

Boost & Discount

Následující grafy spojují výsledky získané zvýšením i snížením parametru λ3.

Čeština
Angličtina

Z výsledků je patrné, že změna parametrů vždy vedla ke zvýšení křížové entropie. To znamená, že jakákoliv změna vah pro trigramy by snížila kvalitu vytvořeného modelu.

Srovnání jazyků

Následující grafy spojují výsledky pro češtinu a angličtinu.

Entropie
Perplexita

Z grafů je patrné, že čeština má vyšší křížovou entropii a perplexitu v porovnání s angličtinou. Zdůvodnění je totožné se zdůvodněním z úlohy 1. Čeština je flektivní jazyk, takže obsahuje mnohem více slovních tvarů, takže existuje více různých n-gramů, které je mnohem těžší předvídat.

Pokrytí

V této úloze jsem zjišťoval, kolik n-gramů z testovacích dat bylo obsaženo již v trénovacích datech.

Sloupce v následující tabulce znamenají: Pos - pozice v datech; Un. Unigram - kolik procent unikátních unigramů z testovacích dat bylo již obsaženo v trénovacíh datech; Un. Bigram - obdobně jako Un. Unigram, ale pro bigramy; Un. Trigram - obdobně jako Un. Unigram, ale pro trigramy; Unigram - kolik procent všech unigramů z testovacích dat bylo již obsaženo v trénovacíh datech; Bigram - obdobně jako Unigram, ale pro bigramy; Trigram - obdobně jako Unigram, ale pro trigramy

Čeština
Pos Un. Unigram Un. Bigram Un. Trigram Unigram Bigram Trigram
2000 13.369 3.591 0.788 8.214 3.135 0.765
4000 21.875 7.510 1.691 17.283 7.314 1.955
6000 32.189 11.429 2.779 25.957 10.989 3.090
8000 41.900 14.806 3.448 34.307 14.319 3.875
10000 50.771 18.706 5.003 42.746 18.183 5.519
12000 59.473 23.349 7.901 51.235 23.043 8.654
14000 67.026 26.796 8.798 59.809 26.847 9.759
16000 73.669 30.834 10.473 68.783 32.042 12.204
18000 76.850 32.894 11.686 78.152 38.591 16.743
20000 84.025 36.001 12.284 86.441 42.036 17.538
20003 84.025 36.007 12.289 86.446 42.041 17.543
Unikátní n-gramy
N-gramy
Angličtina
Pos Un. Unigram Un. Bigram Un. Trigram Unigram Bigram Trigram
2000 18.956 9.956 4.171 9.809 7.749 4.075
4000 30.253 18.653 8.491 19.758 15.823 8.719
6000 38.608 26.352 12.702 29.672 23.828 13.399
8000 46.044 33.280 16.208 39.561 31.787 17.733
10000 52.215 39.059 19.113 49.395 39.546 21.833
12000 59.430 44.922 21.485 59.074 46.425 25.047
14000 66.329 50.491 23.788 68.733 53.555 28.402
16000 76.329 55.179 25.169 77.752 58.799 30.302
18000 84.557 59.180 26.349 86.636 64.104 32.202
20000 92.500 62.937 27.426 95.545 69.053 34.027
20003 92.500 62.937 27.426 95.550 69.053 34.027
Unikátní n-gramy
N-gramy

Z tabulky je patrné, že čeština má poloviční pokrytí trigramů a 2/3 pokrytí bigramů v porovnání s angličtinou.

N-gramy

V této tabulce jsou spočítány unikátní počty unigramů, bigramů a trigramů pro jednotlivé části dat.

Čeština
Data Unigram Bigram Trigram
train 35304 112415 145065
heldout 12863 31663 37122
test 7136 15872 18390
Angličtina
Data Unigram Bigram Trigram
train 8077 58014 116730
heldout 3859 19479 32728
test 3160 11923 17454

Přestože jsou vstupní data srovnatelně velká, tak počet unikátních n-gramů srovnatelný není. V trénovacích datech čeština obsahuje 4x více unigramů, 2x více bigramů, ale jen o 1/6 více trigramů.

Zdroje

Řešené je možné získat pomocí příkazu make task2, případně pomocí ./task2.pl FILE.

Závěr

V této úloze jsem se seznámil s tvorbou jazykových modelů a významem parametrů. Na poskytnutých datech jsem se prakticky seznámil s charakteristikami jednotlivých jazyků (flektivní vs syntetický jazyk) a jejich vlivem na počty unikátních unigramů, bigramů a trigramů.

Některé výsledky mne velmi překvapily, například pokles entropie v úloze číslo 1, poměr mezi počty trigramy a bigramy v úloze číslo 2.

Celý tento dokument se automaticky vytvočí pomocí příkazu make. Grafy jsou vytvořeny v programu GNUPlot, statistiky v úloze 1 jsou spočítány v programovacím jazyce R. Pro vygenerování tohoto dokumentu se používá programovací jazyk PHP.

Kompletní řešení