[ Skip to the content ]

Institute of Formal and Applied Linguistics Wiki


[ Back to the navigation ]

This is an old revision of the document!


Table of Contents

Morpho Challenge 2008

Stránky soutěže jsou na http://www.cis.hut.fi/morphochallenge2008/. E-mailová adresa organizátorů je morphochallenge2007@james.hut.fi. Poznámky k mému loňskému řešení jsou na stránce Morpho Challenge 2007.

Data mám v ~/data/morphochallenge/2008. Programy mám v ~/projekty/morphochallenge (odkaz na data vede i odsud). Původně byly v ~/zapoctaky/konc.

setenv MC /home/zeman/projekty/morphochallenge

Příprava dat

Organizátoři používají trochu zvláštní kódování, navíc pro každý jazyk jiné. Napsal jsem si skript, který převede data od organizátorů do UTF-8. Bude umět i převod opačným směrem, což bude potřeba, až budu organizátorům posílat výsledky.

cd ~/data/morphochallenge/2008
gunzip -c wordlist.ara.gz | $MC/mc_convert.pl -f ar > wordlist.ar.txt
gunzip -c wordlist.eng.gz | $MC/mc_convert.pl -f en > wordlist.en.txt
gunzip -c wordlist.fin.gz | $MC/mc_convert.pl -f fi > wordlist.fi.txt
gunzip -c wordlist.ger.gz | $MC/mc_convert.pl -f de > wordlist.de.txt
gunzip -c wordlist.tur.gz | $MC/mc_convert.pl -f tr > wordlist.tr.txt

Můj skript pro automatické rozsekání slov na kmeny a koncovky předpokládá, že vstup je textový korpus ve formátu CSTS. Nejprve tedy musíme trénovací seznamy slov a jejich četností převést do tohoto formátu.

cd $MC
foreach l (ar de en fi tr)
  mc2csts.pl < data/2008/wordlist.$l.txt -l $l > data/2008/$l.csts
end

Trénování morfologických vzorů

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:

# lrc
cd $MC
foreach l (ar de en fi tr)
  qsub.csh mc_jazyk.csh $l
end

Zbytek této stránky je zatím pouhá kopie z roku 2007

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.

Moje zpracování se skládá ze dvou částí:

  1. Rozebrat slova na vstupu, získat seznam vzorů, kmenů a koncovek.
  2. 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 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).

Potřebné skripty a výstupy jsou ve složce ~/zapoctaky/konc.

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):

csts2kmkon.pl < en.csts > en.kmkon
kmkon2vzor.pl < en.kmkon > en.vzor
vzorfiltr.pl < en.vzor > en1.vzor

Skript vzorfiltr.pl jako vedlejší účinek vedle standardního výstupu tiše vyrobí soubory kmeny.txt a koncovky.txt.

Rozklad slov na základě již vybudovaného seznamu vzorů se provede takto:

mchallenge.pl kmeny.txt koncovky.txt < wordlist.eng > en.dz.txt

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í

Organizátoři dodatečně poskytli seznamy nových slov, která se neobjevila v původních trénovacích datech, ale vyskytují se v datech, nad 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.

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

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