39
UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY Pravidlá na kontrolu slovenskej gramatiky BAKALÁRSKA PRÁCA Študijný program: Aplikovaná informatika Študijný odbor: 9.2.9 Aplikovaná informatika Školiace pracovisko: Katedra aplikovanej informatiky Školiteľ: Miloš, Šrámek, prof. Ing. PhD. Bratislava 2010 Luboš Lehotský

Lubos Lehotsky-Pravidla Na Kontrolu Slovenskej Gramatiky

Embed Size (px)

Citation preview

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