UNIVERZITA KOMENSKHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A
INFORMATIKY
Pravidl na kontrolu slovenskej gramatiky
BAKALRSKA PRCA
tudijn program: Aplikovan informatika tudijn odbor: 9.2.9
Aplikovan informatika koliace pracovisko: Katedra aplikovanej
informatiky kolite: Milo, rmek, prof. Ing. PhD.
Bratislava 2010 Lubo Lehotsk
Poakovanie
Chcem sa poakova svojmu koliteovi prof. Ing Miloovi rmekovi,
PhD. za odborn a ochotn pomoc pri vypracovan tejto prce. Moje vek
poakovanie patr aj Zdenkovi Podobnmu, na ktorho som sa mohol vdy
obrti s technickmi otzkami. V neposlednom rade akujem aj vetkm,
ktor mi vytvorili priestor a podporovali ma pri vypracovan prce.
Rodine, priateom
akujem
2
estn prehlsenie
estne vyhlasujem, e zadanie bakalrskej prce som vypracoval pod
odbornm vedenm svojho kolitea prof. Ing Miloa rmka, PhD. s pouitm
citovanch zdrojov.
V Bratislave da:
Lubo Lehotsk
3
AbstraktNzov prce: Pravidl na kontrolu slovenskej gramatiky
Autor: Lubo Lehotsk Katedra: Katedra aplikovanej informatiky
Fakulta: Fakulta matematiky, fyziky a informatiky Univerzita:
Univerzita Komenskho v Bratislave Vedci prce: doc. Ing. Milo rmek
PhD. Rozsah: 39 Miesto, rok: Bratislava, 2010 Tto bakalrska prca sa
zaober gramatickm korektorom LanguageTool. Opisuje jeho truktru,
technick architektru a praktick pouitie. Hlavnm cieom prce je
vytvorenie pravidiel na kontrolu gramatiky slovenskho jazyka. Okrem
toho je jej ambciou aj priblenie aplikcie potencilnym
spolupracovnkom na tomto komunitnom open-source projekte. V tejto
oblasti prca pribliuje zsady tvorby novch pravidiel, monosti
vvojra, i spsob aktivcie pravidiel v pouvateovej verzii programu
OpenOffice a v neposlednom rade sprstupnenie novej verzie pravidiel
irokej verejnosti. Okrem toho prca obsahuje aj prklady vytvorench
pravidiel s popisom monch gramatickch situcii, v ktorch spene aj
nespene funguj. Kov slov: LanguageTool, OpenOffice, gramatick
korektor, tagset slovnk
4
AbstractThis bachelor`s thesis deals with the grammar corrector
LanguageTool. It describes its structure, technical architecture
and practical use. The main aim of this paper is to create rules
for checking the grammar of the Slovak language. Except of previous
function, thesis's ambition is to bring the application closer to
potential co-workers on this communitarian open-source project. In
this area, the thesis tries to explain the principles of creating
new rules, possibilities for developers and the method of ruler`s
activation in the user version of OpenOffice. The last, but not the
least point of this thesis is to make a new version of the rules
available for the general public. In addition, the work includes
examples of established rules with description of possible
situations in which they operate successfully or unsuccessfully.
Keywords: LanguageTool, OpenOffice, grammar corrector, tagset
dictionary
5
Obsahvod
.................................................................................................................7
1. Ciele
prce....................................................................................................8
2. Aplikcia LanguageTool
............................................................................92.1.
Charakteristika.............................................................................................................9
2.2. Rozdelenie
textu........................................................................................................10
2.3. Morfologick
analyztory.........................................................................................10
2.4. Prstupy na kontrolu
gramatiky.................................................................................12
2.4.1. Kontrola na zklade analzy
syntaxe.................................................................12
2.4.2. Kontrola zaloen na tatistike a
pravdepodobnosti..........................................13 2.4.3.
Kontrola zaloen na pouit pravidiel.
............................................................14 2.5.
Pouitie v
praxi..........................................................................................................15
2.5.1 Samostatn
aplikcia...........................................................................................16
2.5.2. Sas balka
OpenOffice..................................................................................16
3. Vvoj slovenskej
verzie.............................................................................173.1.
Vchodisk................................................................................................................17
3.2. Tvorba pravidiel
.......................................................................................................18
3.2.1. XML v skratke
...................................................................................................19
3.2.2. Zsady tvorby pravidiel
.....................................................................................21
3.2.3. Sbor
grammar.xml............................................................................................21
3.2.4 Pravidl v jazyku
Java.........................................................................................29
3.2.5.
Kompilcia.........................................................................................................31
3.2.6.
Testovanie..........................................................................................................32
3.2.7. Aktivcia v sasnej verzii
LT...........................................................................36
3.3. Popis vytvorench
pravidiel......................................................................................36
Zver...............................................................................................................38
Pouit
literatra...........................................................................................39
6
vodV dnenej dobe existuje takmer v kadej oblasti niekoko druhov
softvru, medzi ktorm si me ben pouvate slobodne vybra. Vina
pouvateov vak asto siaha po najznmejej, no nie vdy najkvalitnejej
verzii, a to najm v prpade, ke nie je finanne limitovan. Snaha
vekch spolonost poskytn zkaznkovi kompletn rozsah softvru, pre ben
pouitie v oblasti grafickch editorov, multimedilnych prehrvaov, i
kancelrskych balkov, postupne vytvra zvislos zkaznka na tvorcovi.
Finann motivcia je dnes pre vek mnostvo koncovch pouvateov jedinou
cestou, ktorou sa dostvaj do kontaktu s produktmi s otvorenou
licenciou. Ak teda autori tohto druhu aplikcii (zva vyvjanho na bze
opensource licenci) chc oslovova pouvateov aj inou cestou ako je
finann vhodnos, ostva im monos ponknu kvalitnejiu alternatvu ku
korporatvnym produktom. Jednm z tchto produktov je aj kancelrsky
balk OpenOffice, ktormu sa spene dar zskava si novch pouvateov na
kor najznmejieho kancelrskeho softvru MS Office od spolonosti
Microsoft. Dnes je OpenOffice jeho plnohodnotnou nhradou a mnostvo
zanietench spoluautorov pracuje na jeho alom zdokonalen. OpenOffice
obsahuje vek mnostvo prdavnch modulov, ktor roziruj jeho monosti,
priom jednm z nich je aj LanguageTool (LT). Ide o aplikciu na
kontrolu gramatiky pomocou preddefinovanch pravidiel. Dnes ponka
komplexn podporu pre viacer jazyky a zlepenie stavu v oblasti
sloveniny bolo mojou motivciou, preo som sa rozhodol zvoli si
spoluprcu na tomto projekte ako sas mojej bakalrskej prce.
7
1. Ciele prcePrvotnm a hlavnm cieom mojej prace bolo vytvorenie
sady pravidiel na kontrolu slovenskej gramatiky pre spomnan program
LanguageTool. Popisu asti z nich sa venujem v poslednej podkapitole
prce, priom uvdzam aj prklady, v ktorch s tieto pravdil inn alebo
neinn. Okrem toho si vak moja prca kladie za cie aj oboznmenie sa
so samotnou aplikciu, jeho architektrou, spsobom kontroly a monosou
pouitia v praxi. Tejto oblasti je venovan cel druh kapitola. Kee
moja prca bola sasou vieho komunitnho projektu a nie je v
schopnostiach jednotlivca pokry tak obsiahly problm ako je defincia
a aplikcia vetkch jazykovch problmov v jazyku natoko morfologicky
pestrom akm je slovenina, poslednm cieom, ktor je definovan v mojej
prci, bolo ozrejmenie zkladov tvorby pravidiel, ich testovania,
kompilcie a monosti zalenenia do novej verzie existujceho programu.
V tejto oblasti sa prca tylizuje do pozcie akejsi prruky pre
potencionlneho spoluautora, priom sa dan oblas vyskytuje v
podkapitole 3.2.
8
2. Aplikcia LanguageTool
2.1. CharakteristikaProgram LanguageTool bol vytvoren Danielom
Naberom v jazyku Python ako jeho diplomov prca a neskr bol
pretransformovan a rozren v jazyku Java. Daniel Naber je v sasnosti
aj hlavnm sprvcom celej aplikcie. Okrem neho vak konkrtne pravidl
pre jednotliv jazyky spravuj loklni vedci. LanguageTool bol vyvjan
predovetkm pre projekt OpenOffice.org, avak me by pouit aj ako
samostatn aplikcia alebo funguje na bze server-side procesu. Nov
API korektra programu OpenOffice od verzie 3.0 bola uveden v zkej
spoluprci s autorom a umouje hlbok integrciu LanguageTool do
kancelrskeho balka. Je potrebn zdrazni, e niektor rozhodnutia v
oblasti dizajnu projektu boli aplikovan s hlavnm ohadom na praktick
rieenia. Naprklad, do vahy sa brali a ber len rieenia, ktor mu by
ahko udriavan a zavdzan po malch krokoch. V oktbri 2008 zskal
projekt LanguageTool ocenenie Gold Award spoloenstva pre inovciu
OpenOffice (OpenOffice.org Community Innovation Program)
sponzorovan spolonosou Sun Microsystem Inc. Na strnke rozren
programu OpenOffice bolo zahjench asi 145 tisc uniktnych sahovan
programu LanguageTool.
Podpora jazykov v sasnostiLT v sasnosti podporuje 18 jazykov na
rznych rovniach. Niekoko novch balkov je v poiatonej fze
(slovenina, slovinina, vdina, islandina), zatia o niektor sa u
dostali na vemi vysok rove (posk, taliansky, rusk, rumunsk,
franczsky, holandsk, nemeck a anglick).
2.2. Rozdelenie textuLanguageTool napsan v Jave implementuje
nasledujci pracovn postup. Vstupn text je rozdelen (segmentovan) na
jednotliv vety a slov. Vety bvaj oddelen niektormi pecifickmi
interpunknmi znamienkami, ktor program rozpozn a nsledne rozdel
text na konkrtne vety. Kee tento prstup nie je stopercentn je
potrebn oetri mon vnimky ako naprklad to, e bodka, ktor sa
najastejie pouva na oddelenie viet m v jazykoch aj in funkcie a
vyskytuje sa aj v zpise skratiek i dtumov. alie znaky 9
primrne uren na ukonenie vety ako ? alebo !, sa v prpade, e ide
o priamu re vyskytuj aj v strede a cel veta pokrauje alej. Na
oetrenie tchto prpadov je nutn podrobnejia analza okolia tchto
znakov, ktor je v LT implementovan. Oddeova slov Tokenizer
jednoducho rozdel vstupn reazec na jednotliv slov na zklade
rozpoznania medzery alebo interpunkcie (v niektorch jazykoch ako je
naprklad holandina, apostrof, ak sa nevyskytuje spolu s medzerou
neoddeuje 2 slov). Prstup k pomlkm sa v jednotlivch jazykoch li, v
niektorch z nich je pomlka povaovan za as slova. Hoci takto
zaobchdzanie so vstupnm textom je vemi jednoduch, pracuje rchlo a
pre dan potreby je dostaujce. Je vhodn a potrebn podotkn, e
architektra programu umouje poui in tokenizer pre in jazyk, ako je
naprklad thajsk, ktor si vyaduje pouitie lexiknu pre rozdelenie
textu na jednotliv slov.
2.3. Morfologick analyztoryNa alie spracovanie textu, u
rozdelenho na jednotliv slov, sli tzv. morfologick analyztor. Ten
prirad slovm slovn druhy a im prislchajce gramatick kategrie, ktor
reprezentuje pecifickmi morfologickmi znakami. Samozrejme, e
jednotliv znaky s prideovan na zklade danost konkrtneho jazyka.
Niekedy analyztor nedoke rozpozna dan slovo. Tto situcia sa
vyskytuje najm ak ide o slovo cudzieho pvodu, prpadne slangov i
argotov vraz. Takmuto slovu nemono priradi zodpovedajcu znaku.
Vtedy me analyztor slovu priradi przdnu znaku, ktor len informuje
ostatn nstroje spracovania textu, e dan slovo nemono konkrtne uri.
Inm druhom prstupu je snaha analyztora o pridelenie znaky
nerozpoznanmu slovu na zklade jeho okolia alebo jeho vlastnost.
Najefektvnejou cestou je kombincia oboch monost. LanguageTool v
prpade neidentifikovanho slova pouva przdnu znaku.POS Znakova (Pos
Tagger)
Part-of-speech znakova je modul, ktor postupne prechdza
jednotliv asti vety, ktor s oddelen interpunkciou alebo medzerami,
a na zklade zhody so slovnkovm vrazom (POS tagset slovnk), im
pridel konkrtne morfologick znaky.
10
Zdroje pre part-of-speech (POS tagset) slovnky pochdzaj z rznych
open-source projektov. Vina z nich je nejakm spsobom odvoden z vone
dostupnch vsledkov jazykovednho vskumu, o je aj prpad slovenskej
verzie. Dta pre slovensk tagset slovnk, pouit v LT, pochdzaj z
Jazykovednho stavu udovta tra Slovenskej akadmie vied. Rune
vytvoren slovnky programu na kontrolu gramatiky ispell zvyajne
vyjadrujce morfologick vlastnosti slov, s tie relatvne ahko
prispsoben pre potreby POS tagset slovnkov (zkladn tvar lemma, je u
definovan v ispell slovnku). Znaky pridelen taggerom zvisia od
pouitho lexiknu. Inmi slovami, neexistuje iadny veobecn POS tagset
slovnk, ktor by mohol by zdiean viacermi jazykmi. Spsob, akm s
prideovan konkrtne znaky v slovenskom tagset slovnku, njdeme na
adrese http://korpus.juls.savba.sk/files/tagset-www.pdf. Tmto
rieenm sa autori vyhli nutnosti konverzie jednotlivch jazykovch
systmov do spolonej tagsetu. Popri POS znakch, ktor s zaloen a
prideovan na zklade jazykovej prslunosti, existuje ete niekoko
pecilnych trukturlnych znaiek. Tie s pouvan automaticky pre vetky
jazyky. Slia na oznaenie zaiatku (SEND_START) a konca vety
(SEND_END), zaiatku (PARA_START) a konca odseku (PARA_END) a tie na
oznaenie neznmeho slova (UNKNOWN). Naprklad, slovu chlap prirad
tagger pouitm slovenskho tagset slovnka nasledujce znaky:
SSms1.Disambiguator
Pre jazyky s bohatou morfolgiou ako je slovenina, je priradenie
sprvnych slovnch druhov zvyajne jednoduchie ako naprklad pre
anglitinu, kde rovnak slov mu vystupova v lohe slovies, podstatnch
mien a prdavnch mien. V slovenine je takto nejasnos skr
zriedkavosou. Tto nedokonalos riei zjednocovacie rozhranie, ktorm
sa budeme zaobera neskr. Disambiguator alebo zjednocova dostva na
vstup zoznam slov interpretovanch morfologickmi znakami. Jeho lohou
je odstrnenie nesprvnych alebo zbytonch morfologickch znaiek. V
slovenskom jazyku je najastejie potrebn pri zhode tvaru viacerch
slovnch druhov. Prkladom je slovo vrchn, ktor me by interpretovan
ako prdavn, ale aj podstatn meno. Vsledkom jeho innosti je
kompletne pripraven zanalyzovan veta, na ktor je mono uplatni
konkrtne pravidl.
11
Obrzok 1.1: Schma architektry LanguageTool
2.4. Prstupy na kontrolu gramatikyV sasnosti existuj tri spsoby
ako vykona kontrolu gramatiky:
2.4.1. Kontrola na zklade analzy syntaxeAnalyztor sa v tomto
prpade sna k vete pristupova z jazykovednho hadiska a poka sa
vytvori syntaktick strom. Ak sa to spene podar, ozna vetu za
gramaticky korektn. V prpade, e sa strom z nejakho dvodu nepodarilo
zostavi, vyhlsi vetu za chybn. Vhodou tohto postupu je skutonos, e
potencilne me zachyti gramatick chyby, ktor nie s pecifick uritou
postupnosou slov vo vete. Na druhej strane vytvorenie plnho
formlneho popisu uritho jazyka je vemi nron loha. (Liko, 2007, str.
10)
2.4.2. Kontrola zaloen na tatistike a pravdepodobnosti.Tto metda
priamo svis s pouitm tatistickch metd v morfologickej analze.
Vychdza z toho, e postupnosti uritch morfologickch znaiek s vemi
ast. Naopak in s tak zriedkav, a tak takto postupnosti slov mono
oznai ako chybu. Jej spenos je zrejm naprklad v anglitine a inch
jazykoch, kde sa mono spoahn na pevn truktru vety a ustlen slovn
spojenia. (Liko, 2007, str. 10) tatistick korektra me ma pozitvny
aj negatvny druh prstupu. Pozitvny prstup had vzory asti rei alebo
slov, ktor boli asto zaznamenan v chybovom slovnku. 12
Negatvne pristupujci spsob had reazce, ktor spolu nemu navzjom
vytvra vzory slovnch spojen alebo tatistick anca na ich vytvorenie
je vemi nzka. Jazykov modely pouvan na dan ely musia by komplexn a
relatvne bez chb. Monos relne pouitenej kontroly gramatiky zaloenej
na pozitvnom tatistickom prstupe si vyaduje vybudovanie vekho a
reprezentatvneho sboru chybovch textov (korpus) pre dan jazyk. Pre
vinu jazykov boli vydan len menie vzorky v rznych obdobiach, nie
vak samostatn korpus. Je samozrejme vhodn, aby takto chybov korpus
vznikol. Je mon, e niektor, na webe zaloen metdy samovzdelvania, by
mohli by na tento el pouit. V poslednej dobe bola vyvinut nov metda
pre spracovanie vone dostupnch zdrojov, ako je naprklad revidovanie
histrie Wikipdie a vpisy chb z nej. Experimenty vak oskoro
preukzali, e aj vek revzie histrie obsahuj pomerne obmedzen
informcie o chybch. Dvodom je, e ani kompletn chybov korpus, ktor
vznikol z pouvania internetu nie je dostatone komplexn na to, aby
mohol v plnom rozsahu zastupova sbor najastejch chb v jazyku.
Naprklad, cel revzia poskej Wikipdie v rozsahu niekokch gigabajtov,
mala za vsledok len niekoko sto dostatone zdokumentovanch chb, zva
preklepov. (Milkowski, 2009, str. 2) Inou monosou na vytvorenie
programu na kontrolu gramatiky je negatvny tatistick prstup. Avak
na tento prstup je potrebn text bez chb. Vzhadom na obmedzenia,
ktor vyplvaj z autorskch prv, nrodn jazykov korpusy (vyvjan ttnymi
intitciami predovetkm s vedeckm elom) s len zriedka dostupn vo
forme benho textu, o prakticky znamen, e ich nie je mon optovne
vyui na potreby strojovho uenia. Z tohto dvodu je potrebn vybudova
presn korpus z nechrnench sborov. Navye nrodn korpusy vinou nie s
presnm odrazom sasne pouvanho jazyka. Okrem toho overenie, i texty
v nrodnch korpusoch s korektn, vyaduje manulnu kontrolu (t je vak
nkladn) alebo existujci rozsiahly program na kontrolu gramatiky (m
sa nm vytvoril zaarovan kruh). Obecne by tto metda mohla by vhodn
pre jazyky, kde vek s k dispozcii vek, korektn a vone dostupn daje.
Jednm z tchto jazykov je anglitina, a to vaka elektronickej kninici
ako je Projekt Gutenberg, kde tisce dobrovonkov skutone denne
kontroluj a istia dta. Dta pre ostatn jazyky vak ete dan projekt
nezaha. Tto metda si teda vyaduje prli vea prce, a to len na
prpravu zdrojov.(Milkowski, 2009, str. 3) 13
Poslednm variantom vyuvajcim tatistick metdy je ten, ktor
opakovane vyuva na kontrolu frekvencie vskytu vrazov internet
pomocou vyhadvaa (napr.: Google). Tto metda nie je vhodn na
kadodenn kontrolu bene pouvanch jazykovch vrazov. Be toti vemi
pomaly me ignorova niektor ast chyby, ktor doku na svojou
frekvenciou vskytu na internete previ niektor vrazy, najm ak ide o
ojedinel slov. Dan metda je vhodn prevane na skmanie monch slovnch
spojen.
2.4.3. Kontrola zaloen na pouit pravidiel.V tomto prpade sa
slovm vo vete pridelia o najpresnejie morfologick znaky. Potom s na
vety aplikovan pravidl. Na rozdiel od predchdzajceho spsobu,
pravidl s vytvran rune a mono v nich vyjadri skuton gramatick
pravidl pre dan jazyk. (Liko, 2007, str. 11) Aj gramatick korektor
zaloen na pouit pravidiel m pozitvny a negatvny prstup. Pri
negatvnom prstupe je potrebn zavies formlnu gramatiku vyjadren v
pravidlch alebo vzoroch. Doteraz mnostvu jazykov chba kompletn
formlna gramatika. Pozitvne pristupujce metdy s zaloen na
intuitvnom poat gramatiky a tylistickch chb. V praxi pouva rune
vybran pravidl na zklade priemernho jazyka uvatea, jeho intucie,
jazykovej terie i slovnkovej analzy. Vaka tomu me pozitvne
pristupujci korektor gramatiky inne poukazova na najzvanejie a
najastejie na vyskytujce chyby. LanguageTool vyuva prve tto metdu.
Jednm z dvodov, preo s tatistick prstupy pre open-source projekty
ako LT menej vhodn je, e pre neprofesionlov je udriavanie
tatisticky postavench zdrojov a zbieranie korektnch slovnkovch dt
aie, ako psanie deklaratvnych pravidiel. Rozhodnutie o nezaraden
tatistickch ast bolo jednm z hlavnch pri vytvran dizajnu systmu, v
zsade by vak mohli by tatistick nstroje rovnako inn alebo dokonca
lepie ako systm zaloen na pravidlch. Kee v sasnosti chba truktra,
ktor by podporila rozvoj tatistickch metd, autori sa rozhodli
nezaradi ich. Toto by sa vak mohlo v budcnosti zmeni, v prpade, ak
bude k dispozcii dostatone jednoduch nstroj na pouitie
neprofesionlmi. V architektre LanguageTool nie je ni, o by zabrnilo
pridaniu tatistickch zdrojov alebo formlnej gramatiky, ktor by
mohli by jednoducho pouvan v schme inch pravidiel.
14
2.5. Pouitie v praxiProgram LanguageTool je vone k dispozcii na
adrese:
http://www.languagetool.org/download/LanguageTool-1.0.0.oxt. V
prpade, ak u mme naintalovan kancelrsky balk OpenOffice a pouvame
operan systm MS Windows, sta klikn na ikonu a program sa sm
naintaluje ako zsuvn modul kancelrskeho balka. V prpade, ak pouvame
operan systm Unix, v niektorej jeho distribcii a jednoduch
kliknutie na intalciu nepostauje, je potrebn spusti program
OpenOffice a zvoli menu Nstroje/Sprva rozren. Nsledne kliknime na
tlaidlo Prida a zvolme dan .oxt sbor. Po intalcii je potrebn
OpenOffice retartova. LanguageTool je vak mon spusti aj ako
samostatn aplikciu s vlastnm grafickm rozhranm, a to bu kliknutm na
sbor LanguageToolGUI.jar (ten zskame rozbalenm .oxt) alebo cez
prkaz: java -jar LanguageToolGUI.jar.
2.5.1 Samostatn aplikciaSpomnan verzia LanguageTool ako
samostatnej aplikcie poskytuje pouvateovi monos korekcie gramatiky
bez potreby intalcie akhokovek alieho softvru. Vhodou samostatnej
aplikcie je taktie intuitvne ovldanie a kompaktnos a v neposlednom
rade aj neprtomnos obmedzen tkajcich sa rozhrania kancelrskeho
balka. Hlavnou nevhodou je vak strata prslunosti k znmemu
kancelrskemu balku a s tm spojen niia monos jeho distribcie a
uplatnenia. Samotn LT vyuva dva druhy pravidiel : XML a Java. Z
hadiska vvoja XML pravidiel je nespornou vhodou samostatnej verzie
aj to, e na zalenenie novch pravidiel sta prepsa extern XML sbor,
nachdzajci sa v prieinku rules/xx kde xx oznauje skratku konkrtneho
jazyka, v prpade sloveniny je to teda sbor rules/sk/grammar.xml.
Takto jednoducho prepsan sbor je u aplikciou priamo pouvan a nov
pravidl s okamite k dispozcii. Pokia ide o Java pravidl, na
pridanie novej verzie je nutn prava prslunho java sboru alebo
vytvorenie novho sboru (ak ide o nov uniktne pravidlo) a nsledn
kompilcia. Podrobnm popisom programu z pohadu vvojra sa budem
zaobera neskr v kapitole Zsady tvorby.
15
2.5.2. Sas balka OpenOfficeOpenOffice.org je vone dostupn a
riten kancelrsky balk, ktor je preloen do viac ako 30-tich jazykov
a dostupn na vetkch hlavnch potaovch platformch (Microsoft Windows,
Mac OS X, GNU/Linux, Solaris). Dnes ho pouvaj desiatky milinov
pouvateov na celom svete. OpenOffice je kompatibiln s mnohmi inm
kancelrskymi balkmi. Medzi ne patri aj najrozrenej balk od firmy
Microsoft, Microsoft Office a tak je v om mon pracova aj so sbormi,
ktor boli vytvoren spomnanm programom. Dokumenty vytvoren v rmci
balka OpenOffice sa daj uloi v OpenDocument formte, ktor je novm
medzinrodnm ISO tandardom pre kancelrske balky. Intalcia
jednotlivch ast balka je jednoduch a intuitvna, prebieha prebieha
poda zvyklost v danom operanom systme. Kee je vyvjan ako Open
Source program, je ho mon pouva a vone ri zadarmo. Od verzie 2.0
obsahuje balk 6 sast a to : textov editor Writer, tabukov procesor
Calc, kresliaci nstroj Draw, program na tvorbu prezentcii Impress,
program na prcu s databzou Base a program na spracovanie
matematickch vzorcov a opercii Math. Vaka monosti poui LanguageTool
ako zsuvnh modul OpenOffice sa predovetkm zvila anca na jeho
vyuitie, ktor bude pravdepodobne rs vzhadom na stpajcu popularitu
Open Source kancelrskeho balka. Pouvate LanguageTool tak zskava
monos vyui prostriedky OpenOffice a prvotn pouvate OpenOffice zasa
aliu monos skvalitnenia sluieb balka. Obmedzujcim z hadiska
LanguageTool je, e rozhranie kancelrskeho balka nemus implementova
vetky monosti LT. V prpade, ke pouvate chce striktne vyui len sluby
gramatickho korektora, nie je spojenie s kancelrskym balkom vhodn,
pretoe nti pouvatea k intalcii inho, v tomto prpade nie nevyhnutnho
softvru, m me djs k neiaducemu ovplyvneniu operanho systmu, i u
vyuitm miesta na disku alebo zvenm prevdzkovch nrokov. Z hadiska
vvoja a testovania novch pravidiel nie je pre potencilneho vvojra
spojenie s kancelrskym balkom nevyhnutnosou, existuj vak aj
objektvne priny preo je dan forma vyuitia LaguageTool vhodn. Bliie
v kapitole Zsady tvorby.
16
3. Vvoj slovenskej verzie
3.1. VchodiskSlovenina ako jeden so slovanskch jazykov
predstavuje jednu z vekch vziev pre programy na kontrolu gramatiky.
Vina korektorov bola toti vyvinut pre anglick jazyk. Hlavnou rtou
slovenskho jazyka je predovetkm bohat morfolgia. Inou pecifickou
rtou sloveniny je aj pomerne von poradie slov vo vetch a taktie
nedostatok pomcok, ktor by mohli bliie pecifikova jednotliv slovn
druhy. V dnenej podobe sa tvar a vlastnosti ohybnch slovnch druhov
uruje len pomocnou morfologickch informcii ako s slo, rod i pd a
naprklad pri podstatnch a prdavnch mench absentuje prslunos k
uritmu vzoru. Vzhadom na spomenut znaky, softvr na spracovanie
prirodzenho slovenskho jazyka, ak m zvlda aj oznaovanie frz, mus
obsahova aj znakova alebo slovnk so zkladnmi formami slov, ktor
doku rozpozna vetky skloovan formy a asti frz. Tieto vak nesm by
definovan ako nesvisiace zloky, ktor s pomerne vhodn a spen pri
gramatickej korektre anglickho jazyka. Pre sprvnu analzu je vhodou
disponova slovnkom obsahujcim gramatick kategrie a mon vzjomn vzby
slov. Najdleitejie zmeny v LanguageTool boli vykonan z dvodu
pecifickch poiadaviek pri vvoji pravidiel pre posk jazyk. Jedinou
vnimkou je francztina, ktor vyadovala pridanie zjednocovacieho
rozhrania. Disambiguation (zjednocova) bol zaveden s cieom umoni
usmerovanie franczskych pravidiel, ktor vyvjala Agnes Souque na
zklade sboru pripravench Myriam Lechelt pre open-source program
Gramadoir. Zavedenie alch jazykov u nevyaduje vek zmeny v kde aj ke
jednotliv sprvcovia pravidiel navrhli vea monch prav. Uiton nvrhy
dostali autori hlavne od autora holandskch pravidiel Ruud Baarsa.
(Milkowski, 2009, str. 4) Ako bolo spomenut v predchdzajcej asti,
hlbok analzy a pln lingvistick analzy nie s potrebn pre spen
korektry. Ovea jednoduchie heuristick pravidl na zklade astch a
stabilnch foriem jazykovch chb pracuj vemi dobre. Sloveninu a in
slovansk jazyky mono povaova ako osobitne komplikovan prpady, alie
jazyky by sa mali do existujcej formy programu jednoducho
zapracova. truktra programu zatia nebola pouit pre neeurpske
jazyky, take je predasn hovori, i LanguageTool me
17
zahrn akkovek dnes pouvan jazyk, avak autori dfaj, e pre
absoltnu vinu jazykov to mon bude. (Milkowski, 2009)
3.2. Tvorba pravidielDnes LanguageTool vyuva na tvorbu pravidiel
dva jazyky, a to XML a Java. Java pravidl s definovan v samostatnch
sboroch s koncovkou .java. Ide vlastne o jednotliv triedy, ktor
pouva hlavn as programu. Niektor Java pravidl s spolon pre vetky
jazyky, kee poukazuj na veobecn tylistick chyby, ako je naprklad
dvojit medzera i mal psmeno na zaiatku vety. Drviv vina pravidiel
je vak pecifikovan ako vzor benho jazyka v XML formte. Na jednej
strane, pravidl vyvjan v jazyku Java poskytuj viu flexibilitu,
vyaduj si vak hlbie znalosti v oblasti programovania. Na druhej
strane, deklaratvne XML pravidl, vyvjan najm v prostred
pecializovanch XML editorov, poskytuj neporovnatene lepie monosti
na pouvatesk pravy. Jednm z cieov projektu bolo aj rozri komunitu
pracujcu na pravidlch a tak sa autori projektu rozhodli pre
obohatenie funknosti najm v rozmedz deklaratvnych pravidiel. Toto
kontrukn rieenie sa ukzalo ako vemi vhodn: niektor jazyky
podporujce LanguageTool disponuj stovkami pravidiel napsanch v XML
a nem ani jedno Java pravidlo (franczsky a holandsk jazyk). Vetky
XML pravidl s pouvan modulmi vytvorenmi v Jave, ktor porovnvaj
jednotliv neprzdne asti vstupnho textu s konkrtnymi vzormi. Cel
proces prebieha slovo po slove. V prpade potreby sa uplatuj
konkrtne zkladn formy, regulrne vrazy i konkrtne slovn spojenia. Ak
sa chce autor vyhn zhode slova a vzoru, me definova vnimku, ktor
systm nsledne ako vyhovujcu neidentifikuje. Zhoda slova a prslunho
vzoru deklarovanho v XML pravidle je v sasnej dobe zaloen na
naivnom linernom prehadvan truktry prvkov v zozname slov konkrtnej
vety. Tvorcovia LanguageTool nechc zavdza predasn optimalizciu pred
dokonenm funknosti XML pravidiel. Zloitejie prehadvacie postupy s
obvykle efektvnejie pri dlhch vstupnch reazcoch. V prirodzench
jazykoch sa vak vety s dkou nad 30 slov objavuj zriedka.
Porovnvanie textu a vzorov dnes pouvanm spsobom je zd sa uspokojiv,
pokia ide o as, a to aj v prpade prce s tisckami pravidiel (ako je
to pre francztinu). Schopnos preskoi urit vstupn asti textu, ktorou
sa budeme neskr bliie zaobera, znemouje niektor jednoduch
optimalizcie naivnho vyhadvacieho 18
algoritmu, ako je naprklad kontrola prvho a poslednho
elementu.
V nasledujcich
podkapitolch sa poksime pribli problematiku vvoja pravidiel z
pohadu autora tak, aby prpadne mohla tto as prce sli ako mon nvod
pre potencilneho pokraovatea i spolupracovnka v tomto komunitnom
projekte.
3.2.1. XML v skratkeXML znamen eXtensible Markup Language, v
preklade rozriten znakovac jazyk. Bol vyvinut a tandardizovan
konzorciom W3C ako pokraovanie jazyka SGML a HTML. Umouje jednoduch
vytvranie konkrtnych znakovacch jazykov na rzne ely a irok spektrum
rznych typov dajov. Jazyk je uren predovetkm na vmenu dajov medzi
aplikciami a na publikovanie dokumentov. (XML slovnk pojmov,
19.5.2010) Zkladnm znakom XML dokumentu je jeho stromov truktra s
jednm koreovm prvkom (root element). Samotn dokument sa sklad
niekokch vzjomne prepojench prvkov, ktor s zapsan pomocou vznamovch
znaiek tagov. Tag je znaka, ktor umouje truktrovanie dokumentu.
Tagy s uzatvoren do ostch ztvoriek, priom rozliujeme zaiaton a
koncov tag. Element je povaovan za zkladn prvok XML dokumentu.
Elementy s ohranien tagmi, na rozdiel od HTML s striktne vyadovan
zaiaton aj koncov tagy. Elementy musia by korektne uzatvoren a
musia by plne vnoren do inho elementu. Atribty definuj dodaton
vlastnosti elementu a zapisuj sa vdy v poiatonej znake element.
Jeden element me ma viacero atribtov. Komentre mu by sasou
dokumentu, zapisuj sa do ztvoriek < a >. Pouvaj sa na vloenie
akejkovek poznmky. Tie mu sli na skrytie asti textu. Pri spracovan
dokumentu s ignorovan. (Valentov, 2006, str. 16) Prklad jednoduchho
zpisu v XML: Computer Parts Motherboard ASUS P3B-F 123.00
19
XML je v podstate sbor pravidiel tvorby textovch formtov, ktor
umouj truktrova dta. XML takto uahuje potau tvori, ta a zapisova
dta a zaisti jednoznanos truktry dt. Za jeho hlavn vhody mono
povaova rozritenos, nezvislos na platforme a podporu lokalizcie.
Taktie plne vyhovuje tandardu Unicode. Textov formt, v ktorom XML
zapisuje truktrovan dta na disk, uahuje vvojrom ladenie programu a
umouje udom nahliadnu na dta v textovom editore. Tieto vhody prinaj
so sebou zven nroky na vekos sboru. Kompresn programy ako zip alebo
gzip vak doku tto nevhodu zmierni. XML dovouje definova nov formt
kombinciou a optovnm pouitm inch formtov. Pri ich kombinovan si vak
musme dva pozor na monos definovania rovnakch nzvov elementov alebo
atribtov. Vobou XML za zklad projektu zska autor prstup k obsiahlej
skupine nstrojov a odbornkov so sksenosami v tejto technolgii. Voba
XML je nieo podobn ako ke si zvolme SQL pre databzu: musme sce
vytvori vlastn databzu a programy na jej obsluhu, ale existuje
mnoho nstrojov a ud, ktor nm mu pomc. Kee XML je k dispozcii bez
obmedzujcich licennch podmienok, meme vytvori vlastn software
pracujci x XML bez toho, aby sme nieo niekomu platili. Rastca
podpora a vek poet vvojrov mm navye dva istotu, e sa nemusme viaza
k jedinmu vrobcovi softvru. Tto a ale aj predchdzajce spomenut
vlastnosti jazyka XML viedla autorov LanguageTool prve k pouitiu
XML na tvorbu viny pravidiel, s ktormi pracuje architektra samotnho
projektu naprogramovanho v jazyku Java.
3.2.2. Zsady tvorby pravidielZkladn recept na tvorbu pravidiel
nartol u samotn autor LanguageTool Daniel Naber takto: 1. Njdi a
konkretizuj chybu, ktorou ete nie je oetren v gramatickom
korektori. 2. Poui chybn slov alebo slov s celho kontextu na tvorbu
pravidla 3. Ak je to mon zoveobecni pravidlo. Poui POS tagov znaky
slova namiesto konkrtnych slov. 4. Skontroluj i sa vzor pravidla me
vyskytova aj v sprvnej vete. V prpade vekho mnostvo falonm
poplachov zru krok 3 a sks to znova. (Naber, 2003, str. 32)
20
Samotn vvoj pravidiel pre slovensk verziu je u len otzkou
konkretizcie jazykovho problmu, ktor autor plnuje oetri, a jeho
implementcie v XML alebo Jave. Vetky potrebn slovnky i jednotliv
Java triedy pracujce so sbormi slovenskch pravidiel s u toti
pripraven.
3.2.3. Sbor grammar.xmlPotencilny vvojr tak me siahnu po sbore
grammar.xml. V om sa u nachdzaj pravidl vytvoren inmi autormi.
Samotn sbor sa nachdza v prieinku rules/sk/. Tento sbor me pouvate
upravova, prpadne si vytvori vlastn grammar.xml, a tak me pracova s
pomerne malm sborom pravidiel, bez ohadu na poet u preddefinovanch
pravidiel. Taktie me nov autor pravidiel porovna innos rznych
prstupov k jednmu jazykovmu problmu. Poslednou zretenou vhodou
pouitia vlastnho sboru s vlastnmi pravidlami je to, e samotn
kontrola gramatiky prebehne pri menom sbore rchlejie, hlavne v
prpade, ak pvodn u obsahuje niekoko stoviek pravidiel. Zkladn
truktru XML sboru sa poksime pribli sa konkrtnom prpade, priom
nasledujci kd je kompletn sbor grammar.xml s jednm pravidlom. -
Poda pravidiel slovenskho pravopisu spojovnk nem by oddelen
medzerou. Pouite namiesto neho pomlku (), alebo odstrte medzery.
Typografick chyba Toto je test - alebo aj nie. Toto je test alebo
aj nie.
Prv tyri riadky s hlavika XML dokumentu a upresuj kdovanie a
spsob zobrazenia dokumentu internetovm prehliadaom. Hlavnm
elementom celho sboru je element rules, priom v jeho atribtoch je
konkretizovan lokalizcia jazyka, v naom prpade
21
lang="sk". alie atribty elementu nie s pre vvojra prli podstatn,
zhoduj sa vo vetkch podporovanch jazykoch a tak nie je vhodn
experimentova s nimi. Prvm elementom, pri ktorom sa vvojr rozhoduje
medzi viacermi monosami je category. V dnenej podobe LangugeTool je
pre sloveninu vytvorench niekoko kategrii pravidiel: gramatika,
kapitalizacia, typografia, rzne, predloky a slovky. V naom prpade
dan pravidlo patr do kategrie Typografia. Samotn element category
sli na sprehadnenie pravidiel pri zobrazen XML dokumentu vo webovom
prehliadai ale najm pri konfigurcii pravidiel v samotnom
OpenOffice, ktor je dostupn cez menu Nstroje/Gramatika
LanguageTool/Konfigurcia. Nov kategrie mono prida jednoducho pouitm
elementu category atribtom name. Jazykovm problmom ako takm sa
zaober element rulegroup. Jeho atribt id sli len na identifikciu a
vyaduje si ho architektra systmu. Atribt name m aj praktick
pouitie, jeho text sa zobraz tak pri GUI verzii ako aj pri pouit v
LangageTool v OpenOffice, konkrtne pri konfigurcii pravidiel
pouvateom, preto by mal o najlepie opisova ak problm pravidlo, i
skupina pravidiel rieia. s uniktnym
Obrzok 3.1: Konfigurcia pravidiel so zobrazenm mien a kategrii
pravidiel Element rule ohraniuje jedno konkrtne pravidlo, v jednom
rulegroup ich me by viacero. V praxi tto situcia nastva ak je
potrebn oetri niekoko rznych podb rovnakho jazykovho problmu. V
tomto prpade vak bolo pravidlo len jedno. Element pattern umouje
systmu porovnvanie vstupnho textu so vzorom, ktor definuje autor
pravidla. Vzor sa me sklada s viacerch ast, tie konkretizuj
elementy
22
token, priom ich poet uruje z kokch ast sa vzor sklad. Jeden
token prislcha bu jednmu slovu alebo ubovonej interpunkcii. Medzery
s ignorovan, avak prpade, ke autor chce do vzoru zakomponova
medzeru je mon poui atribt tokenu spacebefore="yes", ktor uruje i
sa pred monou asou textu m nachdza medzera. Element token m ete
niekoko monch atribtov, ktormi sa budem zaobera neskr. Element
message ohraniuje text, ktor sa vype pouvateovi pri njden chyby. Ak
ide o samostatn aplikciu, text sa zobraz automaticky, v prpade
prdavnho modulu OpenOffice sa text zobraz v menu kontroly gramatiky
pri vobe tlaidla Vysvetli.
Obrzok 3.2: Dialgov okno kontroly gramatiky V OpenOffice so
zobrazenm textu elementu message Znaky, prpadne text v elemente
suggestion symbolizuj korektn formu textu. Suggestion mus by sasou
elementu message. Pouije sa ako nvrh na oprav, priom cel element
message sa pouije pri vysvetlen chyby. Element short pouvateovi
OpenOffice verzie bliie pribliuje o ak chybu ide. Najvhodnejou
verziou tohto elementu je spojenie kategrie a mena chyby, hoci v
tomto prpade bola pouit len kategria. Posledn pouit element example
sa vyuva len pri zobrazen XML sboru v internetovom prehliadai.
Popisuje nesprvne prpady rieenia jazykovho problmu. Sprvny prklad
rieenia je vsostne orientan a nezobrazuje sa ani v prehliadai.
23
Teraz sa poksime zamera len na nevyhnutn asti pravidla. Vetky
nepovinn elementy a atribty, ktor slia na k zlepeniu orientcie
konenho pouvatea vynechme. Absoltne najjednoduchou formou je
nasledujca: -
V tomto prpade je vzorom len spojovnk, priom ho v nvrhu sprvnej
gramatickej formy nahrdzame pomlkou. O nieo zloitej postup
ilustruje nasledujci prklad: . . .
V tomto prpade nahrdzame vzor zloen z troch blokov textu jedinm.
Tri bodky teda nahradme trojbodkou. V nasledujcich pravidlch
nebudeme uvdza cel kd, ale obmedzme ho len na kov asti, hoci
spomenieme aj nepovinn elementy aatribty. Nasledujce pravidlo
upozoruje na nesprvne pouit vodzovky po skratke tzv. Zaujmavm
atribtom tohto pravidla je atribt regexp, symbolizuje zpis hadanho
tokenu pomocou regulrnych vrazov. Tie hovoria o viacerm monch
hadanch tvaroch konkrtneho slova, i v tomto prpade interpunkcie. V
praxi sa pouva najm symbol |, ktor predstavuje alebo. Viac o
regulrnych vrazoch njdete na adrese
http://www.regularnivyrazy.info/regularni-vyrazyzaklady.html. V
prpade, e ide o viacer rzne tvary interpunkcie je mon hadan znaky
zapsa v hranatch ztvorkch alebo ich oddeli znakom |. Takto teda
meme zabezpei zhodu naprklad s vrazmi: tzv. prkladnm ale aj tzv.
"prkladnm" tzv . ["] ["]
Ete zaujmavejm atribtom, s ktorm sme sa doteraz nestretli, je
atribt tokenu skip. Pouva sa na preskoenie tch ast vstupnho textu,
ktor nevyhovuj deklarovanmu vzoru, priom vzorov slovo sa nsledne
porovn s nasledujcim slovom vstupnho textu. 24
Tmto spsobom je mon sprvne rozpozna slovn spojenia i asti textu,
v ktorch sa nachdza aj nekonkretizovan slovo. Hodnota atribtu skip
je slo, oznaujce koko slov sa m pri porovnvan vstupnho a vzorovho
testu preskoi. V prpade, e je hodnota zporn, znamen to, e vzorov
token, nasledujci po tokene s atribtom skip je porovnvan so vetkmi
slovami vety, ktor nasleduj po poslednom spene porovnanom slove. V
tomto prpade je pre ns zaujmav aj atribt vzoru mark_from="2". Ten
uruje, od ktorho slova bude program znakova vstupn text. Vzor me ma
aj atribt mark_to, ktor uruje posledn znakovan token. tandardn
hodnota 0 prislcha oznaeniu vetkch ast vstupnho textu, ktor je
porovnvan so vzorom. Hodnota -1 zasa ur, e posledn slovo alebo
interpunkcia sa nebude znakova. Podobne to plat aj pre in zporn
hodnoty. Znakovanie za zklade tchto atribtov je vlastne len
oznaenie chybnej asti vety. V praxi sa in hodnoty ako 0 pouvaj v
prpadoch, ke hadme frzu zloen s viacerch slov, priom chybn je len
jej urit as. Prklad: Hadme frzu tzv. prklad, priom sprvna forma m
podobu tzv. prklad. Atribt
mark_from="2" zabezpe, e sa bude nahrdza len as vzoru po prvch
dvoch tokenoch (tzv.). Prklad mierne komplikovanejieho pravidla, v
ktorom sa skma viacero slov, sleduje pouitie slova jedny s pomnonmi
podstatnmi menami. jedni Slovo jedni m v spojen s podstatnmi menami
tvar jedny .
Pre ns zaujmavm atribtom je atribt tokenu postag_regexp="yes".
Ten hovor o tom, e hadan slovo v tagset slovnku je zadan pomocou
regulrneho vrazu teda viacermi rznymi postupnosami znakov. Hadan
vraz je v naom prpade zadan atribtom postag="S.(i|f|n)(p|o).". Ten
symbolizuje podstatn meno (prv znak S) s ubovonou paradigmou (druh
znak .) muskho neivotnho alebo enskho alebo strednho rodu (tret
znak i|f|n), mnonho alebo neuritho sla (tvrt znak p|o), v ubovonom
pde (piaty znak .). Prislchajce znakov sady sa lia 25
vzhadom na slovn druh, ktor uruj. Podrobn opis prideovania
znakov slovnm druhom a ich gramatickm kategrim njdeme na adrese
http://korpus.juls.savba.sk/files/tagset-www.pdf. Posledn element z
tohto pravidla, ktorm sa budeme zaobera je match a jeho atribty.
Atribt no="2" oznauje poradie slova, ktor chceme zahrn do sprvneho
nvrhu. Tentoraz to bolo druh slovo. alie atribty urujce prslun
slovo maj rovnak vlastnosti a lohy ako v elemente token. In atribty
jednotlivch elementov uplatuje nasledujce pravidlo. To sli na
sprvne pouitie vekch psmen v nzvoch pamtnch dn, konkrtne v prpade
Da matiek i Da zeme. de|da|du|dni|dom|dn|doch|dami matiek|zeme|Zeme
Pri pamtnch doch pouite vek zaiaton psmeno: .
Prvm novm atribtom je case_sensitive urujci dleitos vekosti
psmen v deklarovanom vzore. Ovea zaujmavejou novinkou je element
exception. Ten toti patr medzi vemi asto pouvan a sli na
deklarovanie monost, v ktorch nechceme s danm slovom pracova, hoci
spa poadovan vlastnosti. Atribt postag="SENT_START" uruje, e tto
konkrtna vnimka plat pre zaiaton slov vety. V tomto prpade sme
pouili prv token na oetrenie prpadu, ke by veta aj slovn spojenie
zanali nesprvnym malm psmenom a spsobovali by dve rzne chybov hlky
s rovnakm rieenm. Zbytone by tak nastala nejednoznan situcia.
Poslednm doteraz nespomenutm atribtom je case_conversion, s monmi
hodnotami startupper a startlower prislchajcim jednotlivm vekostiam
zaiatonch psmen. Ten zabezpe jednoduchm spsobom sprvnu vekos prvho
psmena tokenu. Jednoduchm prkladom ilustrujcim alie mon atribty
tokenov je pravidlo upozorujce na sprvne tvar slova xkrt, kde x je
slovka. krt