[ 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 16:51]
zeman Instalace SRILM.
user:zeman:joshua [2009/06/02 10:41]
zeman Data.
Line 1: Line 1:
 ====== Joshua ====== ====== Joshua ======
  
-Toto jsou Danovy poznámky k práci s hierarchickým překladovým dekodérem Joshuou (reimplementace Hiera (David Chiang) v Javě od lidí z JHU).+Toto jsou Danovy poznámky k práci s hierarchickým překladovým dekodérem Joshuou (reimplementace Hiera (David Chiang) v Javě od lidí z JHU (Zhifei Li)).
  
 Zdroje informací: Zdroje informací:
   * Soubory ''INSTALL'' a ''README'' přímo v balíčku s Joshuou.   * Soubory ''INSTALL'' a ''README'' přímo v balíčku s Joshuou.
 +  * http://www.clsp.jhu.edu/wiki2/JosHUa_-_JHU_Open_Source_Architecture - wiki Joshuy na JHU, jenže jak sami říkají, zastaralá
 +  * http://www.clsp.jhu.edu/wiki2/Joshua_Lab - cvičení s Joshuou na JHU, všechno už mají nainstalováno, ale u nich. Nicméně z toho vyplývá, že to pouštějí na clusteru 64bitových strojů (dokonce něco mají zkompilováno pro ně a nepoběží to jinde) se Sun Grid Engine
 +  * http://sourceforge.net/projects/joshua - download (ale viz též níže), jinak toho tu moc není
  
-===== Instalace SRILM =====+===== Instalace =====
  
-SRILM je nástroj pro jazykové modelováníse kterým pracují mnohé ekladače včetně Mosese a Joshuy. Je napsaný v céčkuZpůsob, jak ho získat a přeložit, je popsaný tutoriálu k Mosesovi. Není tam popsaný akorát tento zádrhelz neznámých důvodů SRILM očekává grafickou knihovnu TCL. Pokud tato knihovna není k dispozici, musíme mu říct, žse na ni má vykašlat. K tomu je potřeba ve složce SRILM vlézt do common, najít dílčí Makefile pro našarchitekturuotevřít ho nějakém editoru a upravit 3 řádky: zakomentovat 2 začínající na TCL a zajistitžje tam ten třetí (NO_TCL):+Prerekvizity: 
 +  * Ant: kompilátor a make Javy. Máme ho v ''/usr/bin/ant'' 
 +  * Swig: nástroj na propojení kódu napsaného v různých jazycíchv tomto ípadě Joshuy (Java) na SRILM (céčko)Máme ho v ''/usr/bin/swig'' 
 +  * [[SRILM]]nástroj Andrease Stolckeho na trénování a používání jazykových modelů, žně používaný se strojovými překladači, jako je Pharaoh, Hiero, Moses, Joshua. Máme nainstalováno nejspíš mnohokrát, podstatě si každý instaluje svou kopii. Podrobnosti o instalaci viz odkaz na začátku tohoto bodu. Pozoraby instalace fungovala na stroji (architektuře), na kterém chceme překládat (podrobnosti viz tamtéž).
  
-<code># Tcl support (standard in Linux) +Nastavit důležité proměnné (to by se hodilo přidat do ''.cshrc'' nebo nějakého podobného konfiguračního souboru).
-# TCL_INCLUDE = +
-# TCL_LIBRARY = -ltcl +
-NO_TCL = x</code>+
  
-===== Instalace ===== +<code>setenv JAVA_HOME /opt/jdk1.6 
- +setenv SRILM /home/zeman/nastroje/srilm 
-Pozor, aby to běželo na clusteru LRC, je potřeba to překládat pro 64bitovou architekturu. V nejhorším případě přímo na clusteru samém.+setenv JOSHUA_HOME /net/work/people/zeman/joshua</code>
  
 Stáhnout aktuální verzi Joshuy: Stáhnout aktuální verzi Joshuy:
  
-<code>cd /net/work/people/zeman/joshua+<code>cd $JOSHUA_HOME
 svn co https://joshua.svn.sourceforge.net/svnroot/joshua/trunk joshua</code> svn co https://joshua.svn.sourceforge.net/svnroot/joshua/trunk joshua</code>
  
-Nastavit důležité proměnné (to by se hodilo idat do ''.cshrc'' nebo nějakého podobného konfiguračního souboru) a zkontrolovat, že máme nainstalované prerekvizityAnt je překladač nebo spíš make pro JavuSwig je nástrojkterý umí propojovat kód napsaný různých jazycíchv tomto případě jde o napojení céčkového SRILM (jazykové modelování) na zbytek Joshuykterý je v Javě.+Přeložit Joshuu: 
 + 
 +<code>cd $JOSHUA_HOME 
 +ant compile</code> 
 + 
 +Kdyby bylo potřeba v budoucnosti překompilovat Joshuu načisto, již zkompilované moduly se dají odstranit pomocí 
 + 
 +<code>ant clean</code> 
 + 
 +Otestujeme, že je Joshua funkční: 
 + 
 +<code>ant test 
 +./example/decode_example_javalm.sh 
 +./example/decode_example_srilm.sh</code> 
 + 
 +Joshuu jsem překládal na zenu. Teď je ještě potřeba otestovat, že funguje i na clusteru, třeba na počítači sol1. A ejhle, na 64 bitech přestala fungovat spolupráce se SRILM. 
 + 
 +<code>21:35 sol1:/ha/work/people/zeman/joshua> ./example/decode_example_srilm.sh 
 +Jun 1, 2009 9:35:43 PM joshua.decoder.JoshuaConfiguration readConfigFile 
 +INFO: you use a LM feature function, so make sure you have a LM grammar 
 +Exception in thread "main" java.lang.UnsatisfiedLinkError: /ha/work/people/zeman/joshua/lib/libsrilm.so: /ha/work/people/zeman/joshua/lib/libsrilm.so: wrong ELF class: ELFCLASS32 (Possible cause: architecture word width mismatch) 
 +        at java.lang.ClassLoader$NativeLibrary.load(Native Method) 
 +        at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1767) 
 +        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1692) 
 +        at java.lang.Runtime.loadLibrary0(Runtime.java:840) 
 +        at java.lang.System.loadLibrary(System.java:1047) 
 +        at joshua.corpus.vocab.SrilmSymbol.<init>(SrilmSymbol.java:46) 
 +        at joshua.decoder.JoshuaDecoder.initializeSymbolTable(JoshuaDecoder.java:322) 
 +        at joshua.decoder.JoshuaDecoder.initialize(JoshuaDecoder.java:259) 
 +        at joshua.decoder.JoshuaDecoder.<init>(JoshuaDecoder.java:108) 
 +        at joshua.decoder.JoshuaDecoder.main(JoshuaDecoder.java:684)</code> 
 + 
 +Přestože SRILM, který nebyl přeložen na 64 bitech, běží jak na 32, tak na 64 bitech, s Joshuou na 64 bitech spolupracovat neumí (na 32 ano). Nepomůže ani když překlad Joshuy pustím až na 64 bitech (při spolupráci s 32bitovým SRILM). 
 + 
 +**Nicméně se zdá, že pomohlo následující:** 
 +  * Nalogoval jsem se na sol1 (aby kompilace probíhala na clusterové 64bitové architektuře). 
 +  * Upravil jsem $SRILM/sbin/machine-type tak, aby vracel i686-m64 (teď byl upravený, aby i zde dával jen i686). 
 +  * Vlezl jsem do $SRILM/common/Makefile.machine.i686-m64. TCL proměnné tam byly v pořádku, ale přidal jsem do voleb překladu (ADDITIONAL_CFLAGS i ADDITIONAL_CXXFLAGS) volbu -fPIC. Pokud by se to eložilo bez ní, knihovny SRILM by pak nešly slinkovat přes Swig s Joshuou. 
 +  * make clean, pak make World 
 +  * 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ř. Gauravovikdyž jako jeden z mála pořád pracuju s tcsh). 
 + 
 +<code>kinit 
 +ssh lrc-two 
 +cd $JOSHUA_HOME 
 +~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 ekladu. 
 + 
 +Nejdříve potřebujeme získat paralelní datato je úkol mimo Joshuu. 
 +  * Tokenizovaný a segmentovaný text ve zdrojovém jazyce (en). 
 +  * Tokenizovaný a segmentovaný text cílovém jazyce (hi). 
 +  * Párování vyrobíme Gizou++. Zajímavé ježe Joshua zřejměna rozdíl od Mosesenevyžaduje symetrizované obousměrné párování.
  
-<code>setenv JAVA_HOME /opt/jdk1.6 
-which ant # /usr/bin/ant 
-which swig # /usr/bin/swig 
-# install SRILM</code> 

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