Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
user:zeman:joshua [2009/06/04 10:06] zeman První výsledek. |
user:zeman:joshua [2009/07/13 14:47] zeman Odkaz na dokumentaci Chrise Callisona-Burche. |
||
---|---|---|---|
Line 9: | Line 9: | ||
* http:// | * http:// | ||
* http:// | * http:// | ||
+ | * http:// | ||
===== Instalace ===== | ===== Instalace ===== | ||
Line 27: | Line 28: | ||
< | < | ||
svn co https:// | svn co https:// | ||
+ | |||
+ | Poznámka: Na začátku června 2009 jsem měl problémy se zdrojáky získanými přímo z SVN (třída SuffixArray neobsahovala metodu main()), ale možná to byl jen dočasný výpadek dokumentace, | ||
+ | |||
+ | http:// | ||
+ | |||
+ | přešel na link Download a stáhnul si aktuální release verzi. | ||
Přeložit Joshuu: | Přeložit Joshuu: | ||
Line 79: | Line 86: | ||
qstat -u ' | qstat -u ' | ||
- | ===== Použití | + | |
+ | ===== Extrakce gramatiky | ||
Joshua je nainstalován a funguje. Nyní se musíme naučit, jak ho trénovat a jak ho použít k překladu. | Joshua je nainstalován a funguje. Nyní se musíme naučit, jak ho trénovat a jak ho použít k překladu. | ||
Line 86: | Line 94: | ||
* Tokenizovaný a segmentovaný text ve zdrojovém jazyce (en). | * Tokenizovaný a segmentovaný text ve zdrojovém jazyce (en). | ||
* Tokenizovaný a segmentovaný text v cílovém jazyce (hi). | * Tokenizovaný a segmentovaný text v cílovém jazyce (hi). | ||
- | * Párování vyrobíme [[Giza++|Gizou++]]. | + | * Párování vyrobíme [[Giza++|Gizou++]]. Správný soubor s párováním |
- | + | ||
- | Správný soubor s párováním | + | |
- | + | ||
- | < | + | |
- | 0-3 7-4 8-5 9-6 10-7 11-8 12-9 13-10 14-11 15-12 16-13 4-15 2-17 3-18 20-19 18-21 21-22 22-23 22-24 22-25 19-26 23-27 | + | |
- | 0-0 1-1 2-1 3-2 4-4 5-5 7-9 8-16 9-17 10-17 12-17 13-17 14-17 15-17 17-17 18-17 11-18 18-19 18-20 19-21 | + | |
- | 1-0 4-2 6-4 7-5 7-6 5-7 7-7 6-8 8-9 7-10 8-11 8-12 8-13 11-14 12-17 | + | |
- | 0-0 1-1 2-1 3-1 7-2 8-3 9-4 6-5 11-6 11-7 12-10 13-11 14-12 15-13 16-14 22-15 23-15 21-16 26-17 17-20 28-22 29-23 27-26 25-28 30-29 31-30 32-30 33-30 33-31 33 | + | |
- | -32 34-33</ | + | |
A takhle pustíme Joshuu, aby z trénovacích dat extrahoval gramatiku. Joshua z nějakého důvodu vyžaduje také testovací soubor se zdrojovým jazykem. Soudě podle příkladu, který dodali, stačí zkopírovat první větu ze zdrojových trénovacích dat. Gramatiku je pak ještě třeba seřadit, vyházet duplicitní pravidla a zagzipovat. | A takhle pustíme Joshuu, aby z trénovacích dat extrahoval gramatiku. Joshua z nějakého důvodu vyžaduje také testovací soubor se zdrojovým jazykem. Soudě podle příkladu, který dodali, stačí zkopírovat první větu ze zdrojových trénovacích dat. Gramatiku je pak ještě třeba seřadit, vyházet duplicitní pravidla a zagzipovat. | ||
Line 106: | Line 105: | ||
setenv GRM en-hi.grammar | setenv GRM en-hi.grammar | ||
head -1 $SRC > $TST | head -1 $SRC > $TST | ||
- | java -cp $JOSHUA/bin joshua.prefix_tree.ExtractRules --source=$SRC --target=$TGT --alignments=$ALI --test=$TST --output=$GRM.unsorted --maxPhraseLength=5 | + | java -cp $JOSHUA/bin joshua.prefix_tree.ExtractRules |
+ | | ||
+ | | ||
sort -u $GRM.unsorted > $GRM | sort -u $GRM.unsorted > $GRM | ||
gzip $GRM</ | gzip $GRM</ | ||
Line 116: | Line 117: | ||
Binarizovat zdrojovou část korpusu. | Binarizovat zdrojovou část korpusu. | ||
- | < | + | < |
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | java -cp $JOSHUA/bin joshua.corpus.suffix_array.SuffixArray \ | ||
+ | $WORK/ | ||
+ | $WORK/ | ||
+ | $WORK/ | ||
+ | $WORK/ | ||
+ | java -cp $JOSHUA/bin joshua.corpus.alignment.AlignmentGrids \ | ||
+ | $WORK/ | ||
+ | $WORK/ | ||
Takto se extrahuje gramatika pro konkrétní testovací data s pomocí binarizovaného korpusu: | Takto se extrahuje gramatika pro konkrétní testovací data s pomocí binarizovaného korpusu: | ||
- | < | + | < |
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
===== Decoding ===== | ===== Decoding ===== | ||
Line 210: | Line 230: | ||
< | < | ||
- | |||
- | |||
===== Vyhodnocení úspěšnosti ===== | ===== Vyhodnocení úspěšnosti ===== | ||
Line 228: | Line 246: | ||
Bez MERTu mi zatím vyšlo BLEU = 0.0807. | Bez MERTu mi zatím vyšlo BLEU = 0.0807. | ||
+ | |||
+ | ===== MERT ===== | ||
+ | |||
+ | Celý proces by nebyl úplný bez MERTu, což je zkratka za Minimum Error Rate Training. V principu jde o to, že se dekodér opakovaně pouští na vývojová data a na základě změřené úspěšnosti se postupně optimalizují váhy překladového modelu, jazykového modelu a případně dalších složek. V Joshuovi je pro tento účel integrován javovský nástroj Z-MERT. | ||
+ | |||
+ | Většina parametrů se Z-MERTu předává prostřednictvím konfiguračního souboru. Přehled volání Z-MERTu se dozvíme takto: | ||
+ | |||
+ | < | ||
+ | |||
+ | Příklad použití Z-MERTu najdeme ve složce '' | ||
+ | |||
+ | Dále potřebujeme soubor (vlastně skript: měl by být spustitelný), | ||
+ | |||
+ | < | ||
+ | cp ../ | ||
+ | cp ../ | ||
+ | cp $JOSHUA/ | ||
+ | vi decoder-config</ | ||
+ | |||
+ | Změněné parametry: | ||
+ | |||
+ | < | ||
+ | tm_file=/ | ||
+ | glue_file=/ | ||
+ | order=3</ | ||
+ | |||
+ | < | ||
+ | chmod 755 decoder_command | ||
+ | vi decoder_command</ | ||
+ | |||
+ | Ve volání dekodéru musíme změnit cesty ke konfiguračnímu, | ||
+ | |||
+ | < | ||
+ | $HINDI/ | ||
+ | $HINDI/ | ||
+ | $HINDI/ | ||
+ | |||
+ | V konfiguraci Z-MERTu zohledníme právě upravené volání a konfiguraci dekodéru. | ||
+ | |||
+ | < | ||
+ | cp $JOSHUA/ | ||
+ | vi zmert-config.txt</ | ||
+ | |||
+ | Změněné parametry: | ||
+ | |||
+ | < | ||
+ | -s src.txt # source sentences file name | ||
+ | -r ref.txt # target sentences file name | ||
+ | -rps 1 # references per sentence | ||
+ | -maxIt 5 # maximum MERT iterations | ||
+ | -cmd ./ | ||
+ | -decOut nbest.txt # file produced by decoder | ||
+ | -dcfg decoder-config.txt # decoder config file</ | ||
+ | |||
+ | No a teď už můžeme spustit Z-MERT (případně to celé dát do uvozovek a před to '' | ||
+ | |||
+ | < | ||
+ | $HINDI/ | ||
+ | > $HINDI/ |