Portál AbcLinuxu, 20. května 2024 23:45

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

Diskuse k tomuto článku

10.7.2003 15:35 oozy
Rozbalit Rozbalit vše kontrola pravopisu clanku
Odpovědět | Sbalit | Link | Blokovat | Admin
"externými vlivmi" ... nie je to cechizmus? Myslim, ze sa treba rozhodnut ci pisat slovensky alebo cesky. Mozno by stalo za to spominane programy pouzit aj na clanok.
16.7.2003 20:39 Marek 'marx' Grác | skóre: 21 | blog: Paralelný blog | Brno / Bratislava
Rozbalit Rozbalit vše kontrola pravopisu clanku
nie je to cechizmus, je to ceske slovo. ktore tam zostalo kvoli tomu, ze som vychadzal najma z ceskych materialov. viac podobnych chyb som nenasiel, plz. posli mi ich mailom. ziadny spellchecker som nepouzil, pretoze su platformy kde IMHO nic podobne zatial nebezi :)
11.7.2003 22:04 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Zapomenuté chyby
Odpovědět | Sbalit | Link | Blokovat | Admin
Slušný spellchecker pro češtinu by IMHO měl být schopen opravit i běžné zcela chybné tvary, jako např. ,by jsme` namísto ,bychom`; ,jsi se` namísto ,ses`, ,dvoumi` namísto ,dvěma`, ,10-ti` namísto ,deseti` či ,10`. Tyto chyby jsou velmi časté, k jejich opravě není třeba žádné složité analýzy (na rozdíl od řekněme shody přísudku s podmětem), ale žádný korektor je AFAIK neopraví, protože ,by` i ,jsme` jsou sama o sobě spisovná slova :-( (navíc je zde podobnost jako kritérium pro hledání potenciálních správných tvarů poměrně k ničemu -- podívejte se, co vám korektory nabízejí za opravy na ,dvoumi`).
14.7.2003 11:40 Martin Povolny
Rozbalit Rozbalit vše GPL?!
Odpovědět | Sbalit | Link | Blokovat | Admin
No podle me fispell rozhodne podle GPL neni, teda alespon cast 100% byt nemuze, protoze pouziva kod/vychazi z kodu Jada Daciuka (fsa tools), ktery ma vlastni licenci, ktera je sice celkem benevolentni, ale rozhodne NE GPL.
16.7.2003 20:36 Marek 'marx' Grác | skóre: 21 | blog: Paralelný blog | Brno / Bratislava
Rozbalit Rozbalit vše GPL?!
pravdou je, ze povodny kod pouzival takyto kod. ale momentalne uz (takmer bez problemov) funguje implementacia zalozena na daciukovi, ktora vznikla uplne od zaciatku (je o cosi pomalsia a jednoduchsia. takze verzia co vyjde bude gnu/gpl
20.7.2003 17:05 Martin Povolny
Rozbalit Rozbalit vše GPL?!
Ta nova implementace ma neco spolecneho s projektem predikativniho psani ;-) ?
To je potom vyborne, ale kde to je? V cvs to nevidim, v projektech taky ne.

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