[ 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
Last revision Both sides next revision
user:zeman:moses-na-questu [2014/02/06 11:33]
zeman
user:zeman:moses-na-questu [2014/02/06 15:37]
zeman
Line 3: Line 3:
 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. 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.+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: 
 + 
 +<code bash>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</code> 
 + 
 +Zkopírované kroky jsou plné symbolických odkazů na jazykové a překladové modely, ale tyto odkazy na questu nefungují. Musíme je opravit: 
 + 
 +<code bash># 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 ..</code> 
 + 
 +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. 
 + 
 +<code bash>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</code> 
 + 
 +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. Zevnitř se mj. volá tohle: 
 + 
 +<code bash>date ; $traindir/filter-model-given-input.pl $wdir/filtered $translatedir/filtered-for-eval/moses.ini $wdir/corpus.src ; date</code> 
 + 
 +Sahá se tam do složky ''filtered-for-eval'', kde je symbolický odkaz na správnou frázovou tabulku a konfigurační soubor ''moses.ini'', ve kterém jsou rovněž cesty k jazykovým a překladovým modelům. Jde o absolutní cesty z vnitřní sítě, takže je potřebujeme opravit, aby fungovaly na questu! Mělo by stačit nahradit všechny výskyty cesty ''/a/LRC_TMP/zeman/statmt/playground'' cestou ''/home/zeman/cgi/czechmate/ufal-smt-playground/playground'': 
 + 
 +<code bash>cd filtered-for-eval 
 +cat moses.ini | sed 's:/a/LRC_TMP/zeman/statmt/playground:/home/zeman/cgi/czechmate/ufal-smt-playground/playground:g' > moses1.ini 
 +mv moses1.ini moses.ini 
 +mv phrase-table.0-0.1.1.gz xxl-phrase-table.0-0.1.1.gz 
 +ln -s ../ttable-xxx.gz phrase-table.0-0.1.1.gz 
 +cd ..</code>

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