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/01 17:52] zeman Potlačení divného chování dokuwiki. |
user:zeman:joshua [2009/06/03 09:46] zeman Pozor na --print-rules=false. |
||
---|---|---|---|
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 '' | * Soubory '' | ||
+ | * http:// | ||
+ | * http:// | ||
+ | * http:// | ||
- | ===== Instalace | + | ===== Instalace ===== |
- | SRILM je nástroj | + | Prerekvizity: |
+ | * Ant: kompilátor a make Javy. Máme ho v ''/ | ||
+ | * Swig: nástroj | ||
+ | * [[SRILM]]: nástroj Andrease Stolckeho na trénování | ||
- | Získat balík | + | Nastavit důležité proměnné (to by se hodilo přidat do '' |
- | Stažený balík srilm.tgz má asi 49 MB<nowiki>!</nowiki> Pozor, 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 / |
+ | setenv SRILM / | ||
+ | setenv JOSHUA / | ||
- | < | + | Stáhnout aktuální verzi Joshuy: |
- | cd srilm | + | |
- | unzip.pl ../ | + | |
- | nebo | + | < |
+ | svn co https:// | ||
- | < | + | Přeložit Joshuu: |
- | Přečíst si soubor README, je tam mnoho tipů. Upravit Makefile, aby obsahoval cestu do mé složky. | + | < |
+ | ant compile</ | ||
- | < | + | Kdyby bylo potřeba v budoucnosti překompilovat Joshuu načisto, již zkompilované moduly se dají odstranit pomocí |
- | vi Makefile</ | + | |
- | diff: | + | < |
- | < | + | Otestujeme, že je Joshua funkční: |
- | < # SRILM = / | + | |
- | --- | + | |
- | > SRILM = / | + | |
- | Není tam popsaný akorát tento zádrhel: z neznámých důvodů SRILM očekává grafickou knihovnu TCL. Pokud tato knihovna není k dispozici, musíme mu říct, že 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ši architekturu (lze zjistit pomocí '' | + | < |
+ | ./ | ||
+ | ./example/ | ||
- | < | + | 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</ | + | |
- | Nyní jsme připraveni přeložit SRILM. Pokud nejsme v kořenové složce '' | + | < |
+ | 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 " | ||
+ | at java.lang.ClassLoader$NativeLibrary.load(Native Method) | ||
+ | at java.lang.ClassLoader.loadLibrary0(ClassLoader.java: | ||
+ | at java.lang.ClassLoader.loadLibrary(ClassLoader.java: | ||
+ | at java.lang.Runtime.loadLibrary0(Runtime.java: | ||
+ | at java.lang.System.loadLibrary(System.java: | ||
+ | at joshua.corpus.vocab.SrilmSymbol.< | ||
+ | at joshua.decoder.JoshuaDecoder.initializeSymbolTable(JoshuaDecoder.java: | ||
+ | at joshua.decoder.JoshuaDecoder.initialize(JoshuaDecoder.java: | ||
+ | at joshua.decoder.JoshuaDecoder.< | ||
+ | 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). |
- | Nyní bychom měli otestovat, že SRILM je přeložen a běží správně. K tomu ho musíme | + | **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/ | ||
+ | * Vlezl jsem do $SRILM/ | ||
+ | * 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 ./ | ||
- | < | + | ==== Cluster ==== |
- | cd test | + | |
- | make all</ | + | |
- | Josh Schroeder: " | + | 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). |
- | ==== Kompatibilita architektur ==== | + | < |
+ | ssh lrc-two | ||
+ | cd $JOSHUA | ||
+ | ~bojar/ | ||
+ | qstat -u ' | ||
- | 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 a úspěšně jsem ho otestoval. Potom jsem se pokusil tentýž test zopakovat na luciferovi (lucifer.ufal.hide). Hlásilo to následující chybu: | + | ===== 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. |
- | Jako kdyby na luciferovi byla jiná verze céčka | + | Nejdříve potřebujeme získat paralelní data, to je úkol mimo Joshuu. |
+ | * Tokenizovaný a segmentovaný text ve zdrojovém jazyce | ||
+ | * Tokenizovaný | ||
+ | * Párování vyrobíme [[Giza++|Gizou++]]. | ||
- | **zen:** | + | Správný soubor s párováním vypadá nějak takhle: |
- | < | + | < |
- | Using built-in specs. | + | 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 |
- | Target: i486-linux-gnu | + | 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 |
- | Configured with: ../ | + | 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 |
- | Thread model: posix | + | 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 |
- | gcc version 4.2.4 (Ubuntu 4.2.4-1ubuntu3)</ | + | -32 34-33</ |
- | **lucifer:** | + | A takhle pustíme Joshuu, aby z trénovacích dat extrahoval gramatiku: |
- | < | + | < |
- | Using built-in specs. | + | java -cp bin joshua.prefix_tree.ExtractRules \ |
- | Target: x86_64-redhat-linux | + | --source=corpus/ |
- | Configured with: ../ | + | |
- | Thread model: posix | + | |
- | gcc version 4.1.2 20070925 (Red Hat 4.1.2-33)</ | + | |
+ | | ||
+ | | ||
- | Možná je problém | + | V příkladu |
- | < | + | 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ší. |
- | Using built-in specs. | + | |
- | Target: x86_64-linux-gnu | + | |
- | Configured with: ../ | + | |
- | Thread model: posix | + | |
- | gcc version 4.2.4 (Ubuntu 4.2.4-1ubuntu3)</ | + | |
- | Tentokrát test běží bez chyb! | + | Binarizovat zdrojovou část korpusu. |
- | ===== 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: | + | |
- | + | ||
- | < | + | |
- | 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 '' | + | |
- | + | ||
- | < | + | |
- | which ant # /usr/bin/ant | + | |
- | which swig # /usr/bin/swig | + | |
- | # install SRILM</ | + |