[ Skip to the content ]

Institute of Formal and Applied Linguistics Wiki


[ Back to the navigation ]

This is an old revision of the document!


Table of Contents

Giza++

Giza++ je nástroj pro slovní párování (alignment) paralelních textů. Autorem je Franz Och a další. Tahle stránka uchovává poznámky o instalaci a pouštění Gizy na ÚFALu. Je primárně založena na tutoriálu pro Moses z MT Marathonu 2009. Spolu s Gizou potřebujeme ještě program mkcls.

Zdroje:

wget http://giza-pp.googlecode.com/files/giza-pp-v1.0.2.tar.gz
tar -xzvf giza-pp-v1.0.2.tar.gz 
cd giza-pp
make

Po přeložení pravděpodobně nepotřebujeme nic víc než tři spustitelné binární soubory, které si můžeme zkopírovat na nějaké místo v cestě, kde máme nástroje.

setenv NASTROJE /home/zeman/nastroje/preklad
cp GIZA++-v2/GIZA++ $NASTROJE
cp GIZA++-v2/snt2cooc.out $NASTROJE
cp mkcls-v2/mkcls $NASTROJE

Zdá se, že nástroje přeložené na 32bitové pracovní stanici s Ubuntu lze spustit i na clusteru.

Příprava dat

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:

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 analogicky. A 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á!

setenv MOSES /net/work/people/zeman/moses
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

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:

$MOSES/tools/moses-scripts/scripts-20090128-1534/training/clean-corpus-n.perl train.lowercased en hi train.clean 1 40

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ý jazykový model!

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:

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 work \
    -corpus ./train.lowercased -f en -e hi \
    -alignment grow-diag-final-and \
    -reordering msd-bidirectional-fe \
    -lm 0:3:../lm/train.lowercased.hi.lm \
    >& training.out &

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