Automatické dělení slov
Historicky nejstarší, velikostí nejmenší, přesto však
nad jiné užitečný. Tak by se dal charakterizovat modul pro automatické
rozdělování slov na konci řádku. Naprosto nezbytný je při sloupcové
sazbě používané zvláště v novinách. Jistě si dovedete představit, jak
úmorné by bylo neustále procházet všechny novinové a časopisecké články
a slova dělit ručně.
Jazyková část
Modul pro dělení slov nepracuje s rozsáhlým slovníkem,
ale pouze s pečlivě vybranou množinou vzorů pro dělení slov. Myšlenka algoritmu
pro dělení slov založená na vzorech není ostatně nová. Byla použita již v sázecím systému TeX, kde umožňuje jednotným způsobem postihnout dělení slov v různých jazycích. Navíc tento způsob dovoluje jednoduchým způsobem doplňovat
další vzory pro dělení výjimek, a tím postupně zkvalitňuje dělení až téměř ke
stoprocentní dokonalosti.
Počáteční množina vzorů pro dělení českých slov byla vytvořena
programově ze vzorku cca 300 000 českých slov. Další vzory, které postihují
specifické výjimky, jsou průběžně doplňovány ručně. Nyní slovník čítá téměř
8 000 vzorů a zabírá cca 30 kB paměti, ovšem dělení potom
pracuje s úspěšností 99,92 %. Kromě původní české slovní zásoby postihuje i
řadu termínů či cizích slov (cy-to-pla-s-ma, spek-t-ro-skop,
kon-to-ko-rent, soft-ware, play-boy, Bre-tagne) či nejednoznačná česká slova
(pod-ro-bit ve významu podmanit, ale po-dro-bit ve významu drobit). Respektuje
i takové typografické zásady, jako je zákaz dělení slova knihovna, jehož druhá
část na začátku řádku (nebo dokonce stránky) by asi navozovala nevhodné asociace.
Programové řešení
Algoritmus pro dělení slov je navržen takovým způsobem, aby v maximální možné míře postihoval všechny možnosti rozdělení daného slova.
Na rozdíl od většiny jednoduchých dělicích algoritmů se tedy neomezuje pouze na bezpečné
určení některých možností pro dělení. Pracuje tak, že každé zkoumané slovo je
konfrontováno se slovníkem vzorů a jsou vybrány pouze ty vzory, které se shodují s některou částí předloženého slova. Každý takový vzor obsahuje informaci o tom, s jakou vahou se v daném místě smí či naopak nesmí dělit. Podle nejvyšších vah je pak
vytvořen konečný návrh dělení slova.
Součástí programového řešení je velmi efektivní algoritmus pro
vyhledávání vzorů a informací pro dělení. Rychlost vyhledání všech vzorů pro dané
slovo totiž závisí pouze na délce tohoto slova, nikoli na počtu vzorů. Současně je
tento algoritmus vzhledem k použité struktuře slovníku vzorů dosti jednoduchý, a
tudíž snadno použitelný v libovolném produktu.
Dostupné funkce
Návrat všech možných dělicích bodů slova.
V současnosti nabízíme modul dělení slov pro širokou škálu jazyků
(viz tabulka). Implementován je rovněž na většině platforem
(viz přehled).
Reference
Kvalitu našeho dělicího algoritmu pro češtinu můžete sledovat v denním tisku.
Například deníky MF Dnes a Lidové noviny v současnosti používají redakční
systémy, ve kterých je začleněn právě náš modul pro dělení slov. Dále můžete sami
experimentovat kupříkladu s editorem MS Word, který používá stejné řešení.