Table of Contents
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. Zevnitř se mj. volá tohle:
date ; $traindir/filter-model-given-input.pl $wdir/filtered $translatedir/filtered-for-eval/moses.ini $wdir/corpus.src ; date
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
:
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 ..
Pokusný německý text
Frankfurter Allgemeine Zeitung (http://www.faz.net/aktuell/feuilleton/wie-in-china-erdogan-vernichtet-das-freie-tuerkische-internet-12788686.html)
Es ist eine schwarze, eine traurige Woche für die Demokratiebewegung in der Türkei. Denn nie zuvor ist die Meinungsfreiheit dort so umfassend beschnitten worden wie jetzt und noch nie die Gewaltenteilung so einfach aufgehoben worden. In der Türkei herrschen bald chinesische Verhältnisse. Nur einen Tag nachdem Tayyip Erdogan im Berliner Tempodrom großspurig behauptet hatte, seine Regierung habe die Beschränkung der Meinungsfreiheit aufgehoben, hat das türkische Parlament in der Nacht von Mittwoch auf Donnerstag ein Gesetz verabschiedet, bei dem einem schwindelig wird. Es sieht vor, dass die staatliche Türkische Telekommunikationsbehörde (TIB) Internetseiten künftig auch ohne richterlichen Beschluss sperren kann, wenn sie in deren Inhalten eine Verletzung von Persönlichkeitsrechten sieht.
Pokusný španělský text
El País (http://deportes.elpais.com/deportes/2014/02/06/actualidad/1391706650_404982.html)
Vivir al pie de una montaña de 8.000 metros en invierno es vivir fuera del tiempo común. No solo es la soledad, ni siquiera el frío enloquecedor, ni la paciencia exigida para pasar horas eternas esperando un cambio en el parte meteorológico para poder enfrentarse a la montaña: lo peor es saberse aislado. Gracias al teléfono vía satélite y a su conexión de internet, Simone Moro y su equipo juegan a engañarse. Juegan a creer que están en contacto con el mundo. Que están en el mundo.
Pokusný francouzský text
En renonçant, en novembre 2013, abruptement et au dernier moment, sous la pression de la Russie, à signer un accord commercial d'association avec l'Union européenne (UE) qui avait été préparé de longue date, le président de l'Ukraine a enclenché, dans son pays, un séisme politique que plus personne ne parvient à maîtriser. A la suite de l'opposition parlementaire pro-européenne, une grande partie de la population urbanisée s'est placée en rébellion ouverte contre le régime autoritaire et corrompu du président Viktor Ianoukovitch. Pour tenter de désamorcer la crise, le premier ministre a démissionné. Le président osera-t-il nommer Petro Porochenko au poste de premier ministre? Cet oligarque ayant réussi dans l'industrie du chocolat, ancien ministre des affaires étrangères réputé pour ses qualités de négociateur, a été follement applaudi dimanche 2 février 2014 sur la place centrale de Kiev.