[ 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
Next revision Both sides next revision
user:zeman:joshua [2009/06/01 22:37]
zeman Problém s kompatibilitou 64bitových strojů možná vyřešen.
user:zeman:joshua [2009/06/03 19:03]
zeman
Line 20: Line 20:
 <code>setenv JAVA_HOME /opt/jdk1.6 <code>setenv JAVA_HOME /opt/jdk1.6
 setenv SRILM /home/zeman/nastroje/srilm setenv SRILM /home/zeman/nastroje/srilm
-setenv JOSHUA_HOME /net/work/people/zeman/joshua</code>+setenv JOSHUA /net/work/people/zeman/joshua</code>
  
 Stáhnout aktuální verzi Joshuy: Stáhnout aktuální verzi Joshuy:
  
-<code>cd $JOSHUA_HOME+<code>cd $JOSHUA
 svn co https://joshua.svn.sourceforge.net/svnroot/joshua/trunk joshua</code> svn co https://joshua.svn.sourceforge.net/svnroot/joshua/trunk joshua</code>
  
 Přeložit Joshuu: Přeložit Joshuu:
  
-<code>cd $JOSHUA_HOME+<code>cd $JOSHUA
 ant compile</code> ant compile</code>
  
Line 68: Line 68:
   * Vrátil jsem se do $JOSHUA_HOME a pustil ant clean, pak ant compile, nakonec ant test a hlavně ten ./example/decode_example_srilm.sh.   * Vrátil jsem se do $JOSHUA_HOME a pustil ant clean, pak ant compile, nakonec ant test a hlavně ten ./example/decode_example_srilm.sh.
  
 +==== Cluster ====
 +
 +Ke spuštění Joshuy na clusteru se hodí např. Ondrova obálka (nebo i ta moje vlastní, ale tu bych neměl nutit např. Gauravovi, když jako jeden z mála pořád pracuju s tcsh).
 +
 +<code>kinit
 +ssh lrc-two
 +cd $JOSHUA
 +~bojar/tools/shell/qsubmit ./example/decode_example_srilm.sh
 +qstat -u '*'</code>
 +
 +===== Použití =====
 +
 +Joshua je nainstalován a funguje. Nyní se musíme naučit, jak ho trénovat a jak ho použít k překladu.
 +
 +Nejdříve potřebujeme získat paralelní data, to je úkol mimo Joshuu.
 +  * Tokenizovaný a segmentovaný text ve zdrojovém jazyce (en).
 +  * Tokenizovaný a segmentovaný text v cílovém jazyce (hi).
 +  * Párování vyrobíme [[Giza++|Gizou++]].
 +
 +Správný soubor s párováním vypadá nějak takhle:
 +
 +<code>2-0 2-1 2-2 2-3 1-4 2-5 14-8 13-10 8-11 9-11 8-12 8-13 8-14 8-15 5-16 7-16 6-17 4-18 15-19
 +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</code>
 +
 +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.
 +
 +<code>cd /net/work/people/zeman/hindstina
 +setenv SRC corpus/train.clean.en
 +setenv TGT corpus/train.clean.hi
 +setenv ALI model/aligned.grow-diag-final-and
 +setenv TST corpus/train.clean.en.1
 +setenv GRM en-hi.grammar
 +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
 +sort -u $GRM.unsorted > $GRM
 +gzip $GRM</code>
 +
 +V příkladu v INSTALL.txt měli navíc ještě volbu ''--print-rules=false'', nevím proč. Výsledná gramatika totiž byla prázdná, a když jsem tuto volbu odstranil, gramatika se vygenerovala.
 +
 +Pozor, je poměrně snadné vyčerpat paměť. Tomu se dá čelit jednak tím, že se přesuneme na stroj, který má více paměti, jednak že zvolíme postup, který je složitější, ale k paměti šetrnější.
 +
 +Binarizovat zdrojovou část korpusu.
 +
 +<code>java -cp bin joshua.corpus.suffix_array.SuffixArray $WORK/corpus/train.clean.en $WORK/model/vocab.en.bin $WORK/model/corpus.en.bin $WORK/model/suffixes.en.bin</code>
 +
 +<code bash>java -Xmx2000m -Xms2000m -cp $JOSHUA/bin --binary-source=true --binary-target=true --source=model/corpus.en.bin --target=model/corpus.hi.bin --source-vocab=model/vocab.en.bin --target-vocab=model/vocab.hi.bin --source-suffixes=model/suffixes.en.bin --target-suffixes=model/suffixes.hi.bin --alignmentsType=MemoryMappedAlignmentGrids --alignments=model/alignments.bin --test=corpus/test.lowercased.en --output=model/en-hi.grammar.unsorted --maxPhraseLength=5</code>

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