Next revision
|
Previous revision
|
user:zeman:preklad-morfemu [2010/12/14 17:44] zeman vytvořeno |
user:zeman:preklad-morfemu [2012/03/19 22:32] (current) zeman Eman a Morfessor. |
====== Překlad morfémů ====== | ====== Překlad morfémů ====== |
| |
* Znova rozchodit Morfessor. | ===== Zbývá udělat ===== |
* Předcházející pokusy proběhly v rámci přípravy výuky o neřízené morfematické segmentaci. | |
* /net/work/people/zeman/enlex | |
* Vlastní Morfessor mám na dvou místech, jednak v /home/zeman/nastroje/morfessor, jednak v TectoMT/personal/zeman. | |
* Do nástrojů vede odkaz z enlex. | |
* Přesto je novější verze v TectoMT. | |
* Je v ní také můj skript train.pl. | |
* Rozebrat Morfessorem všechna anglická a česká trénovací, vývojová i testovací data. | * Rozebrat Morfessorem všechna anglická a česká trénovací, vývojová i testovací data. |
* Vybrat vhodný malý pokus s malými daty, na kterých se to provede. | * Vybrat vhodný malý pokus s malými daty, na kterých se to provede. |
* Prozkoumat, co vypadlo z Gizy, protože to bude hlavní zajímavost do článku. | * Prozkoumat, co vypadlo z Gizy, protože to bude hlavní zajímavost do článku. |
| |
| ===== Morfessor ===== |
| |
| Morfessor mám momentálně v TectoMT, ale vede na něj také symbolický odkaz z nástrojů: |
| * ''$TMT_ROOT/personal/zeman/morfessor'' |
| * ''/home/zeman/nastroje/morfessor'' |
| |
| 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: |
| |
| <code bash>qsub.csh $TMT_ROOT/personal/zeman/morfessor/bin/actrain.pl -l en</code> |
| |
| 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'': |
| |
| <code bash>$TMT_ROOT/personal/zeman/morfessor/bin/morfseg.pl -m /net/work/people/zeman/morfessor/en/segmented.txt < tokenized.txt > segmented.txt</code> |
| |
| 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. |
| |
| ==== Eman ==== |
| |
| V březnu 2012 tyto pokusy oživuju a zakládám na to nové druhy kroků v Emanovi: morfessor pro instalaci Morfessora včetně mých doplňkových skriptů, morfmodel pro natrénování morfematického modelu pro konkrétní jazyk (zatím na všech korpusech z mých augmented corpora, cesta k nim je zadrátovaná ve zdrojáku). Plánuju i morfcorpus, který rozseká daný korpus modelem pro daný jazyk a výsledek zaregistruje v Corpmanovi. |