[ 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 12:04]
zeman Latinská písmena v hindštině.
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]].
  
 +===== Volání Gizy =====
  
-===== Příprava dat =====+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>
  
-Pro ípravu dat potřebujeme které skripty, které jsou přibalené např. k Mosesovi, nebo je můžeme nahradit svými vlastními: +Uvedený skript se mi zasekl krátce ed vytvořením vlastního symetrického párování, protože jak špatně odkazoval na jiné skripty uvnitř vygenerované složky (měl v cestě "training/trainingtamkde 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 Joshuytjasi mám připravená data pro Joshuu.
-  * 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 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.+
  
-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á v hindštině, a taky že se oba soubory budou jmenovat analogickyA pozor, kdybychom hindská data neměli v UTF-8, ale v té jejich "WX" romanizaci, nesmí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á!+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í:
  
-<code>setenv MOSES /net/work/people/zeman/moses +  - prepare() - pracuje s faktory, nahrazuje slova v korpusu číselnými odkazy do slovníku, volá ''mkcls'' (make classes) 
-cd /net/work/people/zeman/hindstina/data +  - run_giza() - pustí paralelně 2 alignovací procesy, ze zdroje na cíl a z cíle na zdroj 
-cp $DATA/para/hi/icon/train.tok train.tok.hi +  - 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//) 
-cp $DATA/para/en/icon/train.tok train.tok.en +  - get_lexical_factored() 
-$MOSES/tools/scripts/lowercase.perl < train.tok.en > train.lowercased.en +  - extract_phrase_factored() 
-$MOSES/tools/scripts/lowercase.perl < train.tok.hi > train.lowercased.hi</code>+  - score_phrase_factored() 
 +  - get_reordering_factored() 
 +  - get_generation_factored() 
 +  - create_ini()
  
-Zvláštní. Diff se tváří, že hindská data se lowercasingem opravdu změnilaa 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ů.+Pokud to děláme kvůli Joshuovipotřebujeme pustit jen prvních pár kroků.
  
-K tomu Gauravův komentář: Tamkde se vyskytne celá posloupnost latinských znaků (opravdu asi stačí 2 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é znakyZ jsme viděli většinou na kraji slova, mohla by to být nějaká interpunkceQ jsme viděli uprostřed slova a Gaurava nenapadáco by to mohlo být - prostým vymazáním prý vznikne správné slovojsme viděli taky uprostřed slova a u něj bylo možné vysledovat nějaký význam. Nepochopil jsem přesně jakýale toco 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 H.+**Pozor!** Jestliže pustíme Gizu opakovaně ve stejné složcebude mít tendenci využít staré mezisoubory nevytvářet je znovaaby 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.cleannestačí 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á vy dostanete znova párování pro train.lowercased.

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