This is an old revision of the document!
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).
Zdroje informací:
- Soubory
INSTALL
aREADME
přímo v balíčku s Joshuou.
Instalace
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ích, v tomto pří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ů, běžně používaný se strojovými překladači, jako je Pharaoh, Hiero, Moses, Joshua. Máme nainstalováno nejspíš mnohokrát, v podstatě si každý instaluje svou kopii. Podrobnosti o instalaci viz odkaz na začátku tohoto bodu. Pozor, aby instalace fungovala na stroji (architektuře), na kterém chceme překládat (podrobnosti viz tamtéž).
Nastavit důležité proměnné (to by se hodilo přidat do .cshrc
nebo nějakého podobného konfiguračního souboru).
setenv JAVA_HOME /opt/jdk1.6 setenv SRILM /home/zeman/nastroje/srilm setenv JOSHUA_HOME /net/work/people/zeman/joshua
Stáhnout aktuální verzi Joshuy:
cd $JOSHUA_HOME svn co https://joshua.svn.sourceforge.net/svnroot/joshua/trunk joshua
Přeložit Joshuu:
cd $JOSHUA_HOME ant compile
Kdyby bylo potřeba v budoucnosti překompilovat Joshuu načisto, již zkompilované moduly se dají odstranit pomocí
ant clean
Otestujeme, že je Joshua funkční:
ant test ./example/decode_example_javalm.sh ./example/decode_example_srilm.sh
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.
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)
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).