[ 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

Danovy pokusy s Joshuou na WMT 2012

http://matrix.statmt.org/
http://www.statmt.org/wmt11/translation-task.html
http://svn.ms.mff.cuni.cz/projects/statmt/wiki/enhi/joshua

/net/work/people/zeman/wmt

Aktuální úkoly

Srovnávací testy mezi Joshuou 1.1 a 1.3: Je třeba otestovat nastavení maximální délky fráze 5

Po přechodu z Joshuy 1.1 na 1.3 u téměř všech pokusů pokleslo BLEU skóre. Je to sice malý pokles a pravděpodobně není statisticky významný, ale stejně mě to zaráží. Srovnání u češtiny ukázalo, že se liší extrahovaná gramatika. V konfiguraci se už teď nezadává, že maximální délka fráze má být 5. Hraje to nějakou roli?

obo-max

Nejúspěšnější nastavení z roku 2010 (více méně recyklované v roce 2011) bylo obo-max, nyní přejmenované na obo-max-test2009, a obo-max3, nyní přejmenované na obo-max-test2010. Oba tyto pokusy nyní používají Joshuu 1.3 (stará skóre byla naměřena s Joshuou 1.1 a jinými skripty). Oba používají Ondřejova velká data, tj. 7 miliónů párů vět z Czengu 0.92 na trénování, 13 miliónů českých vět (210 miliónů slov) pro český jazykový model (hexagram), nějaké tokenizační a technické úpravy (jazyky csNm a enNa2). Oba využívají Ondrovy augmented_corpora (/home/bojar/diplomka/granty/emplus/wmt10/playground/augmented_corpora). V mých vlastních možná ani nejsou k dispozici zdrojové korpusy. Testovací korpus má u Ondry název wmt102.test09, resp. wmt102.test10. V obou případech ladím váhy na wmt102.test08.

Vytvořil jsem ještě i analogické obo-max-test2011, ale zatím to má háček. Ondrovy augmented_corpora neobsahují newstest2011. Takže jsem se vyhnul pouštění prepare.pl, přeplácnul jsem svou kopii testovacích souborů svou kopií newstest2011, což navíc neprošlo stejnou úpravou jako ostatní Ondrova data (není to tedy ve skutečnosti jazyk csNm, resp. enNa2, ale obyčejné moje cs a en; byť jsem je přejmenoval, aby to fungovalo).

Výsledek Test 2009 Test 2010 Test 2011
Starý (Joshua 1.1) 0.1300 0.1402
Nový (25.1.2012, Joshua 1.3) 0.1381 0.1477 0.1452

Data

Vývojová data (news-test) jsou k dispozici ve formátu SGML. Obsahují pouze jeden referenční překlad, takže stačí vykopat obsah prvků <seg>. Výsledek strčit do augmented_corpora.

Ondřejova data

Ondřejovy augmented corpora se nacházejí v /home/bojar/diplomka/granty/emplus/wmt10/playground/augmented_corpora (což vede na /a/merkur3/TMP/bojar/wmt10/playground/augmented_corpora). Za baseline se považuje trénování na zpravodajské části Czengu, tj. czeng092-ne. Uvnitř jsou různé podjazyky podle úrovně analýzy. Zdá se, že baseline by mohly být např. enNa a csNa, ale Ondřej prý pro WMT 2010 používal enNa2+stc a csN[ma]+stc (csNa a csNm jsou prý identické). Faktor stc znamená supervised truecasing, čili truecasováno podle lemat. Ondřej korpus zarovnával podle lemat, tj. enNa-lemma-csNa-lemma-gdfa. Český jazykový model Ondřej vyráběl z wmt10mono2, a to šestigramový.

Vysvětlení Ondrových pseudojazyků:

Ondřejův maximální paralelní korpus navíc obsahuje další části Czengu a korpus Emea: czeng092-ne+czeng092-eu+czeng092-fi+czeng092-te+czeng092-su+czeng092-we+emea2 (alignment csNm-lemma-enNm-lemma-gdfa).

Pro český jazykový model chtěl Ondřej později ještě přidat korpusy wmt09mono, webcoll a syn200x.

Testovací data by měl mít stejná jako já, tj. wmt102.test08 pro MERT a wmt102.test09 pro testování.

Výsledky

Není-li řečeno jinak, váhy se ladí na newstest2008 a testuje se na newstest2009. Trénuje se zatím na news-commentary, a to jak překladový, tak jazykový model. U testu WMT 2010 se jako základní uvádí BLEU skóre, které mi spočítal Joshua, v závorce pak skóre, které mi spočítali organizátoři, lowercase / truecase. Hodnoty se někdy výrazně liší, zřejmě kvůli odlišné tokenizaci.

Pokus Dev WMT08 Test WMT09 Test WMT10 Poznámka Datum
decs-josh13 0.0935 0.0886 15.3.2010
escs-josh13 0.0922 0.0872 15.3.2010
frcs-josh13 0.0885 0.0818 Zřetelně menší trénovací data než pro encs, decs a escs. 15.3.2010

Pokusy s uvozovkami

Paralelní data, která máme k dispozici, používají velmi různorodou směs znaků pro uvozovky. Často také není poznat, zda jde o počáteční, nebo koncové uvozovky. Napsal jsem skript, který se tohle pokusí rozpoznat (je jazykově závislý), a znaky pro uvozovky sjednotit. Všechny korpusy jsem tímto skriptem protáhl a vznikly verze označené v6b (včetně vývojových a testovacích dat). Nyní je třeba pustit všechny pokusy znova a zjistit, zda to nějak ovlivní skóre.

$STATMT/scripts/specchar.pl

Takhle se upraví korpus v augmented_corpora, aby vznikla verze v6b (korpus musíme také označkovat, protože budeme potřebovat faktory lemma a stc):

cd /net/work/people/zeman/wmt

Do Makefile přidáme nově upravené korpusy, mající v názvu “.v6b.”, např.:

EUROPARL = $(foreach pair,es-en/es es-en/en,europarl-v6b.$(pair))
NEWSCOMM = $(foreach pair,es-en/es es-en/en,news-commentary-v6b.$(pair))

Ale pozor! Jestliže jsme už předtím zpracovali jiný jazykový pár, musíme ho z Makefile alespoň dočasně vyhodit! Jinak si novým zkopírováním zdrojových korpusů přepíšeme případnou označkovanou verzi korpusu!

make corpus CORPUS=europarl-v6b.fr-en LANGUAGE=fr

Teď použijeme TectoMT/Treex a cluster k označkování nových korpusů. Původní aplikace se nachází v $TMT_ROOT/applications/reordering/actag, ale už v ní přestala fungovat němčina, protože ze sdílené složky zmizel natrénovaný model pro TreeTagger. Nová aplikace se nachází v $TMT_ROOT/treex/devel/reordering/actag, ale zatím v ní funguje pouze němčina.

cd $TMT_ROOT/treex/devel/reordering/actag
nohup nice make CORPUS=europarl-v6b.fr-en LANGUAGE=fr >& make-euro-fren-fr.log &
nohup nice make CORPUS=europarl-v6b.fr-en LANGUAGE=en >& make-euro-fren-en.log &
nohup nice make CORPUS=news-commentary-v6b.fr-en LANGUAGE=fr >& make-news-fren-fr.log &
nohup nice make CORPUS=news-commentary-v6b.fr-en LANGUAGE=en >& make-news-fren-en.log &

No a nyní již můžeme naklonovat nové pokusy. I když můžeme naklonovat oba směry (např. “fren” a “enfr”) těsně po sobě, se spuštěním druhého směru by to chtělo počkat kvůli zámkům a vzájemnému nepřetahování se o práci, až než u prvního směru doběhne fáze “prepare”.

$STATMT/joshua-scripts/clonex.pl fren-stc-allemma-tmnews+parl-lmnews+parl-lm6-test2011 fren-stc-allemma-tmv6b-lmv6b-lm6-test2011
cd fren-stc-allemma-tmv6b-lmv6b-lm6-test2011
$STATMT/joshua-scripts/resetex_scripts.pl
vim scripts/setexp.pl
$ac_tmtrain     = 'news-commentary-v6b.fr-en+europarl-v6b.fr-en';

Podle časových značek u korpusů v augmented_corpora se zdá, že poslední “v6b” jsem vytvořil 21.4.2011. Vypadá to, že mám news-commentary+europarl ve verzi v6b pro všechny čtyři jazykové páry (cs-en, de-en, es-en, fr-en). Výsledky: Skóre “dříve” znamená před úpravou trénovacích dat, tedy -stc-allemma-tmnews+parl-lmnews+parl-lm6-test2011. Skóre “nyní” znamená po úpravě trénovacích dat, tedy -stc-allemma-tmv6b-lmv6b-lm6-test2011. Vylaďovací ani testovací data zatím nijak upravována nebyla. Jejich úpravu bychom ale měli taky otestovat, protože např. teď obsahují samé ASCII uvozovky, které jsou pro Joshuu neznámým tokenem.

es-en: dříve 0.2452, nyní 0.2428
en-es: dříve 0.2590, nyní 0.2542

Inventura 16.1.2012

16.1.2012 21:12: Pouštím znova pokus encs-stc-allcstem4-tmnews+parl-lmnews+parl-lm6-test2011. Zřejmě to neobsahuje opravené uvozovky (v6b), ale potřebuju zjistit, zda se to vůbec rozběhne.

Nový průběh všech osmi starých pokusů (supervised truecasing, žádná normalizace uvozovek, nové je na nich paralelní počítání alignmentu, ale výsledek by měl být identický – nekontroloval jsem): $SRC$TGT-stc-allcstem4-tmnews+parl-lmnews+parl-lm6-test2011

Jazyky BLEU
en-cs 0.1191
cs-en 0.1692
en-de 0.1337
de-en 0.1885
en-es 0.2573
es-en 0.2446
en-fr 0.2591
fr-en 0.2243

Od jara mám vytvořené také pokusy s korpusy, ve kterých jsou upravené uvozovky (verze 6b), takže je teď taky pustím. Je to spíš na oprášení starého kódu, ale bude se to muset pustit ještě jednou, protože momentálně se uvozovky opravují pouze v trénovacích datech, ale ne ve vývojových a testovacích. (Opravu testovacích dat bych si mohl ospravedlnit např. budoucím hodnocením lidmi. A nebo alespoň normalizovat testovací data tím brutálnějším skriptem od Philippa.)

$SRC$TGT-stc-allemma-tmv6b-lmv6b-lm6-test2011

První výsledky jsou zatím bez záruky, protože v průběhu Gizy jsem narazil na kvótu. Procesy sice nespadly, ale nejsem si jistý, co prováděly těch několik hodin, kdy nemohly psát na disk. Takže raději pustit ještě jednou (ostatně jeden z nich dokonce nedoběhl).

24.1.2012 už mám i skoro všechny kontrolní výsledky druhého běhu, ale mezitím jsem zjistil chybu v počítání alignmentu, takže pouštím potřetí (zatím šest pokusů pro češtinu, němčinu a španělštinu, později pustím i francouzštinu, až i u ní skončí druhý běh).

Jazyky BLEU Kontrolní běh Třetí běh
en-cs FAILED 0.1267 0.1246
cs-en 0.1748 0.1748 0.1792
en-de 0.1268 0.1268 0.1274
de-en 0.1869 0.1869 0.1859
en-es 0.2542 0.2542 0.2531
es-en 0.2428 FAILED 0.2375
en-fr 0.2586 0.2628 0.2619
fr-en 0.2294 0.2294 0.2285

Pokusy s Emanem

Tohle jsou data, která Ondřej použil pro svůj „malý pokus“:
SRCAUG=enNmT1+stc
TGTAUG=csNmT1+stc
ALILABEL=enNmT1-lemma-csNmT1-lemma
DEV: wmt10
TEST: wmt11

Kopie příslušných korpusů jsou na mém hřišti v těchto krocích (ukázáno rovnou na inicializaci kroku dandata):

/home/zeman/projekty/statmt/playground/corpman --wait wmt10/csNmT1+stc

SRC=en TGT=cs IMPORTCORPUS=yes TRALS=s.corpus.60681730.20120201-2157 TRALT=s.corpus.892024c6.20120201-2157 TRTMS=s.corpus.402e5219.20120201-2302 TRTMT=s.corpus.d8e0b2d7.20120201-2157 TRLMT=s.corpus.d8e0b2d7.20120201-2157 DEVS=s.corpus.e46c791e.20120201-2159 DEVT=s.corpus.c3230ea2.20120201-2201 TESTS=s.corpus.7b9dc07b.20120201-2205 TESTT=s.corpus.d0ef157e.20120201-2208 eman init dandata
s.dandata.1d1f8734.20120203-1125

wmt10/enNmT1+stc = s.corpus.e46c791e.20120201-2159
wmt10/csNmT1+stc = s.corpus.c3230ea2.20120201-2201
wmt11/enNmT1+stc = s.corpus.7b9dc07b.20120201-2205
wmt11/csNmT1+stc = s.corpus.d0ef157e.20120201-2208

Korpusy pro alignment:
s.corpus.60681730.20120201-2157
s.corpus.892024c6.20120201-2157

GIZASTEP=s.mosesgiza.8a492679.20120202-1628 DATASTEP=s.dandata.1d1f8734.20120203-1125 ALISYM=gdfa eman init danalign
s.danalign.9fb3696a.20120203-1128
JOSHUASTEP=s.joshua.2723ccd9.20120131-1031 ALIGNSTEP=s.danalign.9fb3696a.20120203-1128 eman init binarize --start --mem 31g
s.binarize.4576151d.20120203-1524
BINARIZESTEP=s.binarize.4576151d.20120203-1524 FOR=dev eman init extract --start
s.extract.95792bfb.20120203-1528
BINARIZESTEP=s.binarize.4576151d.20120203-1524 FOR=test eman init extract --start
s.extract.01f5693c.20120203-1528
SRILMSTEP=s.srilm.e99247ad.20120201-0921 DATASTEP=s.dandata.1d1f8734.20120203-1125 ORDER=5 eman init danlm --start
s.danlm.06d337e0.20120203-1600
LMSTEP=s.danlm.06d337e0.20120203-1600 EXTRACTSTEP=s.extract.95792bfb.20120203-1528 eman init zmert --start
s.zmert.884b636b.20120203-1602
MERTSTEP=s.zmert.884b636b.20120203-1602 EXTRACTSTEP=s.extract.01f5693c.20120203-1528 eman init daneval --start
s.daneval.96709ff9.20120203-1603

Výsledek Danova pokusu s Ondřejovými malými daty:
BLEU = 0.1185
(Ondřej měl s Mosesem asi 0.1230.)
Ještě je potřeba to testovat stejným skriptem jako Ondřej, abychom použili stejnou tokenizaci a taky abychom dostali rozptyl skóre.


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