Portál AbcLinuxu, 24. dubna 2024 23:59

Kontrola pravopisu - III

10. 7. 2003 | Marek Grác
Články - Kontrola pravopisu - III  

Pokúsim sa vám ukázať trošku hlbší pohľad do vnútra. Začneme hneď zhurta troškou teórie o tom, kde všade sa dajú robiť/hľadať chyby. Neskôr si povieme o slovníkoch a na záver o čiernom koni tejto disciplíny.

Teórie

Na počiatku bolo slovo a určite netrvalo dlho kým sa našla aj nejaká tá chyba. A práve chyby sú to, o čo tu kráča. A do akých skupín ich rozdeliť? Mne sa najviac pozdáva delenie na tieto tri skupiny: preklep tj. vieme ako sa slovo píše, ale jednoducho postláčame niečo iné (napr. dva znaky miesto jedného, vynechanie znaku), fonetické a pravopisné chyby tj. chyby, kde máme predstavu o tom, ako sa slovo vyslovuje, ale s písanou podobou to je o čosi horšie (napr. s/z, d/t) a poslednou skupinou sú chyby spôsobené externými vlivmi, grafickou podobnosťou, alebo problémom s QWERTY/QWERTZ(napr. y/z, 1/l, 0/O).

Z nášho hľadiska je najpodstatnejšou práve druhá kategória fonetických a pravopisných chýb (stále sme len na úrovni jednotlivých slov), ktorú má zmysel rozdeľovať ešte na ďaľšie sekcie: delete (vynechanie znaku), insert (vloženie znaku navyše), transpose (zámena dvoch po sebe idúcich znakov) a replace (zámena znaku za znak napr. i/y alebo chyby v diakritike).

Po tejto dávke teórie sa už takmer môžeme pustiť do porovnávania. Potrebujeme si však povedať ešte čosi o maximálnej editačnej vzdialenosťi. Vyzerá to síce hrozivo, ale nie je to nič hrôzostrašné. Jedná sa len o to, koľko chýb smieme spraviť v jednom slove, aby sme dokázali nájsť to pôvodné slovo (napr. d(pes,tma) = 3, d(linux,ilnux) = 1). A hor sa do porovnávania.

ASpell a ispell

Ako už bolo uvedené v predchádzajúcich dieloch, tak ispell je najrýchlejší, ale nenájde až toľko správnych náhrad. Je to dané najmä tým, že on hľadá slová len do vzdialenosti 1. Naproti tomu ASpell (štandardne) hľadá slová (resp. ich zvukové prepisy) do vzdialenosti 2, čomu odpovedá aj jeho rýchlosť. Nesprávnych slov, ktoré obsahujú dve chyby, kde aspell nájde to správne slovo je okolo šiestich percent [Kuki92]. Pri vzdialenosti 3 je čakanie na nájdenie správneho slova otázka desiatok sekúnd, čo skutočne nie je použiteľné v praxi. O väčších vzdialenostiach sa v našom prípade nemá ani zmysel rozprávať, pretože už pri vzdialenosti 3 sa nám slovo zzz smie premeniť napr. na slovo pes, alebo dom.

Ale skúsme sa posunúť ďalej. Je zrejmé, že kvalita programov tohoto typu je závislá od slovníku. Už prvý pohľad zavádza k tomu, že čím väčší slovník, tým lepšie. Ale nie je to tak; ak máte slovník príliš veľký, tak sa zvyšuje pravdepodobnosť, že po chybe vznikne opať korektné slovo. Napr. v angličtine pre 50.000 slovník je to 10% a pre 350.000 slovník dokonca 16%, tieto hodnoty však berte len orientačne, pretože neplatia pre češtinu ani slovenčinu, keďže u nás vznikajú slová trochu odlišným spôsobom. Na druhej strane sa neoplatí mať ani príliš malý slovník, pretože potom sme obťažovaný zbytočnými hláseniami o nájdenej chybe. Posledným trendom je dopĺňanie frekvencie slov do slovníkov, čo nám umožní ponúkať frekventovanejšie slová na prvých miestach medzi náhradami.

fispell

O programoch ako ispell či ASpell ste sa už dozvedeli, takže teraz niečo o tom, čo takmer určite nepoznáte :). Program fispell vznikol v laboratóriu spracovania prirodzeného jazyka na fakulte informatiky MU v Brne (www.fi.muni.cz/nlp) a je dostupný pod licenciou GNU/GPL. V súčasnosti má dve rozhranie, jedno je realizované v textovom móde a druhé nad grafickou knižnicou Gtk (a je zatiaľ o čosi nestabilnejšie). Jeho finálna verzia s českým a slovenským slovníkom síce ešte nie je hotová a ani dostupná verejnosti, ale táto doba sa približuje. A počas babieho leta už si asi budete môcť kontrolovať slová práve týmto nástrojom.

fispell

Pre tých, ktorí očakávajú aj konkrétne porovnania medzi ispellom, ASpellom a fispellom, som ich niekoľko vybral. Testy prebehli na malom testovacom súbore (244 slov), ktorý obsahoval len slová, o ktorých si všetky programy mysleli, že sú nesprávne. Všetky programy boli spustené v neinteraktívnom móde.

programčas celkom (s)na jedno slovo (s)
ispell100.056
aspell2921.631
fispell830.464
 
programsprávna náhradalen nájdená chybanenájdená chyba
ispell1774126
aspell2082412
fispell228313

Čísla nie sú skreslené veľkosťou slovníka. Rozdiel je v použitom prístupe k spojeným a rozdeleným slovám. Ani ispell, ani ASpell nezvládli napr. slovo vedou-cí. Pri nenájdených chybách sa jednalo zvačša o iné slovo, ktoré už bolo obsiahnuté v slovníku, a tak programy ani nehľadali náhradu.

Poradie správnej náhrady v ponúknutom zozname:

program12-34-67-1011-priemer
fispell1842210482.09
aspell175196712.06
ispell1163219282.66

Seriál Kontrola pravopisu (dílů: 3)

První díl: Kontrola pravopisu - I, poslední díl: Kontrola pravopisu - III.
Předchozí díl: Kontrola pravopisu - II

Související články

Kontrola pravopisu - I (ispell)
Kontrola pravopisu - II (ASpell)

Odkazy a zdroje

fispell

Další články z této rubriky

VDR a DVB-T2, část 2.
VDR a DVB-T2, část 1.
Šifrovaný Proxmox VE 6: ZFS, LUKS, systemd_boot a Dropbear
MapTiler – proměňte obrázek v zoomovatelnou mapu
Syncthing

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.