wiki:private/NlpInPracticeCourse/MachineTranslation

Version 8 (modified by Vít Baisa, 9 years ago) (diff)

--

Machine translation

IA161 Advanced NLP Course, Course Guarantee: Aleš Horák

Prepared by: Vít Baisa

State of the Art

The Statistical Machine Translation consists of two main parts: a language model for a target language which is responsible for fluency and good-looking output sentences and a translation model which translates source words and phrases into target language. Both models are probability distributions and can be built using a monolingual corpus for language model and a parallel corpus for translation model.

References

Approx 3 current papers (preferably from best NLP conferences/journals, eg. ACL Anthology) that will be used as a source for the one-hour lecture:

  1. Koehn, Philipp, et al. "Moses: Open source toolkit for statistical machine translation." Proceedings of the 45th annual meeting of the ACL on interactive poster and demonstration sessions. Association for Computational Linguistics, 2007.
  2. Koehn, Philipp, Franz Josef Och, and Daniel Marcu. "Statistical phrase-based translation." Proceedings of the 2003 Conference of the North American Chapter of the Association for Computational Linguistics on Human Language Technology-Volume 1. Association for Computational Linguistics, 2003.
  3. Denkowski, Michael, and Alon Lavie. "Meteor 1.3: Automatic metric for reliable optimization and evaluation of machine translation systems." Proceedings of the Sixth Workshop on Statistical Machine Translation. Association for Computational Linguistics, 2011.

Praktická část: generování překladového slovníku z paralelních dat

Základní instrukce

  • stáhněte si archív se skripty a trénovacími daty (příloha)
  • rozbalte ho do domovského adresáře příkazem tar xzf ia161_mt.tar.gz
  • vytvoří se podadresář it161_mt

Soubory v archívu

czech.words100 tisíc vět z české části DGT korpusu
czech.lemmas100 tisíc vět (lemmat) z české části DGT korpusu
english.words100 tisic vet z anglickeho DGT korpusu
english.lemmas100 tisic vet (lemmat) z anglickeho DGT korpusu
eval.pyskript na vyhodnoceni pokryti a presnosti vygenerovaneho slovniku vuci malemu anglicko-ceskemu slovniku
gnudfl.txtmaly anglicko-cesky slovnik, filtrovany na jednoslovne vyrazy a na slova obsazena v trenovacich datech
make_dict.pyskript pro vygenerovani slovniku na zaklade kookurenci a frenvencnich seznamu
Makefilesoubor s pravidly pro sestaveni slovniku na zaklade trenovacich dat
par2items.pysoubor pro vygenerovani paru slov (lemmat) z paralelnich dat

Popis make

make dict

  • samotný příkaz použije 1000 řádků trénovacích dat a vygeneruje slovnik na zakladne slovnich tvaru (soubory czech.words a english.words)
  • je možné zadat alternativní soubory s lemmaty pomocí parametru L1DATA a L2DATA
  • je také možné změnit počet řádků, které se použijí pro vygenerovaní slovníku
  • obecně: make dict [L1DATA=<soubor>] [L2DATA=<soubor>] [LIMIT=<pocet radku>]
  • konkrétně: make dict L1DATA=english.lemmas L2DATA=czech.lemmas LIMIT=10000

make eval

Po vygenerování slovníku můžete změřit jeho přesnost a pokrytí pomocí skriptu eval.py. Stačí zavolat make eval. Pokud jste pro vytvoření slovníku používali parametry L1DATA a L2DATA, musíte je pro správné vyhodnocení zadat i při příkazu make eval

Například: make dict L1DATA=english.lemmas L2DATA=czech.lemmas

make clean

Po každé změně vstupních souborů a parametrů, při změně skriptů, vyčistěte dočasné soubory a starý slovník příkazem make clean.

Detailní pohled na skripty a generovaná data

  • Cvičně si spusťte implicitní make dict a podívejte se na vytvořené soubory:
    • czech.words.freq
    • english.words.freq
    • english.words-czech.words.cofreq
    • english.words-czech.words.dict (výsledný slovník)
  • Podívejte se, jak jsou výsledné soubory veliké (kolik obsahují řádků) a jaké data obsahují.
  • Podívejte se na skript make_dict.py, který generuje slovník, na klíčových místech obsahuje řetězec TODO, v těchto místech můžete skript upravovat a měnit podmínky tak, aby se výsledné f-score vygenerovaného slovníku co nejíce zvýšilo.

Zadání

Změňte klíčová místa ve skriptech par2items.py, make_dict.py tak, abyste dosáhli co nejvyššího f-score (viz make eval). Do odevzdávárny nahrajte všechny skripty, které změníte (Makefile, *.py) v jednom archívu. Ten vytvoříte příkazem tar czf ia161_mt_<uco_nebo_login>.tar.gz Makefile *.py

Attachments (2)