Metaoznačevalnik
Metaoznačevalnik, dostopen na tej spletni strani, tvori iz dveh zaporedij oznak za isto besedilo eno ciljno zaporedje oznak. Začetni zaporedji oznak sta dobljeni z uporabo dveh neodvisnih označevalnikov (na primer Amebisovega označevalnika in označevalnika TnT). V primerih, ko se označevalnika ne strinjata pri določitvi oznake za določeno besedo, metaoznačevalnik na podlagi naučenih pravil izbere eno od obeh pripisanih oznak tako, da s tem poveča pravilnost končnega zaporedja oznak.
Učenje pravil
Pravila za metaoznačevanje so zapisana v obliki odločitvenega drevesa. Odločitveno drevo zgradimo iz označenih primerov z zaporedno uporabo programa MetaTaggerTrain in programskega paketa za strojno učenje Orange. Označeni primeri so podani v obliki datoteke tipa TG3.
Datoteka tipa TG3
Datoteka tipa TG3 vsebuje besedilo, ki je označeno na tri načine: prva oznaka je podana ročno, druga in tretja pa sta napovedani z dvema neodvisnima označevalnikoma. Vsaka vrstica v datoteki vsebuje eno besedo in tri pripadajoče oznake, ki so med seboj ločene z zamikom (tab, ‘\t’).
Primer izseka iz datoteke tipa TG3:
Dogodek Ncmsn Ncmsn Ncmsan v Sl Sl Sl Ankaranu Npmsl Npmsl Npmsl je Va-r3s-n Va-r3s-n Va-r3s-n bila Va-p-sf Va-p-sf Va-p-sf dramatična Agufsn Agufsn Agufsn nesreča Ncfsn Ncfsn Ncfsn . . . .
Program MetaTaggerTrain
Program MetaTaggerTrain iz vhodne datoteke tipa TG3 tvori datoteko učnih primerov za izgradnjo odločitvenega drevesa v programskem paketu Orange. Za svoje delovanje potrebuje tudi datoteko, ki vsebuje oznake v kanonični obliki in je dostopna na spletni strani projekta JOS.
Navodila za uporabo programa MetaTaggerTrain:
MetaTaggerTrain [<nastavitve>] <oznake_tbl> <korpus_tg3> <izhod_orange>
<nastavitve>: Glej spodaj.
<oznake_tbl>: Oznake v tabelaricnem formatu (vhod).
<korpus_tg3>: Ucni korpus v formatu TG3 (vhod).
<izhod_orange>: Izhodna datoteka ucnih primerov za Orange (izhod).
Nastavitve:
-v Izpisovanje na zaslon (verbose).
(privzeto: ni izpisovanja)
Primer uporabe:
MetaTaggerTrain –v josMSD-18-msd-canon-en.tbl jos100k-en.tg3 orange-dataset.tab
Izpis na zaslon:
Nalagam tabelo oznak ... Nalagam ucni korpus ... Pisem datoteko ucnih primerov za Orange ... Koncano.
Podani primer tvori datoteko orange-dataset.tab, iz katere nato v programskem paketu Orange zgradimo odločitveno drevo.
Datoteke za prenos
- MetaTaggerTrain.zip (program)
- josMSD-18-msd-canon-en.tbl.zip (vhodna datoteka)
- jos100k-en.tg3.zip (vhodna datoteka)
- orange-dataset.tab.zip (izhodna datoteka)
Opomba
Program MetaTaggerTrain je izdelan v razvojnem okolju Microsoft Visual Studio 2005. Za svoje delovanje zato potrebuje zagonsko okolje .NET Framework 2.0. Če slednjega še nimate nastanjenega na računalniku, si ga prenesite s spleta (povezava do 32-bitne različice, povezava do 64-bitne različice), zaženite nastanitveni program (tj. dotnetfx.exe) in sledite navodilom za nastanitev.
Izgradnja odločitvenega drevesa s programskim paketom Orange
Programski paket Orange vsebuje algoritme za strojno učenje. Poleg ostalih klasifikatorjev implementira tudi odločitvena drevesa tipa C4.5. Uporabniški vmesnik za prikaz zgrajenega odločitvenega drevesa smo dopolnili z možnostjo izvoza drevesa v tekstovno datoteko.
Navodila za nastanitev programskega paketa Orange in nadgradnjo z našo različico vmesnika za prikaz zgrajenega odločitvenega drevesa:
- Najprej na svoj računalnik prenesite nastanitveno različico programskega paketa Orange (povezava).
- Zaženite zagonsko datoteko, ki ste jo prenesli (tj. orange-w-python-0.9.67-py2.5.exe), in sledite navodilom za nastanitev.
- Nastanjeni programski paket Orange “spremenite” z našo različico datoteke OWClassificationTreeViewer.py (povezava), tako da jo ročno prenesete v direktorij Python25\Lib\site-packages\orange\OrangeWidgets\Classify.
Za izgradnjo odločitvenega drevesa sledite naslednjim korakom:
- Zaženite grafični uporabniški vmesnik Qt Orange Canvas.
- Izdelajte “vizualni program” za izgradnjo odločitvenega drevesa. Program je prikazan na sliki 1. Iz praktičnih razlogov smo pripravili datoteko build-tree.ows (povezava), ki vsebuje omenjeni vizualni program in jo je možno odpreti v uporabniškem vmesniku Qt Orange Canvas z uporabo funkcije File / Open.
- S prvim gradnikom v diagramu (tj. “File”) odprite vhodno datoteko, ki ste jo tvorili s programom MetaTaggerTrain. To storite tako, da z dvojnim klikom na ikono gradnika odprete pripadajoči uporabniški vmesnik, kliknete na tropičje poleg vnosnega polja za določitev datoteke in z diska izberete datoteko z učnimi primeri.
- Z dvojnim klikom na zadnji gradnik v diagramu (tj. “Classification Tree Viewer”) odprite uporabniški vmesnik za prikaz odločitvenega drevesa. Uporabniški vmesnik za prikaz odločitvenega drevesa je prikazan na sliki 2. V spodnjem levem kotu okna se nahaja gumb Export tree, ki omogoča izvoz drevesa v tekstovno datoteko.
- Kliknite na gumb Export tree in določite ime datoteke, v katero se zapiše odločitveno drevo v tekstovni obliki. Ta datoteka služi kot vhodna datoteka za metaoznačevanje s programom MetaTaggerTag.

Slika 1: Vizualni program za izgradnjo odločitvenega drevesa.

Slika 2: Uporabniški vmesnik za prikaz odločitvenega drevesa z dodatno funkcijo izvoza drevesa v tekstovno datoteko.
Datoteke za prenos
- Programski paket Orange (različica 0.9.67)
- OWClassificationTreeViewer.py.zip (datoteka OWClassificationTreeViewer.py z dodatno funkcijo izvoza v tekstovno datoteko)
- build-tree.ows.zip (vizualni program za izgradnjo drevesa)
- orange-dataset.tab.zip (vhodna datoteka)
- decision-tree.txt.zip (izhodna datoteka)
Odločitveno drevo v tekstovni obliki
Odločitveno drevo za metaoznačevanje je shranjeno v tekstovni obliki, ki prikazuje drevo na podoben način, kot ga prikazuje komponenta za prikaz drevesa na sliki 2. Vsaka vrstica v tekstovni datoteki predstavlja eno vozlišče v drevesu. Število zamikov (tabov, ‘\t’) na začetku vrstice predstavlja nivo vozlišča in s tem določa hierarhično ureditev v drevesu. Vsako vozlišče predstavlja pravilo za izbiro označevalnika.
Prvih nekaj vrstic datoteke decision-tree.txt:
Number_1 = 0 => Tagger2 (0.778)
Next_Definiteness_2 = 0 => Tagger2 (0.789)
POS_1 = A => Tagger2 (0.789)
POS_1 = C => Tagger2 (0.777)
Case_2 = 0 => Tagger2 (0.798)
Next_Case_1 = 0 => Tagger2 (0.858)
Next_Case_1 = accusative => Tagger1 (0.667)
Next_Case_1 = dative => Tagger1 (0.600)
Next_Form_1 = 0 => Tagger2 (0.667)
Next_Form_1 = bound => Tagger1 (0.600)
Next_Form_1 = clitic => Tagger1 (1.000)
Next_Form_1 = conditional => Tagger1 (0.600)
Next_Form_1 = digit => Tagger1 (0.600)
Next_Form_1 = future => Tagger1 (0.600)
Next_Form_1 = imperative => Tagger1 (0.600)
...
Pravilo, ki ga predstavlja 5. vrstica, lahko zapišemo, če sledimo poti v drevesu od korena do vozlišča:
IF Number_1 = 0 AND Next_Definiteness_2 = 0 AND POS_1 = C AND Case_2 = 0 THEN Tagger = Tagger2 (79,8 %)
V naravnem jeziku bi zapisano pravilo prebrali kot: če je prvi označevalnik napovedal oznako, ki nima števila (number), in če je drugi označevalnik za naslednjo besedo napovedal oznako, ki nima določnosti (definiteness), in če je prvi označevalnik napovedal veznik (conjunction, C) in če je drugi označevalnik napovedal oznako, ki nima sklona (case), potem je večja verjetnost (in sicer 79,8 %), da je drugi označevalnik napovedal pravilno oznako.
Izbira vozlišča in s tem pravilo za izbiro označevalnika sta odvisna od konteksta in lastnosti obravnavane besede. Preverjanje ujemanja lastnosti se začne pri korenu drevesa in poteka proti listom, dokler ni dosežen eden od listov, ali pa nadaljevanje sprehoda po drevesu ni možno, ker se noben preostanek poti ne ujema z lastnostmi besede.
Metaoznačevanje besedila
Program MetaTaggerTag
Program MetaTaggerTag omogoča metaoznačevanje besedila. Za svoje delovanje potrebuje dve vhodni datoteki z označenim besedilom v formatu XML-TEI (tj. dve zaporedji oznak za isto besedilo), datoteko z oznakami v kanonični obliki in odločitveno drevo v tekstovni obliki. Na podlagi teh datotek MetaTaggerTag tvori eno samo izhodno datoteko z označenim besedilom v formatu XML-TEI.
Navodila za uporabo programa MetaTaggerTag:
MetaTaggerTag [<nastavitve>] <oznake1_xml> <oznake2_xml> <oznake_tbl> <model> <izhod_xml>
<nastavitve>: Glej spodaj.
<oznake1_xml>: Izhod prvega oznacevalnika v formatu XML-TEI (vhod).
<oznake2_xml>: Izhod drugega oznacevalnika v formatu XML-TEI (vhod).
<oznake_tbl>: Oznake v tabelaricnem formatu (vhod).
<model>: Nauceno odlocitveno drevo (vhod).
<izhod_xml>: Izhod meta-oznacevalnika v formatu XML-TEI (izhod).
Nastavitve:
-v Izpisovanje na zaslon (verbose).
(privzeto: ni izpisovanja)
-!c Brez preverjanja ujemanja besed v vhodnih korpusih.
(privzeto: preverjanje ujemanja besed)
Primer uporabe:
MetaTaggerTag –v jos100k-en-test-amebis.xml jos100k-en-test-tnt.xml josMSD-18-msd-canon-en.tbl decision-tree.txt jos100k-en-test.xml
Izpis na zaslon:
Nalagam izhod prvega oznacevalnika ... Nalagam izhod drugega oznacevalnika ... Preverjam ujemanje besed v vhodnih korpusih ... Nalagam tabelo oznak ... Nalagam odlocitveno drevo ... Oznacujem besedilo ... Pisem izhodno datoteko ... Koncano.
Datoteke za prenos
- MetaTaggerTag.zip (program)
- jos100k-en-test-amebis.xml.zip (vhodna datoteka)
- jos100k-en-test-tnt.xml.zip (vhodna datoteka)
- josMSD-18-msd-canon-en.tbl.zip (vhodna datoteka)
- decision-tree.txt.zip (vhodna datoteka)
- jos100k-en-test.xml.zip (izhodna datoteka)
Opombe
- Program MetaTaggerTag je izdelan v razvojnem okolju Microsoft Visual Studio 2005. Za svoje delovanje zato potrebuje zagonsko okolje .NET Framework 2.0. Če slednjega še nimate nastanjenega na računalniku, si ga prenesite s spleta (povezava do 32-bitne različice, povezava do 64-bitne različice), zaženite nastanitveni program (tj. dotnetfx.exe) in sledite navodilom za nastanitev.
- Informacija o stavkih in odstavkih je privzeta po prvi datoteki z označenim besedilom.
Zasluge
Metaoznačevalnik sta zasnovala Jan Rupnik in Miha Grčar v okviru seminarske naloge pod mentorstvom dr. Tomaža Erjavca.
Uporabljeni korpusi so bili označeni v okviru projekta Jezikoslovno označevanje slovenskega jezika (JOS). Informacije o projektu JOS in pripadajočih korpusih so dostopne na spletni strani http://nl.ijs.si/jos/.
Programski paket Orange, ki smo ga uporabili za izgradno odločitvenega drevesa, razvijajo v Laboratoriju za umetno inteligenco na Fakulteti za računalništvo in informatiko.
Operacijo delno financira Evropska unija iz Evropskega socialnega sklada ter Ministrstvo za šolstvo in šport. Operacija se izvaja v okviru Operativnega programa razvoja človeških virov za obdobje 2007-2013, razvojne prioritete: razvoj človeških virov in vseživljenjskega učenja; prednostne usmeritve: izboljšanje kakovosti in učinkovitosti sistemov izobraževanja in usposabljanja 2007-2013.

Reference
- Rupnik, J., Grčar, M., Erjavec, T. (2008): Improving Morphosyntactic Tagging of Slovene Language through Meta-tagging. Informatica, 32(4), 437-444, Slovenian Society Informatika, Ljubljana. (pdf, ppt, video)
- Erjavec, T., Krek, S. (2008): Oblikoskladenjske specifikacije in označeni korpusi JOS. Zbornik Šeste konference Jezikovne tehnologije, Ljubljana. (pdf)
- Erjavec, T., Krek, S. (2008): The JOS Morphosyntactically Tagged Corpus of Slovene. Proceedings of the Sixth International Conference on Language Resources and Evaluation (LREC’08), Marrakech. (pdf)