[ Skip to the content ]

Institute of Formal and Applied Linguistics Wiki


[ Back to the navigation ]

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
user:zeman:morpho-challenge-2008 [2008/05/06 09:47]
zeman Převést do CSTS.
user:zeman:morpho-challenge-2008 [2008/06/27 22:19]
zeman Oprava Unikódu v reverse().
Line 19: Line 19:
 Můj skript pro automatické rozsekání slov na kmeny a koncovky předpokládá, že vstup je textový korpus ve [[:formát CSTS|formátu CSTS]]. Nejprve tedy musíme trénovací seznamy slov a jejich četností převést do tohoto formátu. Můj skript pro automatické rozsekání slov na kmeny a koncovky předpokládá, že vstup je textový korpus ve [[:formát CSTS|formátu CSTS]]. Nejprve tedy musíme trénovací seznamy slov a jejich četností převést do tohoto formátu.
  
-===== Zbytek této stránky je zatím pouhá kopie z roku 2007 =====+<code>cd $MC 
 +foreach l (ar de en fi tr) 
 +  mc2csts.pl < data/2008/wordlist.$l.txt -l $l > data/2008/$l.csts 
 +end</code>
  
-Dostali jsme pro každý jazyk (angličtinu, němčinu, finštinu, turečtinu a arabštinu) seznam slovních tvarů a jejich četností. Měli jsme za úkol pro každý slovní tvar vrátit jeho dělení na morfémy. Morfémy mohly být identifikovány libovolným řetězcem, při vyhodnocování se pouze zjišťovalo, zda se u slov, která mají obsahovat tentýž morfém, skutečně opakuje stejně pojmenovaný morfém.+===== Trénování morfologických vzorů =====
  
-Moje zpracování se skládá ze dvou částí: +Pro některé jazyky (zejména pro finštinu) trvá zpracování déle, než by se chtělo čekat, a vyplatí se tedy úlohy odeslat na cluster:
-  - Rozebrat slova na vstupuzískat seznam vzorů, kmenů koncovek. +
-  - Znova projít slova na vstupu, každé přiřadit k jednomu nebo několika vzorům a vypsat odpovídající rozklady.+
  
-Nijak nevyužívám informaci o četnosti slovních tvarů ani o kontextu slov v korpusu. Slovo umím rozložit na právě dva morfémy (kmen a koncovkanebo nechat nerozloženéPři přiřazování slov ke vzorům se přednostně zjišťuje, zda známe přímo danou dvojici kmen-koncovka. Pokud žádnou takovou dvojici nenajdeme, zjišťujeme, zda rozpoznáme alespoň koncovky (aniž bychom znali kmen).+<code># lrc 
 +cd $MC 
 +foreach l (ar de en fi tr) 
 +  qsub.csh mc_jazyk.csh $l 
 +end</code>
  
-Potřebné skripty výstupy jsou ve složce ''~/zapoctaky/konc''.+Během trénování pro každý jazyk l vzniknou následující soubory: 
 + 
 +  * ''l.csts'' ... vstupní seznam slovních tvarů převedený do CSTS 
 +  * ''l.kmkon'' ... první rozdělení na kmeny koncovky. Každý slovní tvar byl rozdělen na dvě části všemi možnými způsoby a výsledky byly seskupeny podle kmenů (stejná levá část). 
 +  * ''l.nefiltr'' ... převedeno do podoby vzorů, na každém řádku jeden vzor. Vzor je popsán seznamem koncovek, které byly nalezeny se stejnými kmeny. Dotyčný seznam kmenů následuje za seznamem koncovek. Seznam vzorů zatím neprošel žádným filtrováním. 
 +  * ''l.vzor'' ... přefiltrovaný a upravený seznam vzorů. Údaje o každém vzoru jsou rozložené na několik řádků a doplněné českými komentáři, aby byl seznam čitelný pro člověka. 
 +  * ''l.kmeny.txt'' a ''l.koncovky.txt'' ... seznam všech kmenů a koncovek, které přežily filtrování a figurují v&nbsp;závěrečném seznamu vzorů. Tyto strojově čitelné seznamy se dají využít při pozdější segmentaci nových slov.
  
 Seznam vzorů se buduje takto (práce je rozdělena do několika kroků, protože zpracování velkých dat trvá dlouho a při opravě nějaké drobnosti u filtrování vzorů nechceme muset opakovat i první dva kroky): Seznam vzorů se buduje takto (práce je rozdělena do několika kroků, protože zpracování velkých dat trvá dlouho a při opravě nějaké drobnosti u filtrování vzorů nechceme muset opakovat i první dva kroky):
Line 36: Line 47:
 vzorfiltr.pl < en.vzor > en1.vzor</code> vzorfiltr.pl < en.vzor > en1.vzor</code>
 Skript ''vzorfiltr.pl'' jako vedlejší účinek vedle standardního výstupu tiše vyrobí soubory ''kmeny.txt'' a ''koncovky.txt''. Skript ''vzorfiltr.pl'' jako vedlejší účinek vedle standardního výstupu tiše vyrobí soubory ''kmeny.txt'' a ''koncovky.txt''.
 +
 +===== Morfematická segmentace =====
 +
 +Mám natrénovaný seznam vzorů, resp. seznam kmenů a koncovek. Segmentace ve skutečnosti znamená najít takové dělení slova na dvě části, aby první část odpovídala známému kmenu a druhá část známé koncovce.
 +
 +Slovo umím rozložit na právě dva morfémy (kmen a koncovka) nebo nechat nerozložené. Při přiřazování slov ke vzorům se přednostně zjišťuje, zda známe přímo danou dvojici kmen-koncovka. Pokud žádnou takovou dvojici nenajdeme, zjišťujeme, zda rozpoznáme alespoň koncovky (aniž bychom znali kmen).
  
 Rozklad slov na základě již vybudovaného seznamu vzorů se provede takto: Rozklad slov na základě již vybudovaného seznamu vzorů se provede takto:
 <code>mchallenge.pl kmeny.txt koncovky.txt < wordlist.eng > en.dz.txt</code> <code>mchallenge.pl kmeny.txt koncovky.txt < wordlist.eng > en.dz.txt</code>
-Turečtinu je pak ještě nutné prohnat skriptem ''tr2mctr.pl'', aby se obnovilo exotické kódování, které organizátoři vyžadují. 
  
-===== Nové seznamy slov pro soutěž v získávání informací =====+<code>cd $MC/data/2008 
 +foreach l (ar de en fi tr) 
 +  $MC/mchallenge.pl $l.kmeny.txt $l.koncovky.txt < wordlist.$l.txt > $l.dz.txt 
 +end</code> 
 + 
 +===== Úprava výstupu před odesláním ===== 
 + 
 +Ve výstupních souborech musí být první slovo (tvar, který jsme měli rozebrat) identické s&nbsp;řetězcem, který jsme od organizátorů dostali, tedy také v&nbsp;původním kódování. Zbytek řádku mohou být více méně libovolné řetězce, kterými si označujeme morfémy. Mohli bychom výstupy prohnat převodem kódování inverzním k&nbsp;tomu, který jsme na začátku dělali se vstupem. O něco bezpečnější se zdá žádné překódování neprovádět a pouze nahradit první slovo kopií prvního slova ze vstupu (vstupní a výstupní soubor mají stejný počet řádků, což se dá snadno ověřit). Má to ale háček. Původní texty obsahují ne-ASCII znaky, které jsou pak vesměs zakódované v&nbsp;ISO Latin 1. Uvnitř Perlu budou tyto znaky reprezentované jako UTF-8. Pokud pak na výstupu zvolíme UTF-8, bude se výstupní slovo lišit od vstupního. Pokud zvolíme ISO Latin 1, budou v&nbsp;pytli morfémy (možná jde nejen o estetickou chybu, ale i o věcnou, protože např. v&nbsp;arabštině by to mohlo dopadnout tak, že většina morfémů se převede na řetězce otazníků). Takže nakonec bude možná přece jen lepší překódovat celé výstupní soubory do těch příšerných kódování, která používají organizátoři. 
 + 
 +<code>cd ~/data/morphochallenge/2008 
 +$MC/mc_convert.pl -t ar < ar.dz.txt | gzip -c > wordlist.ara.dz.gz 
 +$MC/mc_convert.pl -t de < de.dz.txt | gzip -c > wordlist.ger.dz.gz 
 +$MC/mc_convert.pl -t en < en.dz.txt | gzip -c > wordlist.eng.dz.gz 
 +$MC/mc_convert.pl -t fi < fi.dz.txt | gzip -c > wordlist.fin.dz.gz 
 +$MC/mc_convert.pl -t tr < tr.dz.txt | gzip -c > wordlist.tur.dz.gz</code> 
 + 
 + 
 +===== Zpracování převrácených slov a hledání předpon ===== 
 + 
 +<code># lrc 
 +cd $MC/data/2008 
 +foreach l (ar de en fi tr) 
 +  $MC/reverse.pl < $l.csts > $l.rev.csts 
 +  qsub.csh $MC/mc_jazyk.csh $l.rev 
 +end</code> 
 + 
 +<code>foreach l (ar de en fi tr) 
 +  cat $l.rev.kmeny.txt | $MC/reverse_line.pl > $l.kmeny1.txt 
 +  cat $l.rev.koncovky.txt | $MC/reverse_line.pl > $l.predpony.txt 
 +  $MC/mchallenge3.pl $l.predpony.txt $l.kmeny1.txt $l.kmeny.txt $l.koncovky.txt < wordlist.$l.txt > $l.dz3.txt 
 +end</code> 
 + 
 +===== Zbývá udělat =====
  
-Organizátoři dodatečně poskytli seznamy nových slovkterá se neobjevila v původních trénovacích datechale vyskytují se v datechnad kterými se vyhodnocuje získávání informací (information retrieval). Spojuji nový seznam slov se starým. Nad spojeným seznamem natrénuji nový seznam vzorů. Těmito vzory pak rozeberu nový seznam slov a pošlu ho zpátky organizátorům.+  * Pustit celý algoritmus na převrácená slova a získat předpony. 
 +  * Vyzkoušet skórování. 
 +  * Zkusit rozpoznat složená slovaresp. složené kmeny. Pouze jednoduchý přístupsnažit se najít uvnitř kmenu jiný existující kmen takaby to, co zbyde, byl také existující kmen nebo složenina. 
 +  * Stáhnout doplňující seznamy slov pro soutěž 2 (information retrieval) a celý postup pro ně zopakovat. 
 +  * Vymyslet způsob, jak využít četnosti slovních tvarů, které jsme dostali s&nbsp;trénovacími daty. 
 +  * Odeslat výsledky Mikkovi.
  
-<code>cat wordlist.eng new-wordlist.eng > combined.eng 
-iconv -f iso-8859-1 -t utf8 < combined.eng | mctr2csts.pl > entrain1.csts 
-csts2kmkon.pl < entrain1.csts > en1.kmkon 
-kmkon2vzor.pl < en1.kmkon > en1.vzor 
-vzorfiltr.pl < en1.vzor > en1.filtr.vzor 
-mv kmeny.txt en1kmeny.txt 
-mv koncovky.txt en1koncovky.txt 
-mchallenge.pl en1kmeny.txt en1koncovky.txt < new-wordlist.eng > en1.dz.txt</code> 

[ Back to the navigation ] [ Back to the content ]