[ 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
Last revision Both sides next revision
user:zeman:giza [2009/06/02 11:37]
zeman Z.
user:zeman:giza [2009/06/03 15:31]
zeman Moje pokusné volání.
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 =====
Line 40: Line 38:
 $MOSES/tools/scripts/lowercase.perl < train.tok.hi > train.lowercased.hi</code> $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álo. Většinou obsahují latinské písmeno "Z". Co je to za šum?+Zvláštní. Diff se tváří, že hindská data se lowercasingem opravdu změnila, a změněných řádků není málo. Většinou obsahují latinské písmeno "Z". Co je to za šum? Z 50000 vět je asi 2000 takových rozdílů. 
 + 
 +K tomu Gauravův komentář: Tam, kde se vyskytne celá posloupnost latinských znaků (opravdu asi stačí 2 a více za sebou), jde o nějakou divnou, často pro normálního Hinda nečitelnou romanizaci, kterou někdo nezkonvertoval zpátky. Tohle bude nejlepší prostě vyhodit. Pak se také občas objevuje samotné písmeno, přilepené nebo vložené do slova v dévanágarí. Viděli jsme Z, L a Q, ale mohou být i další. Je možné, že jsou to také nezkonvertované znaky. Z jsme viděli většinou na kraji slova, mohla by to být nějaká interpunkce. Q jsme viděli uprostřed slova a Gaurava nenapadá, co by to mohlo být - prostým vymazáním prý vznikne správné slovo. L jsme viděli taky uprostřed slova a u něj bylo možné vysledovat nějaký význam. Nepochopil jsem přesně jaký, ale to, co mi Gaurav namaloval, vypadalo na samohlásku "i" (krátké, tj. namalované doleva před souhlásku, která v textu předcházela tomu L). Bohužel jsem ale viděl L i samotné na konci věty (místo dandy?), taky 2 za sebou, taky jsem nově viděl Y a H. 
 + 
 +Další krok je čištění korpusu od vět delších než 40 tokenů. Zatím k tomu použiju skript, který se mi kdysi vygeneroval u Mosese v rámci nějakého časovaného pokusu: 
 + 
 +<code>$MOSES/tools/moses-scripts/scripts-20090128-1534/training/clean-corpus-n.perl train.lowercased en hi train.clean 1 40</code> 
 + 
 +Ohlásilo to, že z 50000 vět zbylo 42737. 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 +===== 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. 
 + 
 +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é kroky. Kroky jsou následující: 
 + 
 +  - prepare() - pracuje s faktory, nahrazuje slova v korpusu číselnými odkazy do slovníku, volá ''mkcls'' (make classes) 
 +  - run_giza() - pustí paralelně 2 alignovací procesy, ze zdroje na cíl a z cíle na zdroj 
 +  - word_align() - zkombinuje výsledky obou Giz, aby 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() 
 + 
 +Pokud to děláme kvůli Joshuovi, potřebujeme pustit jen prvních pár kroků. 
 + 
 +**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 ]