Uporaba strojnega uËenja za postavljanje vejicv slovenšËini Peter Holozan, Amebis, d. o. o., Kamnik, Bakovnik 3, 1241 Kamnik peter.holozan@amebis.si IzvleËek Za slovenšËino obstajata dva programa, ki postavljata vejice v besedilo s pomoËjo pravil, ni pa še bilo preizkušeno strojno uËenje, ki je že bilo uspešno uporabljenoza postavljanjevejicvdrugihjezikih.Zapreizkušanjejebil uporabljen seznamprimerovznapakamiprivejicahizkorpusaŠolar (209.156 besed).Vprvem deluje bilostrojno uËenje uporabljenozaproblem iskanja vseh vejic, doseženirezultatje primerljivzdrugimi jeziki (natanËnost 0,861in priklic 0,641)insprogramomas pravili, najboljširezultatje bil doseženz uporabo skladenjskega analizatorja, lematizator, oblikoslovni oznaËevalnikin skladenjski analizatorpa so bili nauËeniz uËno množicobrez vejic, uporabljenje bil klasifikator ADTree.Preizkušenaje bila še uspešnost popravljanja realnih napak v besedilu, pri Ëemer je bil rezultat slabši (natanËnost 0,676 in priklic 0,545 za manjkajoËe vejice). KljuËne besede: postavljanje vejic, popravljanje napaËnih vejic, slovenšËina, strojno uËenje, ADTree. Abstract Using MachineLearning for comma Placingin Slovene Forthe Slovenelanguagetherecurrentlyexisttwosoftware solutionsabletoplace commasintotextusingrules, however MachineLearning thathasalreadybeen successfullyusedforcommaplacinginotherlanguageshasneverbeentriedwithSlovene.Fortesting,alistofexamples with comma mistakes from the corpus Šolar (209156 words), was used. In the first part of the experiment machine learning was used for searchingall commas,the obtainedresultis comparablewith other languages(precision 0.861andrecall0.641)andtherule-basedprograms. The best result was achieved using the syntax analyser. The lemmatiser, the PoS tagger and the syntax analyser were trained on a corpus wi­thout commas,theADTree classifierwasused.Real comma mistakeswerealsotestedbuttheresultswere worse(precision0.676andrecall 0.545 for missing commas). Key words: comma placing, comma error correction, Slovene, machine learning, ADTree. 1 UVOD Program,kibi pravilno postavljal vejicev besedilo,ni upora­ben le za pisce, ki tipkajo besedila in pri tem spregledajo kakšno vejico (postavljanje vejic povzroËa hude težave celo bodoËim uËiteljem na razredni stopnji (Šek Mertük, 2011)), temveË tudi za druge namene. Pravilno postavljene vejice tako npr. izboljšajo oblikoslovno oznaËevanje besedil (Hillard idr., 2006), pomembne pa so tudi pri sistemih za razpoznavo govora, ki le iz govora ne morejo pravilno postaviti vejic (Hu­ang&Zweig, 2002). Za slovenšËinože obstajatadva programa (Besana1inLangu­ageTool2), ki postavljata manjkajoËe vejice; oba temeljita na roËno napisanih pravilih (Holozan, 2012). NihËe pa za slo­venšËino še ni preizkusil, kako uspešne so pri tem statistiËne metode, ki uporabljajo strojno uËenje iz primerov za izpeljavo pravil za vejice. Strojno uËenje zahteva veliko število prime­ 1 http://besana.amebis.si 2 http://www.languagetool.org/ rov, iz katerih lahko izpelje pravila; taki primeri napaËne oz. pravilne rabe vejic so zdaj na voljo v korpusu Šolar, v kate­rem so zbrana besedila, ki so jih napisali uËenci in dijaki, skupaj z uËiteljskimi popravki. 2 PREDHODNE RaZISKaVE Strojno uËenje je bilo že veËkrat uporabljeno za uËe­nje postavljanja vejic v drugih jezikih, veËinoma pa so raziskovali problem, ko je treba v besedilo posta­viti vse vejice (oz. nekateri celo vsa loËila), kar je po­membno predvsem pri sistemih za razpoznavo go­vora (Huang & Zweig, 2002). Beeferman idr. (1998) so preizkušali postavljanje vejic v anglešËini s pomoËjo skritega markovskega modela in z uporabo Viterbijevega algoritma. Hardt (2001) je preizkušal postavljanje vejic v dan­šËini, in sicer z uporabo Brillovega oznaËevalnika, vendar se je omejil le na ugotavljanje odveËnih vejic, pri Ëemer so bile odveËne vejice dodane nakljuËno. Zhang idr. (2002) so preizkušali strojno uËenje za vejice v anglešËini in nemšËini, in sicer z odloËitveni­mi drevesi z uporabo skladenjskih podatkov. Shieber in Tao (2003) sta preizkušala postavljanje vejic za anglešËino; pomembna je njuna ugotovitev, da je smiselno nauËiti statistiËni oznaËevalnik na uËnem korpusu brez vejic. Alegria idr. (2006) so preizkušali strojno uËenje v baskovšËini. Uporabili so program WEKA3 in preiz­kušali razliËne metode strojnega uËenja. Israel idr. (2012) so se ob problemu postavljanja vseh vejic v anglešËini lotili tudi problema poprav­ljanja napaËnih (manjkajoËih in odveËnih) vejic v be­sedilu. Programa za postavljanje vejic v slovenšËini je preizkusil Holozan (2012), in to za problem, ko je tre­ba popraviti napaËne vejice v besedilu. Uporabljen je bil vzorec, narejen iz korpusa Šolar, ki vsebuje napa­ke, ki so jih naredili uËenci osnovnih in srednjih šol. 3 ZaSNOVa POSKUSa Namen poskusa je preizkusiti metode strojnega uËe­nja v slovenšËini, in sicer najprej za problem postav­ljanja vseh vejic (na kar je bila osredinjena do zdaj veËina tujih raziskav in kar je uporabno pri razpo­znavi govora), potem pa še za problem popravljanja napaËnih vejic (kar je uporabno v slovniËnih pregle­dovalnikih, ki tako pomagajo piscem besedil postav­ljati vejice). Osnova ideja poskusa postavljanja vseh vejic je povzeta po Alegria idr. (2006) in je taka, da uporabi­mo korpus s pravilno postavljenimi vejicami, ga obli­koskladenjsko oznaËimo, lematiziramo in skladenj­sko razËlenimo (pri Ëemer je treba upoštevati, da pri praktiËni uporabi nimamo vejic vnaprej, zato je treba preizkusiti oznaËevanje tudi brez vejic, na kar sta opozorila že Shieber in Tao (2003), medtem ko Ale­gria idr. (2006) tega niso posebej preizkušali). Vsako besedo z doloËenim okoliškim oknom pretvorimo v seznam atributov in dodamo atribut, ali ji sledi vejica (ta atribut je potem razred pri klasifikacijskem pro­blemu). Tako zapisane besede uvozimo v program za strojno uËenje, v katerem izvedemo eksperimente. Enako kot pri Alegria idr. (2006) je bil uporabljen program WEKA, ki ima vgrajeno veliko klasifikator­jev. Preizkušeno je bilo veËje število klasifikatorjev, potem pa izbranih nekaj najboljših (pri Ëemer smo upoštevali, da so Ëim bolj razliËni), ki so bili potem uporabljeni v nadaljnjih preizkusih, v katerih so bili preizkušeni razliËni atributi, velikost okna, vpliv oznaËevanja in parametri klasifikatorja. Za preizkušanje je bilo uporabljeno desetkratno preËno preverjanje, pri Ëemer primere razdelimo na deset delov, devet delov uporabimo za uËenje, pre­ostali del pa za preizkušanje, kar ponovimo deset­krat z razliËnim delom za preizkušanje in izraËuna­mo povpreËni priklic in natanËnost. Za primerjavo sta bila na isti nalogi preizkušena še Besana in LanguageTool. Drugi poskus je prenos ugotovitev iz prvega po­skusa v popravljanje napaËnih vejic in primerjava s programoma Besana in LanguageTool. Preizkušanje v tem poskusu je namreË bolj zapleteno, zato je naj­boljšo kombinacijo za strojno uËenje laže poiskati pri problemu iskanja vseh vejic in jo potem uporabiti še pri popravljanju napaËnih vejic. 3.1 Korpus V raziskavi je bila uporabljena posodobljena verzija korpusa (popravljenih je bilo nekaj napaËnih vejic), ki je bil uporabljen v Holozan (2012). To je podkorpus, narejen iz korpusa Šolar,4 ki je zbirka besedil, ki so jih napisali uËenci v šoli, in ki vkljuËuje tudi popravke napak. Ta podkorpus vsebuje le povedi z napaËnimi vejicami (bodisi manjkajoËimi bodisi odveËnimi), pri Ëemer so mesta manjkajoËih vejic oznaËena z znakom ¤, odveËne vejice pa so nadomešËene z znakom ÷; ve­likost tega podkorpusa je 209.156 besed (vkljuËno z loËili, razen vejic), v podkorpusu je 11.892 pravilno postavljenih vejic, 11.399 manjkajoËih vejic in 2709 odveËnih vejic. Za problem postavljanja vseh vejic (in tudi za uËe­nje pri popravljanju vejic) je bil korpus predelan tako, da so bile vse vejice popravljene (znaki ¤ zamenjani z vejicami, znaki ÷ pa pobrisani), s Ëimer je bil narejen korpus s pravilno postavljenimi vejicami. Predvsem za ta problem postavljanja vseh vejic (pa tudi za realno natanËnost pri popravljanju na­paËnih vejic, Ëeprav je tu težava, da je ta odvisna od deleža napak v korpusu in se je tako težko odloËiti, katera besedila vsebujejo povpreËno število napaËnih vejic) bi bilo sicer bolje uporabiti korpus, ki bi vse­boval tudi povedi s pravilno postavljenimi vejicami, vendar takega korpusa ob izvajanju poskusa ni bilo 3 http://www.cs.waikato.ac.nz/ml/weka/ 4 http://www.slovenscina.eu/korpusi/solar na voljo. Tudi popravki v korpusu Šolar namreË niso povsem natanËni, zato so bili primeri v podkorpusu roËno preverjeni in ustrezno popravljeni. Druga možnost za postavljanje vseh vejic bi bila uporaba dela katerega od obstojeËih korpusov (npr. Gigafide),5 vendar se tu postavi vprašanje, kako na­tanËno so lektorirana besedila, vkljuËena v korpuse. Se je pa za to rešitev odloËila veËina tujih raziskoval­cev (tudi Alegria idr. (2006), ki so med drugim upo­rabili Ëasopisna besedila). 3.1.1 OznaËevanje Tako Hardt (2001) kot tudi Alegria idr. (2006) so eks­perimentirali z oznaËenimi korpusi, saj lahko pravil­ne oblikoskladenjske oznake in poznavanje strukture povedi pomagajo pri postavljanju vejic. Zato je bilo tudi za slovenšËino uporabljeno oznaËevanje, in sicer oblikoslovni oznaËevalnik in lematizator Obeliks6 ter skladenjski razËlenjevalnik,7 ki sta bila razvita v okviru projekta Sporazumevanje v slovenskem jeziku.8 Pri poskusih za baskovšËino in danšËino ni pose­bej specificirano, ali so oznaËevali korpus s pravilno ali z napaËno postavljenimi vejicami, zdi se, da so uporabili razliËico s pravilno postavljenimi vejicami. Ker pa pravilnost vejic lahko vpliva na natanËnost oznaËevalnika (Hillard idr., 2006) in ker pri praktiËni uporabi (npr. popravljanju napaËnih vejic v besedilu) ni mogoËe vnaprej imeti pravilno postavljenih vejic, sta bili preizkušeni obe razliËici oznaËevanja. 3.2 Ocenjevanje rezultatov Za ocenjevanje rezultatov sta bili uporabljeni metriki natanËnost (delež pravilno postavljenih vejic) in pri­klic (delež odkritih manjkajoËih vejic) ter metrika F1, ki je harmoniËna sredina natanËnosti in priklica in se izraËuna kot 2 * natanËnost * priklic / (natanËnost + priklic). Problem postavljanja vejic predstavimo z razredom, ki pove, ali neki besedi sledi vejica. V kor­pusu je 23.291 mest, kjer mora biti vejica, vejica torej mora biti za 11,1 odstotka besed, veËinski razred pa je, da besedi ne sledi vejica, kar je v 88,9 odstotka pri­merov. Program WEKA je rezultate izraËunal tako za pri­mer, ko ni vejice, kot za primere, ko vejica je. Ker je 5 http://www.gigafida.net 6 http://www.slovenscina.eu/tehnologije/oznacevalnik 7 http://www.slovenscina.eu/tehnologije/razclenjevalnik 8 http://www.slovenscina.eu cilj postaviti vejice v besedilo, je zanimiv predvsem rezultat pri primerih, ko vejica je, saj nam to pove, ko­liko manjkajoËih vejic bi odkrila metoda. NatanËnost je pomembnejša od priklica, ker npr. pri slovniËnem pregledovalniku noËemo preveË lažnih opozoril, se­veda pa tudi priklic ne sme biti premajhen (npr. vsaj 50 %), da je metoda uporabna, zato je pomemben tudi rezultat za F1, ki ga prav tako izraËunava pro­gram WEKA. Rezultati so izraËunani na besede, ker je beseda (z okoliškim oknom) element pri strojnem uËenju. ReferenËna vrednost uspešnosti je rezultat, ki ga dosežeta programa, ki postavljata vejice s pomoËjo pra­vil. Programa sicer nista namenjena za reševanje pro­blema, ko je treba postaviti vse vejice, vendar je vseeno zanimivo videti, kako dobro poišËeta vse vejice. 3.3 Priprava podatkov Program WEKA potrebuje podatke v formatu ARFF, v katerem glavi z opisom atributov sledi podatkovni del, v katerem vsaka vrstica predstavlja en primer. Rezultat oznaËevanja besedil je v formatu XML­TEI,9 zato je bil napisan za pretvorbo program v Perlu. Ta za vsako besedo doloËi atribute, potem pa pri izvo­zu v ARFF ob sami besedi izpiše še atribute za prej­šnje in naslednje besede glede na nastavitev okna (privzeta vrednost je ‡5 +5, torej pet besed spredaj in pet besed zadaj, s Ëimer so zaËeli tudi Alegria idr. (2006)). Vejice niso besede, ampak le atribut je-vejica na besedi neposredno pred vejico. Ta atribut je potem uporabljen kot razred pri strojnem uËenju. Program za izvoz v ARFF izvozi vse atribute (ra­zen podatka o obstoju vejice) kot nize, s Ëimer pa veËina klasifikatorjev ne zna delati, zato jih je treba najprej spremeniti v nominalne atribute, pri Ëemer je pri definiciji atributa našteta zaloga možnih vredno­sti. V ta namen je bil v programu WEKA uporabljen filter StringToNominal. 3.3.1 atributi Osnovni atributi za vsako besedo so oblika (sama be­seda, taka kot je napisana, npr. mize), lema (osnov­na oblika besede, npr. miza) in oblikoskladenjska oznaka (ali MSD ‡ morpho­syntactic descriptor, npr. Sozer) po oblikoskladenjskih specifikacijah JOS,10 ki pove besedno vrsto, podatke o sklonu, spolu, številu 9 http://www.tei-c.org/Guidelines/P5/ 10 http://nl.ijs.si/jos/msd/html-sl/index.html ipd. Ker loËila nimajo oblikoskladenjskih oznak, jim je bila pripisana oznaka Y, da jih lahko obravnava­mo enako kot besede. NeobstojeËim besedam znotraj okna so bili vsi atributi nastavljeni na *, vsak stavek je enota zase in okno ne sega na sosednje stavke. Atributi so našteti tako, da so najprej atributi za samo besedo (položaj 0), temu sledijo atributi za predhodne besede (od ­1 do ­5) in temu atributi za naslednje besede (od +1 do +5). Po celotnem MSD je bil narejen še poskus z del­nim MSD, v katerem so atributi loËeno prvi znak MSD, drugi znak MSD in pri samostalnikih še sklon. Delni MSD2 je bil poskus, kako Ëim bolj prene­sti informacije iz MSD in se izogniti uporabi celot­nega MSD (zaradi predpostavke, da veliko število razliËnih MSD lahko ovira uËenje). Vsak MSD bil raz­deljen v dva atributa, prvi je kot prvo Ërko vseboval besedno vrsto, druga Ërka pa je bila vrsta pri posa­mezni besedni vrsti (pri samostalnikih, pridevnikih, glagolih, zaimkih, števnikih in veznikih). Drugi atri­but je vseboval sklon pri samostalnikih, pridevnikih, zaimkih, predlogih in števnikih, sicer pa **. Naslednji poskus je bil uporaba podatkov skla­denjskega razËlenjevalnika, pri katerem pa je re­zultate teže pretvoriti v atribute kot pri oblikoslov­nem oznaËevalniku in lematizatorju, saj so rezultat skladenjskega razËlenjevalnika povezave, ki gradijo drevo. Slika 1: Rezultat skladenjskega razËlenjevalnika Slika 1 kaže rezultat skladenjske razËlembe za ki kažejo na osebke, predmete in prislovna doloËila, poved .Ko MatiËek to izve, sklene ukrepati«. Za po­pri Ëemer nas pri modrih in rdeËih povezavah zanima stavljanje vejic so pomembne predvsem povezave11 zaËetek bloka, zato mora upoštevati še vse naslednje .vez«, ki kaže na veznike, .modra«, ki kaže na del po­povezave, da pridemo do zaËetka tega bloka. vedi, in rdeËe povezave .ena«, .dve«, .tri« in .štiri«, Rezultat razËlenjevalnika (skupaj z rezultatom le­ matizatorja in oblikoskladenjskega analizatorja) je za­pisan v formatu XML, kot prikazujemo na sliki 2 (iz­ 11 Vsi tipi povezav so opisani na http://www.slovenscina.eu/tehnologije/ razclenjevalnik. pušËene so znaËke .«, ki oznaËujejo presledke). Ko MatiËek to izve , sklene ukrepati . Slika 2: Zapis oznaËevanjain skladenjske razËlembev formatu XML Slika 2 je primer, zapisan v formatu XML, ki je • je vez: beseda, na katero kaže povezava “vez”; rezultat oznaËevanja in skladenjskega razËlenjeval­• zaËetek modrega bloka: prva beseda v bloku, na nika. ZnaËke “