[ 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:37]
zeman Z.
user:zeman:giza [2009/06/03 18:48] (current)
zeman Příprava dat přesunuta na samostatnou stránku.
Line 22: Line 22:
 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 =====
  
 +Viz [[Příprava paralelního korpusu|zde]].
  
-===== Příprava dat =====+===== Volání Gizy ===== 
 + 
 +Než zavoláme Gizu, musíme mít z ně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 skript, který hezky obaluje volání mkcls a Gizy++ a generuje frázové a přeskládávací tabulky, které potřebuje dekodér. Volá se takhle (pozor, cesta 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ě a vyrobil jsem soubor ''model/aligned.grow-diag-final-and'', jehož obsah vypadá podobně jako vzorová data u Joshuy, tj. asi mám připravená data pro Joshuu.
  
-Pro přípravu dat potřebujeme některé skripty, které jsou přibalené např. k Mosesovi, nebo je můžeme nahradit svými vlastními: +Uvedený trénovací skript Mosese má na starosti mnohem více úkonů než jen volání Gizy. Úkony jsou rozdělené do kroků a žeme provést jen některé krokyKroky jsou následující:
-  * Tokenizace trénovacích dat (zdrojový i cílový jazyk) +
-  * "Lowercasing", tedy nahrazení velkých písmen v textu malými +
-  * Odstranění dlouhých vět (např. delších než 40 tokenů). Není to nezbytné, pokud máme málo dat, možná ani žádoucí, ale Gize trvá neúměrně dlouho, když má pracovat s dlouhými větami. Pozor, pokud je věta dlouhá jen v jednom z jazyků, musíme ji samozřejmě odstranit nebo ponechat v obou.+
  
-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>+
  
-ZvláštníDiff se tváří, že hindská data se lowercasingem opravdu změnila, a změněných řádků není máloVětšinou obsahují latinské písmeno "Z"Co je to za šum?+**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 časTo ale není vždy žádoucí! Jestliže jsme např. měli vedle sebe dvě verze korpusutrain.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 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í korpusuKlidně 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 ]