[ Skip to the content ]

Institute of Formal and Applied Linguistics Wiki


[ Back to the navigation ]

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
user:zeman:giza [2009/06/02 11:35]
zeman $MOSES
user:zeman:giza [2009/06/03 18:48] (current)
zeman Příprava dat přesunuta na samostatnou stránku.
Line 21: Line 21:
  
 Zdá se, že nástroje přeložené na 32bitové pracovní stanici s Ubuntu lze spustit i na clusteru. Zdá se, že nástroje přeložené na 32bitové pracovní stanici s Ubuntu lze spustit i na clusteru.
- 
  
 ===== Příprava dat ===== ===== Příprava dat =====
  
-Pro přípravu dat potřebujeme které skriptykteré jsou ibalené např. k Mosesovinebo je můžeme nahradit svými vlastními: +Viz [[Příprava paralelního korpusu|zde]]. 
-  Tokenizace trénovacích dat (zdrojový i cílový jazyk+ 
-  * "Lowercasing", tedy nahrazení velkých písmen v textu malými +===== Volání Gizy ===== 
-  * Odstranění dlouhých vět (např. delších než 40 tokenů). Není to nezbytné, pokud máme málo datmožná ani žádoucí, ale Gize trvá neúměrně dlouhokdyž má pracovat s dlouhými větamiPozor, pokud je věta dlouhá jen v jednom z jazyků, musíme ji samozřejmě odstranit nebo ponechat v obou.+ 
 +Než zavoláme Gizu, musíme mít z jakého důvodu hotový [[SRILM|jazykový model]]<nowiki>!</nowiki> 
 + 
 +Pro konkrétní pokusy s hindštinou už mám upravené volání Gizy++ nachystané ve skriptu ''~zeman/projekty/hindstina/align_tides.csh'' (volá se bez parametrů a dá se odeslat na cluster). 
 + 
 +Moses obsahuje skriptkterý hezky obaluje volání mkcls a Gizy++ a generuje frázové a eskládávací tabulky, které potřebuje dekodérVolá se takhle (pozorcesta k jazykovému modelu musí být **absolutní**): 
 + 
 +<code>nohup nice $MOSES/tools/moses-scripts/scripts-20090128-1534/training/train-factored-phrase-model.perl \ 
 +    -scripts-root-dir $MOSES/tools/moses-scripts/scripts-20090128-1534/
 +    -root-dir . \ 
 +    -corpus ./train.lowercased -f en -e hi \ 
 +    -alignment grow-diag-final-and \ 
 +    -reordering msd-bidirectional-fe \ 
 +    -lm 0:3:/net/work/people/zeman/hindstina/lm/train.lowercased.hi.lm \ 
 +    >& training.out & 
 +</code> 
 + 
 +Uvedený skript se mi zasekl krátce před vytvořením vlastního symetrického párování, protože nějak špatně odkazoval na jiné skripty uvnitř vygenerované složky (měl v cestě "training/training" tam, kde měl mít jenom "training"). Prozatím jsem to fixnul ručně vyrobil jsem soubor ''model/aligned.grow-diag-final-and''jehož obsah vypadá podobně jako vzorová data u Joshuytj. asi mám připravená data pro Joshuu. 
 + 
 +Uvedený trénovací skript Mosese má na starosti mnohem více úkonů než jen volání GizyÚkony jsou rozdělené do kroků a můžeme provést jen některé krokyKroky jsou následující:
  
-Následující příklady jsou přímo z práce s hindštinou (TIDES). Převádění velkých písmen na malá by pravděpodobně stačilo provést pro angličtinu (hindština velká a malá písmena nerozlišuje), ale takhle si alespoň budeme jistiže neuniknou případná anglická slova vložená hindštině, a taky že se oba soubory budou jmenovat analogicky. A pozor, kdybychom hindská data neměli v UTF-8, ale v té jejich "WX" romanizacinesmíme lowercasing vůbec provádět, protože velká latinská písmena se tam používají pro úplně jiné znaky než odpovídající malá!+  - prepare() - pracuje s faktorynahrazuje slova v korpusu číselnými odkazy do slovníku, volá ''mkcls'' (make classes) 
 +  - run_giza() - pustí paralelně 2 alignovací procesyze zdroje na cíl z cíle na zdroj 
 +  word_align() - zkombinuje výsledky obou Gizaby získal jedno slovní párování. Volá ''symal''. Tady se uplatní symetrizační heuristika (např. //grow-diag-final-and//
 +  - get_lexical_factored() 
 +  - extract_phrase_factored() 
 +  - score_phrase_factored() 
 +  - get_reordering_factored() 
 +  - get_generation_factored() 
 +  - create_ini()
  
-<code>setenv MOSES /net/work/people/zeman/moses +Pokud to děláme kvůli Joshuovi, potřebujeme pustit jen prvních pár kroků.
-cd /net/work/people/zeman/hindstina/data +
-cp $DATA/para/hi/icon/train.tok train.tok.hi +
-cp $DATA/para/en/icon/train.tok train.tok.en +
-$MOSES/tools/scripts/lowercase.perl < train.tok.en > train.lowercased.en +
-$MOSES/tools/scripts/lowercase.perl < train.tok.hi > train.lowercased.hi</code>+
  
 +**Pozor!** Jestliže pustíme Gizu opakovaně ve stejné složce, bude mít tendenci využít staré mezisoubory a nevytvářet je znova, aby ušetřila čas. To ale není vždy žádoucí! Jestliže jsme např. měli vedle sebe dvě verze korpusu, train.lowercased (50000 vět na každé straně) a train.clean (podmnožina 42737 vět na každé straně), nejdříve jsme pustili Gizu na train.lowercased a pak jsme si vzpomněli, že jsme vlastně chtěli train.clean, nestačí pustit Gizu znova se správnými parametry. Giza nepozná, že její mezisoubory (zejména ty ve složkách giza*) byly vytvořeny nad jinou verzí korpusu. Klidně použije mezisoubory znova, protože vypadají použitelně, takže bude s prací rychle hotová a vy dostanete znova párování pro train.lowercased.

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