This is an old revision of the document!
Table of Contents
Danovy pokusy na WMT 2013, Sofija
http://matrix.statmt.org/
http://www.statmt.org/wmt13/translation-task.html
/net/work/people/zeman/wmt
Aktuální úkoly
- Dořešit s Ondřejem, proč mu vadí to mazání nepořádku po předchozích neúspěšných pokusech v eman.seeds/eman.command. V nejhorším případě to nějak budu muset zdvojit alespoň v danmake.pl.
- Znova označkovat anglický Gigaword, tentokrát Featuramou.
- Dokončit pokusy s korpusy un.es-en a un.fr-en. Běží merty, pak translate a evaluator. Pak kombinace un s jinými korpusy (newseuro a newsall).
- Zkontrolovat data pro rok 2013.
- Nejsou náhodou letos nové verze korpusů newseuro a newsall?
- Europarl je stejný jako loni, tedy verze 7.
- U News Commentary to není jisté, spíš asi budou nové.
- Korpus UN bude asi stejný, i když to na stránkách WMT výslovně nepíšou.
- Navíc je úplně nový korpus Common Crawl (prý je ale špinavý).
- Nové by mělo být i newsall, protože přibyl rok 2012.
- Používám správné verze Gigawordů?
- O ruštině nemluvě…
- Proč při překladu odkudkoliv do angličtiny to s jazykovým modelem na newsall dopadne malinko hůř než bez něj? Nemělo by to spíš dopadnout zřetelně líp? Co je s ním? Jak je velký? Jakou dostal váhu? Jak se po jeho přidání změnil výstup překladu?
- Giga.fr-en: Stále ještě se vyrábí překladový model. Pokud se ale stihne vyrobit, musím z něj vyždímat nějaké výsledky.
- danmake.pl na rozdíl od emana nerozlišuje kroky, které jsou OUTDATED nebo FAILED. Když mu eman select pro nějakou sadu požadavků najde několik kroků, z nichž první je nějak vadný a druhý je DONE, danmake klidně použije ten první a pak se diví.
- Nějak tu chybí pořádná tabulka loňských výsledků. To je mám opisovat z článku na WMT?
- Jazykové modely gigaword/czeng + newseuro + newsall
- Velká paralelní data un, gigafren, czeng
- Pokusit se napodobit Ondrův nejlepší výsledek.
- Použít stejná data jako on nebo lepší (to znamená přinejmenším celý Czeng a velká jednojazyčná data; Ondra ale prý vynechal Europarl, ten já vynechat nechci).
- Natrénovat stejné modely jako on. Přinejmenším mi zatím chybí lexical reordering model. Ondra navíc prováděl ještě nějaké čachry se značkami (jazykový model na morfologických značkách).
- Srovnat supervised truecasing, který používám teď, s něčím méně sofistikovaným. Nezmenšovat první písmeno slova uprostřed věty jen proto, že moje lematizace nezná dané slovo jako vlastní jméno (např. “doktor Chaloupka” by se neměl změnit na “doktor chaloupka”).
- Prohnat všechna data Morfessorem a vyhodnotit překlad s ním.
- Otestovat vliv omezení délky fráze na 5 tokenů (zkusit i default a 10).
- Pro všechny jazykové páry používat všechna dostupná data. Například velký Czeng pro češtinu, velké korpusy UN pro francouzštinu a španělštinu, gigawordy pro jazykové modely atd.
- Převést všechny pokusy pod aktuální verzi Joshuy (ale bacha, možná bude hodně jiná).
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ů:
- Znaky za
cs
, resp.en
, označují anotaci, kterou data prošla v TectoMT (Ondra na to má scénář v adresářiaugmented_corpora
, ale možná to není commitnuté). Nm
značí s normalizací (jako uvozovky, 'll apod.) a jen po morfologickou rovinu.Na
je s normalizací až po t-rovinu, ale uloženo jako analytická, tj. co token, to analytický uzel, a některé mají kolonku t-lematu a formému neproškrtnutou.Na2
je jakoNa
, ale Ondra nějak měnil ten normalizační blok. Do soutěže šlo právěNa2
.Nt
je linearizovaná t-rovina.X1
je Ondrův pokus o frázovou interlingvu, tj. sice stále lineární, ale některé věci (jako zvratná zájmena nebo v angličtině další součástky slovesa) pravidlově přemístěny blíž ke slovesu. Neúspěšné, tak neví přesně._txt
je prostý text bez tokenizace, začátek všeho, odpovídá releasnutému CzEngovému plaintextu.
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í.
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 & for y in 2008 2009 2010 2011 ; do for l in cs de en es fr ; do nohup nice make CORPUS=newstest$y-v6b LANGUAGE=$l >& make-newstest$y-$l.log & done done
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';
Dotažení do konce: i vývojová a testovací data musí být ve verzi v6b. Můžeme přeskočit alignment a trénování jazykového modelu, ale musíme pustit prepare.pl
, abychom získali upravená data!
$STATMT/joshua-scripts/clonex.pl encs-stc-allemma-tmv6b-lmv6b-lm6-test2011 encs-stc-allemma-tmv6b-lmv6b-lm6-test2011v6b cd encs-stc-allemma-tmv6b-lmv6b-lm6-test2011v6b $STATMT/joshua-scripts/resetex_scripts.pl vim scripts/setexp.pl $ac_dev = 'newstest2008-v6b'; $ac_test = 'newstest2011-v6b'; (qsub.pl) scripts/prepare.pl nohup nice $STATMT/joshua-scripts/joshua.pl extract > & joshua.log &
Pokusy s uvozovkami začaly na jaře 2011. Tehdy jsem upravil pouze trénovací data (Europarl a News-Commentary) pro všechny čtyři jazykové páry. K poslední úpravě došlo 21.4.2011. Vracím se k tomu 16.1.2012. Nejdříve pouštím všechny tehdejší pokusy znova, potom přidám i úpravu vývojových a testovacích dat.
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
, v tabulce uvedeno jako “v6”. Varianta, ve které byly uvozovky upraveny pouze v trénovacích datech ($SRC$TGT-stc-allemma-tmv6b-lmv6b-lm6-test2011
), je označena “v6b-tr”. Varianta, ve které úpravou uvozovek prošla i vývojová a testovací data ($SRC$TGT-stc-allemma-tmv6b-lmv6b-lm6-test2011v6b
), je označena “v6b”. Varianta “v7”: nová trénovací data (verze 7 News Commentary a Europarlu pro WMT 2012) už jsou defaultně s upravenými uvozovkami; vývojová a testovací data jsou v tomto případě shodná s v6b. Verze wmt12 se od v7 liší tím, že netestujeme na newstest2011, ale newstest2012.
Šest přídavných jazykových párů: čeština s němčinou, španělštinou a francouzštinou. Tyto jazykové páry nejsou součástí shared task. Organizátoři pro ně ani neposkytují trénovací data, ale ta je možné získat hledáním shodných vět v dotyčných jazycích v páru s angličtinou. Ve všech případech jsem dostal kolem 690 tisíc párů vět.
Sloupec Moses je první odpovídající pokus s Mosesem, už nad wmt12 (dev wmt10) a s jednojazyčným sjednocením news-europarl pro jazykový model.
Jazyky | v6 | v6b-tr | v6b | v7 | wmt12 | Moses | +NewsAll | +Gigaword | Czeng |
---|---|---|---|---|---|---|---|---|---|
en-cs | 0.1191 | 0.1246 | 0.1257 | 0.1299 | 0.1161 | 11.96±0.50 | |||
cs-en | 0.1692 | 0.1792 | 0.1801 | 0.1814 | 0.1661 | 17.96±0.50 | 0.2022 | 0.2225 | |
en-de | 0.1337 | 0.1274 | 0.1334 | 0.1350 | 0.1359 | 14.26±0.52 | |||
de-en | 0.1885 | 0.1859 | 0.1896 | 0.1915 | 0.1880 | 18.77±0.53 | |||
en-es | 0.2573 | 0.2531 | 0.2627 | 0.2756 | 0.2757 | 27.78±0.65 | |||
es-en | 0.2446 | 0.2375 | 0.2497 | 0.2562 | 0.2699 | 22.19±0.58 | |||
en-fr | 0.2591 | 0.2619 | 0.2526 | 0.2729 | 0.2572 | 25.99±0.63 | |||
fr-en | 0.2243 | 0.2285 | 0.2384 | 0.2448 | 0.2391 | 24.59±0.68 | |||
cs-de | 0.1304 | 13.65±0.54 | 0.1529 | ||||||
de-cs | 0.1186 | 12.12±0.52 | |||||||
cs-es | 0.1848 | 19.52±0.52 | 0.2214 | 0.2243 | |||||
es-cs | 0.1220 | 12.81±0.54 | |||||||
cs-fr | 0.1822 | 19.53±0.55 | 0.2169 | ||||||
fr-cs | 0.1175 | 12.53±0.57 |
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.