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

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:

  1. Najprej na svoj računalnik prenesite nastanitveno različico programskega paketa Orange (povezava).
  2. Zaženite zagonsko datoteko, ki ste jo prenesli (tj. orange-w-python-0.9.67-py2.5.exe), in sledite navodilom za nastanitev.
  3. 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:

  1. Zaženite grafični uporabniški vmesnik Qt Orange Canvas.
  2. 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.
  3. 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.
  4. 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.
  5. 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

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

Opombe

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

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

%d bloggers like this: