[ 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 17:52]
zeman Potlačení divného chování dokuwiki.
user:zeman:joshua [2009/06/01 21:37]
zeman Na clusteru to nefunguje.
Line 6: Line 6:
   * Soubory ''INSTALL'' a ''README'' přímo v balíčku s Joshuou.   * Soubory ''INSTALL'' a ''README'' přímo v balíčku s Joshuou.
  
-===== 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(Ten není na webu normálně vidětale jeden odkaz na něj vede např. z Trac wiki Gaurav.Stručně zde opakuji:+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í používání jazykových modelů, běžně používaný se strojovými ekladačijako je Pharaoh, Hiero, Moses, Joshua. Máme nainstalováno nejspíš mnohokrát, podstatě si každý instaluje svou kopiiPodrobnosti 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éž).
  
-Získat balík se SRILM lze zde: http://www.speech.sri.com/projects/srilm/download.html+Nastavit důležité proměnné (to by se hodilo přidat do ''.cshrc'' nebo nějakého podobného konfiguračního souboru).
  
-Stažený balík srilm.tgz má asi 49 MB<nowiki>!</nowikiPozor, rozbaluje se do aktuální složky, takže před rozbalováním vytvořit složku srilm a vlézt do ní.+<code>setenv JAVA_HOME /opt/jdk1.6 
 +setenv SRILM /home/zeman/nastroje/srilm 
 +setenv JOSHUA_HOME /net/work/people/zeman/joshua</code>
  
-<code>mkdir srilm +Stáhnout aktuální verzi Joshuy:
-cd srilm +
-unzip.pl ../srilm.tgz</code>+
  
-nebo+<code>cd $JOSHUA_HOME 
 +svn co https://joshua.svn.sourceforge.net/svnroot/joshua/trunk joshua</code>
  
-<code>tar -xzvf ../srilm.tgz</code>+Přeložit Joshuu:
  
-Přečíst si soubor README, je tam mnoho tipů. Upravit Makefile, aby obsahoval cestu do mé složky.+<code>cd $JOSHUA_HOME 
 +ant compile</code>
  
-<code>chmod +w Makefile +Kdyby bylo potřeba v budoucnosti překompilovat Joshuu načisto, již zkompilované moduly se dají odstranit pomocí
-vi Makefile</code>+
  
-diff:+<code>ant clean</code>
  
-<code>7c7 +Otestujeme, že je Joshua funkční:
-< # SRILM = /home/speech/stolcke/project/srilm/devel +
---- +
-> SRILM = /home/zeman/nastroje/srilm</code>+
  
-Není tam popsaný akorát tento zádrhel: z neznámých důvodů SRILM očekává grafickou knihovnu TCLPokud tato knihovna není k dispozici, musíme mu říct, že se na ni má vykašlatK tomu je potřeba ve složce SRILM vlézt do common, najít dílčí Makefile pro naši architekturu (lze zjistit pomocí ''$SRILM/sbin/machine-type''), otevřít ho v nějakém editoru a upravit 3 řádky: zakomentovat 2 začínající na TCL a zajistit, že je tam ten třetí (NO_TCL):+<code>ant test 
 +./example/decode_example_javalm.sh 
 +./example/decode_example_srilm.sh</code>
  
-<code># Tcl support (standard in Linux) +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.
-# TCL_INCLUDE = +
-# TCL_LIBRARY = -ltcl +
-NO_TCL = x</code>+
  
-Nyní jsme připraveni přeložit SRILM. Pokud nejsme v kořenové složce ''srilm'', vrátíme se do ní a spustíme: +<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 
-<code>make World</code> +INFOyou use LM feature functionso make sure you have 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 classELFCLASS32 (Possible cause: architecture word width mismatch) 
-Nyní bychom měli otestovat, že SRILM je přeložen a běží správně. K tomu ho musíme přidat do své cesty (i když pro použití s Mosesem a Joshuou to zřejmě není potřeba). Musíme do cesty přidat jednak bin, jednak jeho podsložku pro naši architekturu. +        at java.lang.ClassLoader$NativeLibrary.load(Native Method
- +        at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1767) 
-<code>setenv PATH /home/zeman/nastroje/srilm/bin/i686:/home/zeman/nastroje/srilm/bin:${PATH} +        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1692) 
-cd test +        at java.lang.Runtime.loadLibrary0(Runtime.java:840) 
-make all</code> +        at java.lang.System.loadLibrary(System.java:1047
- +        at joshua.corpus.vocab.SrilmSymbol.<init>(SrilmSymbol.java:46) 
-Josh Schroeder"Prohlédneme si výstup, budeme hledat zprávy IDENTICAL a DIFFERSObčas se může stát, že není vše identické, ale přesto lze poznat, jestli nástroj funguje, nebo padá." DanÚplně všechny testy mi hlásily DIFFERS, ale zdá se mi, že problém je spíš v pojmenování souborů (mnou vygenerované výstupy mají ve jménu navíc ".unknown"; namátkou jsem zkusil jeden z nich porovnat se vzorem byl identický). +        at joshua.decoder.JoshuaDecoder.initializeSymbolTable(JoshuaDecoder.java:322) 
- +        at joshua.decoder.JoshuaDecoder.initialize(JoshuaDecoder.java:259
-==== Kompatibilita architektur ==== +        at joshua.decoder.JoshuaDecoder.<init>(JoshuaDecoder.java:108) 
- +        at joshua.decoder.JoshuaDecoder.main(JoshuaDecoder.java:684)</code>
-Předpokládal bychže když něco přeložím pro 32bitový počítač, poběží to i na 64bitovém, ale není to tak. Přeložil jsem SRILM na zenu úspěšně jsem ho otestoval. Potom jsem se pokusil tentýž test zopakovat na luciferovi (lucifer.ufal.hide). Hlásilo to následující chybu: +
- +
-<code>ngram: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by ngram)</code> +
- +
-Jako kdyby na luciferovi byla jiná verze céčka (a standardních knihoven) než na zenu. +
- +
-**zen:** +
- +
-<code>17:38 zen:/ha/home/zeman/nastroje/srilm/test> gcc -v +
-Using built-in specs. +
-Targeti486-linux-gnu +
-Configured with: ../src/configure -v --enable-languages=c,c++,fortran,objc,obj-c++,treelang --prefix=/usr --enable-shared --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --enable-nls --with-gxx-include-dir=/usr/include/c++/4.2 --program-suffix=-4.2 --enable-clocale=gnu --enable-libstdcxx-debug --enable-objc-gc --enable-mpfr --enable-targets=all --enable-checking=release --build=i486-linux-gnu --host=i486-linux-gnu --target=i486-linux-gnu +
-Thread modelposix +
-gcc version 4.2.(Ubuntu 4.2.4-1ubuntu3)</code> +
- +
-**lucifer:** +
- +
-<code>17:37 lucifer:/ha/home/zeman/nastroje/srilm/test> gcc -v +
-Using built-in specs. +
-Targetx86_64-redhat-linux +
-Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --enable-plugin --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre --enable-libgcj-multifile --enable-java-maintainer-mode --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --with-cpu=generic --host=x86_64-redhat-linux +
-Thread modelposix +
-gcc version 4.1.2 20070925 (Red Hat 4.1.2-33)</code> +
- +
-Možná je problém v tom, že na luciferovi ještě není Ubuntu, ale Red HatZkusíme to tedy přímo na clusteru, např**sol1:** +
- +
-<code>17:42 sol1:/ha/work/people/zeman/zeh/zeman/tectomt/devel/external_code_compilation> gcc -v +
-Using built-in specs. +
-Targetx86_64-linux-gnu +
-Configured with: ../src/configure -v --enable-languages=c,c++,fortran,objc,obj-c++,treelang --prefix=/usr --enable-shared --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --enable-nls --with-gxx-include-dir=/usr/include/c++/4.2 --program-suffix=-4.2 --enable-clocale=gnu --enable-libstdcxx-debug --enable-objc-gc --enable-mpfr --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu +
-Thread modelposix +
-gcc version 4.2.(Ubuntu 4.2.4-1ubuntu3)</code> +
- +
-Tentokrát test běží bez chyb! +
- +
-===== Instalace ===== +
- +
-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. +
- +
-Stáhnout aktuální verzi Joshuy: +
- +
-<code>cd /net/work/people/zeman/joshua +
-svn co https://joshua.svn.sourceforge.net/svnroot/joshua/trunk joshua</code> +
- +
-Nastavit důležité proměnné (to by se hodilo přidat do ''.cshrc'' nebo nějakého podobného konfiguračního souborua zkontrolovat, že máme nainstalované prerekvizityAnt je překladač nebo spíš make pro JavuSwig je nástroj, který umí propojovat kód napsaný v různých jazycích, v tomto případě jde o napojení céčkového SRILM (jazykové modelovánína zbytek Joshuy, který je v Javě. +
- +
-<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 ]