[ 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

Překlad morfémů

Zbývá udělat

Morfessor

Morfessor mám momentálně v TectoMT, ale vede na něj také symbolický odkaz z nástrojů:

Verze v TectoMT obsahuje moje úpravy Morfessora (např. práce s texty v UTF-8) a také můj obalovací skript train.pl.

Umístění souborů

Umístění programových souborů Morfessora nebo s Morfessorem souvisejících je popsáno výše.

Paralelní data, na která se to celé bude aplikovat, typicky leží v příslušné složce augmented_corpora. Předpokládám, že tam také budou ležet segmentované verze těchto korpusů po průchodu Morfessorem.

Pracovní složka pro Morfessora a všechna data, která souvisejí s konkrétním jazykem, ale nikoli s konkrétním korpusem pro tento jazyk, by měla ležet jinde. Založil jsem na to složku /net/work/people/zeman/morfessor. Přesunul jsem do ní i starší složky cslex a enlex, ve kterých jsou první pokusy s Morfessorem, které proběhly v rámci přípravy výuky o neřízené morfematické segmentaci.

Předzpracování paralelních dat Morfessorem

Morfessor čte frekvenční slovník (na každém řádku četnost, mezera, slovo). Nejdříve mu ho tedy musíme vyrobit z jednojazyčné části paralelního korpusu (a klidně můžeme přihodit libovolné další texty v tomtéž jazyku, čím více a čím různorodější, tím lépe – Morfessor pak bude mít více materiálu pro správné určení morfů).

Pak ještě potřebujeme program, který načte Morfessorem navržené dělení trénovacích slov, zapamatuje si ho a aplikuje ho na libovolný tokenizovaný vstupní text. Tímto programem potom proženeme naše paralelní data.

Program pro trénování Morfessora nad paralelními korpusy pro konkrétní jazyk se jmenuje actrain.pl. Leží vedle Morfessora v $TMT_ROOT/personal/zeman/morfessor/bin. Zatím má v sobě zadrátovanou cestu k Morfessorovi, k augmented_corpora (WMT) a k pracovní složce. Skript projde všechny paralelní korpusy v augmented_corpora, vybere z nich texty ve zvoleném jazyce, slepí je do jednoho jednojazyčného korpusu a na něm natrénuje Morfessor. Kód jazyka se předává jako parametr, např. takhle pro angličtinu:

qsub.csh $TMT_ROOT/personal/zeman/morfessor/bin/actrain.pl -l en

Když trénink doběhne, máme k dispozici 2 frekvenční seznamy slov, jeden před Morfessorem a jeden po něm: /net/work/people/zeman/morfessor/en/freqdict.txt a segmented.txt. Ten druhý se dá použít pro předzpracování tokenizovaného textu v daném jazyce (ten byl pravděpodobně součástí trénovacích dat pro Morfessora, takže by neměl obsahovat žádná neznámá slova). Na to máme program morfseg.pl:

$TMT_ROOT/personal/zeman/morfessor/bin/morfseg.pl -m /net/work/people/zeman/morfessor/en/segmented.txt < tokenized.txt > segmented.txt

Tímto programem chceme prohnat text v daném jazyce z každého paralelního korpusu. Výsledek chceme uložit u téhož paralelního korpusu. Bude mít stejný počet vět (řádků), ale jiný počet tokenů, proto ho musíme prohlásit za jiný jazyk. Např. en.gz –> enMorf.gz. Program, který tohle provede se všemi korpusy v augmented_corpora pro jeden jazyk, se jmenuje acmorfseg.pl a opět má v sobě zadrátované cesty.


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