Skip to content

fmph-nlp/obeliks-lemmatizer

Repository files navigation

O projektu Obeliks

Dolgoročni cilj projekta Obeliks je izdelava in nadgrajevanje najbolj natančnega statističnega označevalnika za slovenski jezik. Oblikoskladenjsko označevanje je proces pripisovanja oblikoslovnih (in deloma skladenjskih) lastnosti besedam v poljubnem besedilu. Tako označeno besedilo je predpogoj za delovanje večine aplikacij, ki temeljijo na analizi naravnega jezika. Označevanje slovenskih besedil je zelo težak problem, saj mora algoritem za označevanje pravilno izbirati med skoraj dva tisoč oznakami (število različnih oznak za označevanje angleškega besedila je zgolj okoli šestdeset).

The aim of the Obeliks project is to develop the most accurate statistical tagger for the Slovene language. Morphosyntactic tagging is the process of categorizing a word in a text into a particular part of speech category and describing it with various morphological features related to that category. This kind of markup is required by many applications involving natural language processing. The tagging of Slovene texts represents a major difficulty as the algorithm needs to choose from nearly 2,000 possible tags (as opposed to English where the number of tags is around 60).

Prevajanje izvorne kode

Prevajanje izvorne kode na operacijskem sistemu Windows:

C:\Work> git clone https://github.com/mgrcar/Obeliks.git
C:\Work> git clone -b v1.0 https://github.com/LatinoLib/LATINO.git
C:\Work> cd Obeliks
C:\Work\Obeliks> Compile.bat

Zagonske datoteke se po prevajanju nahajajo v mapah C:\Work\Obeliks\Debug in C:\Work\Obeliks\Release.

Zagonske datoteke in modeli

Prevedene zagonske datoteke se nahajajo tukaj.

Pripadajoči modeli se nahajajo tukaj.

Ostale datoteke

Datoteke za izvajanje podanih primerov uporabe se nahajajo tukaj.

Datoteke za prečno preverjanje se nahajajo tukaj.

Zagonsko okolje

Vsi opisani programi so izdelani v razvojnem okolju Microsoft Visual Studio 2010. Za svoje delovanje potrebujejo zagonsko okolje .NET Framework 4.0. Če slednjega še nimate nastanjenega na računalniku, si ga prenesite s spleta (povezava), zaženite nastanitveni program in sledite navodilom za nastanitev.

Uporaba

V nadaljevanju se nahajajo navodila za uporabo oblikoslovnega označevalnika Obeliks iz ukazne vrstice. Označevalnik Obeliks je razdeljen na tri programe: LemmatizerTrain (program za izgradnjo lematizacijskega modela), PosTaggerTrain (program za izgradnjo modela za označevanje) in PosTaggerTag (program za označevanje besedil). Ti programi so bolj podrobno opisani v naslednjih razdelkih, kjer podajamo tudi primere uporabe.

Program LemmatizerTrain

Program LemmatizerTrain iz označenega besedila v formatu XML-TEI zgradi model za lematizacijo besed (tj. za prevedbo besed v njihove osnovne oblike) in ga shrani v izhodno datoteko.

Navodila za uporabo programa LemmatizerTrain:

LemmatizerTrain [<nastavitve>] <korpus_xml> <model_bin>

<nastavitve>:  Glej spodaj.
<korpus_xml>:  Ucni korpus v formatu XML-TEI (vhod).
<model_bin>:   Model za lematizacijo (izhod).

Nastavitve:
-v              Izpisovanje na zaslon (verbose).
                (privzeto: ni izpisovanja)
-t              Upostevanje oblikoslovnih oznak.
                (privzeto: oblikoslovne oznake niso upostevane)
-o              Optimizacija lematizacijskega drevesa (oznake SSJ).
                (privzeto: optimizacija se ne izvede)
-l:ime_datoteke Ucenje iz podanega leksikona.
                (privzeto: ucenje brez leksikona)

Primer uporabe:

LemmatizerTrain -v -t -o -l:SloveneLexicon.txt TrainingCorpus500k.xml LemmatizerModel.bin

Izpis na zaslon:

Nalagam ucni korpus ...
586244 / 586244
Nalagam leksikon ...
2786365
Gradim model za lematizacijo ...
Optimiram lematizacijsko drevo ...
Zapisujem model ...
Koncano.

Program PosTaggerTrain

Program PosTaggerTrain iz označenega besedila v formatu XML-TEI zgradi model za označevanje besedila in ga shrani v izhodno datoteko.

Navodila za uporabo programa PosTaggerTrain:

PosTaggerTrain [<nastavitve>] <korpus_xml> <model_bin>

<nastavitve>: Glej spodaj.
<korpus_xml>: Ucni korpus v formatu XML-TEI (vhod).
<model_bin>:  Model za oznacevanje (izhod).

Nastavitve:
-v              Izpisovanje na zaslon (verbose).
                (privzeto: ni izpisovanja)
-c:<int>=0>     Parameter za izgradnjo modela (cut-off).
                (privzeto: 2)
-i:<int>0>      Stevilo iteracij za izgradnjo modela.
                (privzeto: 50)
-t:<int>0>      Stevilo niti za paralelizacijo algoritma.
                (privzeto: 1)
-l:ime_datoteke Uporaba leksikona.
                (privzeto: oznacevanje brez leksikona)

Primer uporabe:

PosTaggerTrain -v -t:4 -l:SloveneLexicon.txt TrainingCorpus500k.xml TaggerModel.bin

Izpis na zaslon:

Nalagam ucni korpus ...
Nalagam leksikon ...
Poraba pomnilnika (drevo koncnic): 240.92 MB
Poraba pomnilnika (propagirane oznake): 34.09 MB
Pripravljam vektorje znacilk ...
586244 / 586244
Gradim model ...
Creating observation matrix ...
586244 / 586244
Performing cut-off ...
Preparing structures ...
Entering main loop ...
Iteration 1 / 50 ...
Updating expectations ...
Initiating 4 threads ...
Pass 1: 1104 / 1104
Pass 2: 1104 / 1104
Updating lambdas ...
...
Iteration 50 / 50 ...
Updating expectations ...
Initiating 4 threads ...
Pass 1: 1104 / 1104
Pass 2: 1104 / 1104
Updating lambdas ...
Trajanje gradnje modela: 11:09:53.538.
Zapisujem model ...
Koncano.

Program PosTaggerTag

Program PosTaggerTag omogoča oblikoslovno označevanje besedila. Za svoje delovanje potrebuje vhodno besedilo bodisi v tekstovnem formatu bodisi v formatu XML-TEI in model za označevanje, zgrajen s programom PosTaggerTrain. Na podlagi teh datotek PosTaggerTag tvori datoteko z označenim besedilom v formatu XML-TEI. Možno je podati tudi datoteko z modelom za lematizacijo, zgrajenim s programom LemmatizerTrain. V tem primeru izhodna datoteka vsebuje tudi besede v osnovnih oblikah.

Navodila za uporabo programa PosTaggerTag:

PosTaggerTag [<nastavitve>] <vhodne_datoteke> <model_bin> <oznaceni_korpus_xml>

<nastavitve>:     Glej spodaj.
<besedilo>:       Besedilo za oznacevanje (vhod).
<model_bin>:      Model za oznacevanje (vhod).
<oznaceni_korpus_xml>:
                  Oznaceni korpus v formatu XML-TEI (izhod).

Nastavitve:
-v                Izpisovanje na zaslon (verbose).
                  (privzeto: ni izpisovanja)
-lem:ime_datoteke Model za lematizacijo.
                  (privzeto: lematizacija se ne izvede)
-s                Vkljuci podmape pri iskanju vhodnih besedil.
                  (privzeto: isci samo v podani mapi)
-t                Uporaba razclenjevalnika SSJ.
                  (privzeto: ne uporabi razclenjevalnika SSJ)
-tt:<int>0>       Stevilo niti za paralelizacijo tokenizacije.
                  (privzeto: 1)
-o                Prepisi obstojece izhodne datoteke.
                  (privzeto: ne prepisi obstojecih datotek)

Prvi primer uporabe:

PosTaggerTag -lem:ssj500kv1_0-fold-01-train_2012_lem.bin -v -o ssj500kv1_0-fold-01-validate_2012.xml ssj500kv1_0-fold-01-train_2012.bin ssj500kv1_0-fold-01-validate_2012_tagged.xml

Izpis na zaslon:

Nalagam model za oznacevanje ...
Nalagam model za lematizacijo ...
Mapa z vhodnimi datotekami: .
Iskalni vzorec: ssj500kv1_0-fold-01-validate_2012.xml
Nalagam C:\Users\Administrator\Desktop\Obeliks\ssj500kv1_0-fold-01-validate_2012.xml ...
Oznacujem besedilo ...
58552 / 58552
Trajanje oznacevanja: 00:11:56.990.
Zapisujem oznaceno besedilo v datoteko ssj500kv1_0-fold-01-validate_2012_tagged.xml ...
Koncano.
Tocnost na znanih besedah: ................... 93.25% (53675 / 57563)
Tocnost na neznanih besedah: ................. 53.69% (531 / 989)
Skupna tocnost: .............................. 92.58% (54206 / 58552)
Tocnost na znanih besedah (POS): ............. 98.64% (56780 / 57563)
Tocnost na neznanih besedah (POS): ........... 80.49% (796 / 989)
Skupna tocnost (POS): ........................ 98.33% (57576 / 58552)
Tocnost na znanih besedah (brez locil): ...... 92.25% (44601 / 48348)
Tocnost na neznanih besedah (brez locil): .... 53.46% (526 / 984)
Skupna tocnost (brez locil): ................. 91.48% (45127 / 49332)
Tocnost na znanih besedah (POS, brez locil):   98.38% (47565 / 48348)
Tocnost na neznanih besedah (POS, brez locil): 80.39% (791 / 984)
Skupna tocnost (POS, brez locil): ............ 98.02% (48356 / 49332)
Tocnost lematizacije (brez locil): ........... 97.86% (48275 / 49332)
Tocnost lematizacije (male crke, brez locil):  98.60% (48642 / 49332)
Tocnost detekcije konca stavka: .............. 95.19% (2792 / 2933)

Drugi primer uporabe:

PosTaggerTag -lem:LemmatizerModel.bin -v -o -t ClanekDelo11maj2012.txt TaggerModel.bin ClanekDelo11maj2012.xml

Izpis na zaslon:

Nalagam model za oznacevanje ...
Nalagam model za lematizacijo ...
Mapa z vhodnimi datotekami: .
Iskalni vzorec: ClanekDelo11maj2012.txt
Nalagam C:\Users\Administrator\Desktop\Obeliks\ClanekDelo11maj2012.txt ...
Oznacujem besedilo ...
691 / 691
Trajanje oznacevanja: 00:00:06.029.
Zapisujem oznaceno besedilo v datoteko ClanekDelo11maj2012.xml ...
Koncano.

Zasluge

Oblikoslovni označevalnik, dostopen na tej spletni strani, so v programskem jeziku C# implementirali Miha Grčar, Matjaž Juršič in Jan Rupnik pod vsebinskim vodstvom Simona Kreka. Segmentacijska, tokenizacijska in lematizacijska pravila, vključena v označevalnik, so izdelali Simon Krek, Kaja Dobrovoljc in Miha Grčar.

Lematizator, uporabljen v označevalniku, je zasnoval Matjaž Juršič v okviru svojega diplomskega dela pod mentorstvom Igorja Mozetiča. Več informacij o lematizatorju lahko dobite na spletni strani http://lemmatise.ijs.si/Software.

Učni korpusi, uporabljeni pri učenju označevalnika in lematizatorja, so bili izdelani v okviru projektov Jezikoslovno označevanje slovenskega jezika (JOS) in Sporazumevanje v slovenskem jeziku (SSJ). Informacije o projektu JOS in pripadajočih korpusih so na spletni strani http://nl.ijs.si/jos. Informacije o učnem korpusu, izdelanem v okviru projekta SSJ, so na spletni strani http://www.slovenščina.eu/Vsebine/Sl/Kazalniki/K10.aspx.

Leksikon, uporabljen pri učenju označevalnika in lematizatorja, je bil izdelan v okviru projekta Sporazumevanje v slovenskem jeziku. Več informacij o leksikonu lahko dobite na spletni strani http://www.slovenščina.eu/Vsebine/Sl/Kazalniki/K12.aspx.

Oblikoslovni označevalnik je bil izdelan v okviru projekta Sporazumevanje v slovenskem jeziku. Več informacij o projektu lahko dobite na spletni strani http://www.slovenščina.eu.

Operacijo delno financira Evropska unija iz Evropskega socialnega sklada ter Ministrstvo za izobraževanje, znanost, kulturo 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

  • Grčar, M., Krek, S., Dobrovoljc, K. (2012): Obeliks: statistični oblikoskladenjski označevalnik in lematizator za slovenski jezik. Proceedings of the 15th International Multiconference Information Society (IS 2012), str. 89–94, Ljubljana. (pdf)
  • Giménez, J., Màrquez, L. (2004): SVMTool: A General POS Tagger Generator Based on Support Vector Machines. Proceedings of the Fourth International Conference on Language Resources and Evaluation (LREC’04), Lisbon. (pdf)
  • Juršič, M., Mozetič, I., Lavrač, N. (2007): Learning Ripple Down Rules for Efficient Lemmatization. Proceedings of the 10th International Multiconference Information Society, IS 2007, str. 206–209, Ljubljana. (pdf)
  • Nigam, K., Lafferty, J., McCallum, A. (1999): Using Maximum Entropy for Text Classification. Proceedings of IJCAI-99 Workshop on Machine Learning for Information Filtering, str. 61–67.
  • 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)

Drugo gradivo

About

The Obeliks Slovene POS tagger stripped of tagging features

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published