====== Pokusy s předzpracováním paralelních textů pro TSD 2010 ====== ===== Předzpracování ===== Zdrojová anglická strana paralelního korpusu se nejdříve prožene značkováním a parsingem v TectoMT. Výsledek se schovává ve složce ''en.parsed'' příslušného augmented korpusu jako ''.tmt'' soubory. Nad nimi se potom provádějí transformace, specifické pro každý pokus. Mám na to v TectoMT aplikaci, akorát pro celý Czeng by trvala strašně dlouho a Ondra už parsing provedl, takže stačí ho vzít a převést. O.: "Mam, ale je tam zvlast anglictina a cestina (a zadny alignment). Nebude ale velky problem to spojit. /home/bojar/diplomka/granty/emplus/wmt10/playground/augmented_corpora/{czeng092-*,emea2}/{cs,en}NaLOT.gz Jen upozornuju, ze to nejsou tmt soubory, ale lot, line-oriented-tmt, co radek, to bundle. Prevod do tmt viz tools/format_convertors/line-oriented-tmt, ale *opatrne*. Viz jak 100 bundlu tmt soubory neunesou (resp. nikdo je pak v rozumnem case nenacte.)" Výše uvedená Ondrova cesta vede na ''/a/merkur3/TMP/bojar/wmt10/playground/augmented_corpora/czeng092-ne'' (a další části Czengu) ''/enNaLOT.gz''. Zkopíroval jsem si ten soubor ''enNaLOT.gz'' do svých augmented corpora do ''/net/work/people/zeman/wmt/augmented_corpora/czeng092-ne''. Tam jsem ho začal přelévat do ''en.parsed'' pomocí svého skriptu ''${TMT_ROOT}/applications/reordering/tsd2010/prepare.pl'', který jsem za tím účelem upravil, aby kromě tokenizovaného textu uměl konvertovat i line-oriented tmt. Ve složce ''czeng092-ne/en.parsed'' se také vytváří ''filelist.txt'' se seznamem vzniklých tmt souborů (bude ho potřebovat náš transformační ''make reorder''). Je jich 1262. Až vyzkouším, že s tím lze provádět transformace a překlad, měl bych to udělat i pro ostatní části Czengu. Ovšem pozor, v seznamu souborů potřebujeme úplné cesty, proto musíme také cestu k pracovní složce uvést úplnou! gunzip -c enNaLOT.gz | $TMT_ROOT/applications/reordering/tsd2010/prepare.pl -l -w /ha/work/people/zeman/wmt/augmented_corpora/czeng092-ne/en.parsed > /ha/work/people/zeman/wmt/augmented_corpora/czeng092-ne/en.parsed/filelist.txt ===== 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. | **Pokus** | **Dev WMT08** | **Test WMT09** | **Poznámka** | **Datum** | | encs-josh13 | 0.0878 | 0.0869 | | 9.3.2010 | | encs-articles | 0.0907 | 0.0887 | Z anglické strany vypuštěny určité i neurčité členy. | 16.3.2010 | | encs-subject | 0.0903 | 0.0864 | Před kořenové slovo anglického podmětu vepsán token ''_SUBJ_''. | 16.3.2010 | | encs-subject1 | 0.0872 | 0.0883 | Ke kořenovému slovu anglického podmětu připojeno (do jednoho tokenu) ''/Sb''. | 17.3.2010 | | encs-attribute | 0.0785 | 0.0786 | K anglickým přívlastkům připojeno (do jednoho tokenu) ''/Atr''. Cílem bylo odlišit např. "Prague" jako přídavné jméno "pražský" od podstatného jména "Praha". Bohužel se ukazuje, že parser považuje za přívlastek všechno možné, někdy dokonce včetně hlavního slovesa v minulém čase ("agreed"). Proto to asi nefunguje. Možná by bylo lepší zkusit se spolehnout na tagger a jeho názor na to, co je přídavné jméno. | 17.3.2010 | | encs-adjective | 0.0889 | 0.0874 | Místo přívlastků (viz výše) se připojuje ''/JJ'' u přídavných jmen. Zjistil jsem ale, že jako přídavná jména jsou značkována většinou jen slova, která opravdu jako přídavná jména vypadají, nikoli atributivně použitá podstatná jména (jako "Prague"). Takže to nijak signifikantně nepomohlo. Mohli bychom zkusit ještě třetí věc, značkovat atributy, ale pouze ty, které leží před podstatným jménem a samy nemají žádné děti. | 17.3.2010 | Protože se ukázalo, že s Joshuou 1.3 zatím neumím docílit stejných výsledků jako s 1.1, pouštím ještě tytéž pokusy s Joshuou 1.1, trénovací data jsou vyčištěná od vět o 100 a více slovech. | **Pokus** | **Dev WMT08** | **Test WMT09** | **Poznámka** | **Datum** | | encs-clean | 0.0913 | 0.0897 | | 21.3.2010 | | encs-articles | 0.0921 | 0.0898 | Z anglické strany vypuštěny určité i neurčité členy. | 23.3.2010 | | encs-subject1 | 0.0891 | 0.0880 | Ke kořenovému slovu anglického podmětu připojeno (do jednoho tokenu) ''/Sb''. | | | encs-adjective | 0.0913 | 0.0893 | K anglickým přídavným jménům se připojuje ''/JJ''. Mohli bychom zkusit ještě třetí věc, značkovat atributy, ale pouze ty, které leží před podstatným jménem a samy nemají žádné děti. | | 4.5.2010 pouštím další pokus ''verbparticle'', kde se slovesná částice přisunuje ke slovesu, např. "wake him up" -> "wake up him". Kvůli odlišné tokenizaci ale parser dělá chyby, když později ve větě vidí slovo, které by mohlo fungovat jako slovesná částice, bezhlavě ho připojí ke slovesu, i když by mohl poznat, že je to předložka nebo částice od něčeho jiného (třeba je tam rozdělený výraz "spin - off", on vezme to "off" a zavěsí ho na sloveso, které se nachází nalevo od spin-offu). Zachování odlišné tokenizace skrz parsing je skoro námět na článek :-). Zatím běží strojový překlad s přisunutými částicemi. Mohl bych ještě zkusit úplně slepit částici se slovesem (např. pomocí podtržítka). 30.5.2010: verbparticle, Joshua 1.1: devbleu = 0.0880, testbleu = 0.0864. Nové pokusy před odesláním konečné verze článku. Joshua verze 1.1, ale čištění od dlouhých vět už probíhá jako u verze 1.3. | **Pokus** | **Dev WMT08** | **Test WMT09** | **Poznámka** | **Datum** | | encs | 0.0916 | 0.0891 | | 31.5.2010 | | encs-articles | 0.0921 | 0.0898 | Z anglické strany vypuštěny určité i neurčité členy. Statisticky nevýznamné zlepšení. | 31.5.2010 | | encs-subject | 0.0891 | 0.0864 | Ke kořenovému slovu anglického podmětu připojeno (do jednoho tokenu) ''/Sb''. U starších experimentů jsem tohle označoval jako ''subject1'', ale tehdejší ''subject'' bez indexu už je stejně zapomenut. | 31.5.2010 | | encs-articles-subject | 0.0859 | 0.0851 | Kombinace transformací ''articles'' a ''subject''. | 31.5.2010 | | encs-verbparticle | 0.0880 | 0.0864 | Viz výše. | 30.5.2010 | | enhi | 0.1116 | 0.1230 | | 31.5.2010 | | enhi-articles | 0.1141 | 0.1230 | Zatím se členy odstraňují úplně stejně jako u ''encs''. Ve skutečnosti bychom ale pro hindštinu měli asi odstraňovat pouze určité členy. | 31.5.2010 | | enhi-reord2008 | 0.1074 | 0.1172 | Stará pravidla pro úpravu slovosledu z roku 2008: sloveso na konec věty a z předložek záložky. Možná se ale nepodařilo pravidla přenést úplně správně, bude to potřeba ještě prozkoumat po částech. | 31.5.2010 | | enhi-postpositions | 0.1112 | 0.1227 | Z předložek se dělají záložky. | 2.6.2010 | 7.9.2010 ověřuju, že jsem schopen zopakovat výše uvedené květnové výsledky. Opakuju pouze překladovou část, ne předzpracování. Ověřeno: encs. U en-articles byl dost zmatek a žádná předcházející verze experimentu nevypadala důvěryhodně. Nová verze naklonovaná z nového ověřeného encs mi dala dev = 0.0923, test = 0.0893. Nová verze en-subject-regrese mi dala dev = 0.0891, test = 0.0864. Nová verze encs-verbparticle-regrese mi dala dev = 0.0878, test = 0.0850. | encs-complextense | 0.0879 | 0.0863 | Mění "is doing" na "does" (resp. "dos", protože nepoužíváme úplnou morfologickou syntézu). | 8.9.2010 | | encs-article | 0.0888 | 0.0836 | Upravené odstraňování členů pomocí funkcí jádra TectoMT. Výsledek by teoreticky měl být identický s ''articles'', ale zjevně není. | 8.9.2010 | | enhi | 0.1116 | 0.1230 | Základní anglicko-hindský pokus. Aspoň zde se potvrdily stejné výsledky jako v květnu. | 8.9.2010 | | enhi-articles | 0.1141 | 0.1230 | Původní odstraňování členů, ověřen stejný výsledek. | 8.9.2010 | | enhi-article | 0.1168 | 0.1237 | Upravené odstraňování členů pomocí funkcí jádra TectoMT. Výsledek by teoreticky měl být identický s ''articles'', ale zjevně není. | 8.9.2010 | | enhi-the | 0.1158 | 0.1236 | Odstraňuje se pouze určitý člen, neurčitý se nechává na místě, protože hindština ho občas používá také. | 8.9.2010 | | enhi-sov | 0.1074 | 0.1163 | Slovesa se přesouvají na konec klauze. | 8.9.2010 | ===== Náměty ===== * Zrušit anglické složené časy. Např. "is also planning" převést na "plans also"; "am/are planning" převést na "plan". Aby tam nezůstala osamělá pomocná slovesa. Určitě se to týká i jiných časů než přítomného průběhového. Někde mám seznam všech složených slovesných tvarů, které jsem v datech potkal. * Je-li podmětem osobní zájmeno, zařídit, aby se vyskytovalo těsně vedle slovesa, nebo možná aby s ním bylo dokonce slepené. Ve frázích jako "he has never achieved" hrozí, že "he" nebude mít žádný vliv na rod českého příčestí, a navíc tam může zůstat viset české "on", které bychom do české věty normálně nedali. * Zařídit, aby parser dostal text tokenizovaný takovým způsobem, na jaký je zvyklý, a po parsingu aby se text přetokenizoval tak, jak je to vhodné pro překlad. * Vymyslet opravný blok za parserem, který pravidlově vychytá některé jeho chyby. Např. "off" ve spojení "spin - off" nemůže viset na nějakém slovesu o kilometr dříve.