Automatické dělení slov na konci řádku |
Autor | T. V. | |
---|---|---|---|
Vydáno | |||
Licence | CC BY-SA 4.0 |
Toto je (mírně upravený) výňatek z mojí bakalářské práce.
Podle Sojky (1, s. 183–184) má být algoritmus určený k dělení slov na konci řádku
Málokterý algoritmus však všechny tyto podmínky splňuje. Pravidlová řešení, jako je například algoritmus vytvořený nakladatelstvím Academia v roce 1987, nebývají adaptabilní a bývají jazykově závislá. Podle Lianga také bývají náchylná k chybám a zřídka pokrývají všechny možné případy dělení (2, s. 2). Slovníková řešení, tj. systémy pracující se seznamem předem rozdělených slov, jsou jazykově nezávislá. Anglický dělicí slovník lze jednoduše nahradit slovníkem německým, přičemž není třeba nijak měnit samotný dělicí algoritmus. Slovníková řešení jsou ale paměťově náročná a nejsou tedy (kvůli velkému množství různých slovních tvarů) vhodná pro flektivní jazyky, jako je třeba čeština (2, s. 2; 3, s. 139). Udržování a neustálé aktualizování seznamů předem rozdělených slov je navíc sisyfovská práce.
Všechny výše zmíněné požadavky splňuje tzv. Liangův algoritmus, viz dizertační práci F. M. Lianga (2). Ten funguje podobným způsobem jako slovníkové metody dělení slov v tom ohledu, že dělicí body nehledá (nepočítá) až v době spuštění, jak to dělají pravidlové algoritmy, ale pracuje s předem připravenými daty obsahujícími i nformace o tom, kde dělicí body leží. Nepracuje ovšem přímo se seznamem rozdělených slov, ale se seznamem tzv. vzorů (4, s. 242). Stejně jako slovníkové metody Liangův algoritmus sám o sobě jazykově závislý není. Podklady pro dělení (tj. vzory) ovšem jazykově závislé jsou (5, s. 449).
Vzory jsou řetězce písmen — podslova (podřetězce) dané množiny
slov —, v nichž je čísly 0 až 9 vyznačeno, kde leží a kde neleží dělicí
body. Lichá čísla značí dělicí bod a sudá čísla zákaz dělení, přičemž
hodnota čísla určuje váhu daného vzoru. (3,
s. 139) Vzor u1m
tedy značí, že slova mají být dělena
mezi grafémy u a m, například pu-ma. (Ve
vzorech se mohou vyskytovat i speciální znaky, například tečkou bývají
značeny hranice slov.) Vzory jsou generovány z rozsáhlého seznamu předem
rozdělených slov (7, s. 10). Tento seznam je
opakovaně procházen a podle určitého pravidla jsou vybírány možné
vzory — v lichých průchodech jsou vybíráni kandidáti na vzory dělící a
v sudých průchodech kandidáti na vzory dělení zabraňující
(6, s. 4; 8, s. 9).
Pro každého kandidáta na vzor je spočteno, kolikrát — spolu s ostatními
již zvolenými vzory — dělí správně a kolikrát dělí špatně. Pokud
odstraňuje více chyb než jich tvoří, je vzor přijat. V podstatě jde
o strojové učení.
Při dělení jsou na dělené slovo postupně aplikovány vzory
odpovídající všem jeho podslovům. Vzory se přebíjejí — pro dělení jsou
vybrány kombinace vzorů s nejvyšším součtem dělicích bodů, viz diagram
níže. Máme-li vzory ne1
, ne2j1
,
e3j2a
a 1ný
můžeme slovo nejasný
ohodnotit těmito třemi způsoby: ne1jas1ný
,
ne2j1as1ný
a ne3j2as1ný
. Nejvyšší součet má
třetí ohodnocení, slovo nejasný tedy bude děleno jako
ne-jas-ný.
.h y p h e n a t i o n. dělené slovo 1n a vzory 1t i o n2a t 2i o h e2n .h y3p h h e n a4 h e n5a t .h0y3p0h0e2n5a4t2i0o0n. vítězný vzor h y-p h e n-a t i o n slovo rozdělené vítězným vzorem