[ Skip to the content ]

Institute of Formal and Applied Linguistics Wiki


[ Back to the navigation ]

This is an old revision of the document!


Moses na questu

Toto jsou moje poznámky, jak obalit Mosese a Emana webovou aplikací. Varování ministra informatiky: Cílem tohoto postupu není udělat to správně. Cílem je co nejrychleji a s co nejmenším úsilím rozchodit alespoň něco. Je tam proto řada velmi brutálních hacků. Až bude více času, nahradíme je lepším řešením. Zcela se zde ignoruje MT Monkey (určen přímo pro poskytování překladu jako webové služby) a minicluster, na který by se takovéto úlohy měly z questu odesílat.

Někde na vnitřní síti mám hřiště pro Emana. Cestu k němu označím PLAY. Na questu mám připravenou podsložku ve složce pro CGI skripty (např. /usr/lib/cgi-bin/zeman/preklad), označím si ji QCGI. V ní mám složku eman, kam jsem si z Gitu vybalil emana, a dále složku ufal-smt-playground, kam jsem si vybalil čisté hřiště se skripty a šablonami. Složku $QCGI/ufal-smt-playground/playground (čili to hřiště na questu) si označím QPLAY.

Na hřišti PLAY si najdu kroky s modely, které chci na questu zpřístupnit. Můžu se např. podívat do harvest.txt a vypsat kroky evaluator, které mě zajímají; potom pomocí est tb najít jim odpovídající kroky translate a mert. Z nějakého důvodu mi pro en-cs stačily tyto dva kroky, ale pro ostatní jazykové páry nestačí, protože krok mert neobsahuje jazykový ani překladový model, jsou tam jen symbolické odkazy. Takže musím přidat i kroky lm a tm. Cílový jazyk je u mých pokusů vždy čeština, čili jazykové modely jsou vždy stejné a můžu dokonce převzít ty, které už jsem získal v kroku mert pro en-cs. Vybral jsem tyto kroky:

Jazyky BLEU Evaluator Translate Mert Tm Lm
de-cs 0.1532 s.evaluator.91754 s.translate.b83a4 s.mert.fb673 s.tm.c45f4 s.lm.9e583 s.lm.51815
es-cs 0.1614 s.evaluator.75a32 s.translate.5ad59 s.mert.ebae4 s.tm.f0b0d s.lm.9e583 s.lm.51815
fr-cs 0.1441 s.evaluator.1e6bb s.translate.32442 s.mert.dfbd0 s.tm.78273 s.lm.9e583 s.lm.51815

Vybrané kroky je třeba zkopírovat na quest:

ssh zen
cd $PLAY
zip -ry pro_quest.zip všechny_výše_vybrané_kroky
ssh quest
cd $QPLAY
scp zen:$PLAY/pro_quest.zip .
unzip pro_quest.zip

Zkopírované kroky jsou plné symbolických odkazů na jazykové a překladové modely, ale tyto odkazy na questu nefungují. Musíme je opravit:

# de-cs
cd s.translate.b83a43c4.20131223-0735
rm lmodel-file.1.gz lmodel-file.2.gz ttable-file.1.gz moses
ln -s ../s.mert.20cd7b2b.20130418-1358/lmodel-file.1.gz .
ln -s ../s.mert.20cd7b2b.20130418-1358/lmodel-file.2.gz .
ln -s ../s.tm.c45f438c.20131221-0815/model/phrase-table.0-0.gz ./ttable-file.1.gz
ln -s moses.hardlink moses
cd ..
# es-cs
cd s.translate.5ad5995f.20131223-0739
rm lmodel-file.1.gz lmodel-file.2.gz ttable-file.1.gz moses
ln -s ../s.mert.20cd7b2b.20130418-1358/lmodel-file.1.gz .
ln -s ../s.mert.20cd7b2b.20130418-1358/lmodel-file.2.gz .
ln -s ../s.tm.f0b0d576.20131221-0816/model/phrase-table.0-0.gz ./ttable-file.1.gz
ln -s moses.hardlink moses
cd ..
# fr-cs
cd s.translate.32442a28.20131223-0742
rm lmodel-file.1.gz lmodel-file.2.gz ttable-file.1.gz moses
ln -s ../s.mert.20cd7b2b.20130418-1358/lmodel-file.1.gz .
ln -s ../s.mert.20cd7b2b.20130418-1358/lmodel-file.2.gz .
ln -s ../s.tm.78273296.20131221-0816/model/phrase-table.0-0.gz ./ttable-file.1.gz
ln -s moses.hardlink moses
cd ..

Frázová tabulka je pro quest příliš velká. Její filtrování pro konkrétní test set trvá nepřijatelně dlouho (klidně přes čtvrt hodiny) a výsledná tabulka je stejně tak velká, že se nevejde do paměti. Proto je potřeba ji prořezat. Samozřejmě bychom měli fráze na vyhození vybírat nějak inteligentně a u těch zbývajících přepočítat pravděpodobnosti. Rychlá metoda hrubé síly je tato: Pokud mají zdrojová a cílová fráze dohromady větší než předem stanovený počet tokenů, vyhodit. Dlouhý příkaz níže stanovuje maximální počet tokenů na 7.

gunzip -c ttable-file.1.gz | perl -e 'use utf8; binmode STDIN, ":utf8"; binmode STDOUT, ":utf8"; while(<>) {if(m/^(.*?\|\|\|.*?\|\|\|)/){my $prefix = $1; my @preftokens = split(/\s+/, $prefix); if(scalar(@preftokens)>7){next;}} print;}' | gzip -c > ttable-xxx.gz

O spuštění Mosese se správným modelem se stará skript $QCGI/moses-envelope.pl. (Teď nevím, jestli mám jeho kopii i někde mimo quest, potažmo v nějakém repozitáři.) Tento skript zatím sahal automaticky pro angličtinu. Nyní ho budeme muset upravit, aby podle volby vstupního jazyka vybral správný model.


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