[ 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

Next revision
Previous revision
Next revision Both sides next revision
user:zeman:malt-parser [2007/10/26 20:57]
zeman vytvořeno
user:zeman:malt-parser [2010/03/30 15:15]
zeman Doběhl švédský test 35000.
Line 1: Line 1:
 ====== Malt parser ====== ====== Malt parser ======
  
-Toto je rychlý úvod do práce s Malt parserem.+http://maltparser.org/
  
-Jeden z formátůkteré parser umíje sloupcový formát CoNLLKromě trénovacích dat potřebuje parser znát také seznam slovních druhů (POS), hrubých slovních druhů (CPOS) a značek pro druhy závislostí (české AFUNy). Pokud nemáme k dispozici vyčerpávající seznamy pro naše data, můžeme alespoň z dat vytáhnout to, co se nich opravdu objevilo:+Rychlý úvod do práce s Malt parseremkterý tu dřív byluž neplatí, protože se týkal starého Malt parseru 0.(céčková implementace). Nyní už máme 1.3 (javová implementace). Až se to usadíbudou k ní spouštěcí skripty repozitáři Parsing v SVN.
  
-<code>setenv MALT /home/zeman/nastroje/parsery/malt/maltparser_0.+===== Pokusy s PDT 2.0 =====
-setenv CONLL /net/data/conll +
-cd $MALT +
-$PARSINGROOT/tools/conll_tag_list.pl < $CONLL/2006/swedish/otrain.conll -c 3 > tagset.cpos +
-$PARSINGROOT/tools/conll_tag_list.pl < $CONLL/2006/swedish/otrain.conll -c 4 > tagset.pos +
-$PARSINGROOT/tools/conll_tag_list.pl < $CONLL/2006/swedish/otrain.conll -c 7 > tagset.dep</code>+
  
-Taky potřebujeme soubor s definicemi rysůPro začátek můžeme využít jeden ze souborů dodávaných s parseremale musíme si ho buď ejmenovat, nebo v souboru ''options.dat'' změnit název, pod kterým ho bude parser hledat.+Malt 1.3. Podle Joakima trénování na celém PDT trvá 3 až 5 dnía to ještě jen i použití splitting triku (bez něj několik týdnů)Trénování SVM má kvadratickou složitost vzhledem k&nbsp;počtu trénovacích příkladů; těch z&nbsp;PDT vypadnou asi 3 milióny.
  
-<code>ln -s m2.par model.par</code>+Trénování bez "splitting tricku" na celých trénovacích datech.
  
-Výchozí volby lze načíst ze souboru options.dat. I při trénování parser posílá na výstup stromečkycož lze využít při konverzi formátů. Natrénovaný model se ukládá do souborůjejichž názvy se odvodí ze souboru definicemi rysůmodel.par. Trénování můžeme pustit napřtakhle:+| Algoritmus | Délka trénování | Délka parsingu | Rychlost parsingu | Úspěšnost | 
 +| nivreeager | 24 dní 17 hodin 13 minut (2135575 s) | 180062 s (50:01 hodin) | 1 věta / 19,4 s | 80,73 % | 
 +| nivrestandard | 32 dní 16 hodin 47 minut (2825227 s) | 225021 s (62:30 hodin) | 1 věta / 24,3 s | 79,98 % | 
 +| covproj | 60 dní 15 hodin 28 minut (5239706 s) | 348001 s (96:40 hodin) | 1 věta / 37,5 s | 79,69 % | 
 +| covnonproj | Skončilo restartem fireball6 někdy v lednu nebo únoru 2010V ''/tmp'' bohužel nezůstala po výpočtu žádná stopa| | | | 
 +| stackproj | 42 dní 12 hodin 55 minut (3675303 s) | 183676 s (51:01 hodin) | 1 věta / 19,8 s | 78,49 % | 
 +| stacklazy | Skončilo chybou Java VM (''memcpy'') po 36 dnech 14 hodinách 21 minutách | | | | 
 +| stackeager | 39 dní 11 hodin 38 minut (3375472 s) | 227927 s (63:19 hodin) | 1 věta / 24,6 s | 82,93 % |
  
-<code>maltparser -f option.dat -m LEARN -I CONLLTAB -i $CONLL/2006/swedish/otrain.conll</code>+Trénování na části trénovacích dat (prvních N vět). Testování je vždy na celém dtestu, tedy 9270 vět.
  
-Trénování nad 11000 švédskými tami trvalo na zenu asi 13 s.+| N | Délka trénování | Délka parsingu | Rychlost parsingu | Úspěšnost | 
 +| 1000 | 5 minut | 1 hodina | 2,5 ty / s | 71,49 % | 
 +| 2000 | 24 minut | 5522 s (1,5 hodiny) | 1,7 věty / s | 75,02 % | 
 +| 5000 | 4 hod 40 min | 9914 s (2 3/4 hod) | 0,9 věty / s | 77,72 % | 
 +| 10000 | 22 hod 05 min | 21865 s (6 hodin) | 0,4 věty / s | 79,28 % | 
 +| 20000 | 53 hod 33 min | 47822 s (13 1/4 hodin) | 1 věta / 5,2 s | 80,71 % | 
 +| 50000 | 19 dní 1 hod 27 min | 76428 s (21 1/4 hodin) | 1 věta / 8,2 s | 82,76 % | 
 +| 68563 | Skončilo restartem sol5 po 36 dnech. V ''/tmp'' bohužel nezůstala po výpočtu žádná stopa. | | | | 
 + 
 +Podívat se na LEMMA místo FORM? 
 + 
 +==== Výpočetní náročnost ==== 
 + 
 +Na jakých strojích to běží (LRC): 
 +(poznámky typu "ale proces zabírá jen" se týkají prosincových trénování se splitting trickem a s Danovým nastavením). 
 + 
 +=== orion7 === 
 +procesor 64bit Intel Xeon 2 GHz 
 +paměť 32 GB, ale proces zabírá jen 2,2 GB 
 +Je to náročné na diskové operace? 
 + 
 +=== sol5 === 
 +procesor 64bit dual core AMD Opteron 2 GHz 
 +paměť 16 GB, ale proces zabírá jen 4,1 GB 
 + 
 + 
 + 
 + 
 + 
 + 
 +==== Nastavení od Švédů ==== 
 + 
 +26.3.2010 po měsíci další pokus pustit to na datech upravených stejným způsobem a se stejnými rysy jako Joakim a Marco. Zpočátku trénink pouze na 1000 větách. Na cosmosu běží paralelně dvě úlohy, které se liší pouze přidělenou pamětí. První úloha dostala 30 GB (na clusteru rezervováno 50) a využila je. Druhá úloha dostala 180 GB, využila zatím 69, ale už dlouho se na nich drží. 
 + 
 +28.3.2010: Zjistil jsem, že při převodu dat do formátu, který měl být shodný s Marcovým, jsem omylem vypustil všechna zalomení vět, tj. soubor obsahoval jednu větu o 16001 slovech, navíc nejednoznačně číslovaných. Tak to už se ani nedivím, že to parseru nedělalo dobře. 
 + 
 +<code>foreach i (1000 2000 5000 10000 20000 50000) 
 +  $PARSINGROOT/malt-parser/marco-kuhlmann-czech-settings/conll-pdttags2conll.pl < dtrain-$i.conll > dtrain-$i.conll2009tags.conll 
 +end 
 +foreach i (dtrain dtest) 
 +  $PARSINGROOT/malt-parser/marco-kuhlmann-czech-settings/conll-pdttags2conll.pl < $i.conll > $i.conll2009tags.conll 
 +end 
 +foreach i (25000 30000 35000 40000 45000 55000 60000 65000) 
 +  split_conll.pl < dtrain.conll2009tags.conll -head $i dtrain-$i.conll2009tags.conll /dev/null 
 +end</code> 
 + 
 +Učení: 
 + 
 +<code>qsub.csh mf=31g $PARSINGROOT/malt-parser/scripts/train.pl '<' dtrain-1000.conll2009tags.conll1 '>' d.pokus1000-30g-clibsvm.mco</code> 
 + 
 +Rozbor: 
 + 
 +<code>qsub.csh mf=31g $PARSINGROOT/malt-parser/scripts/parse.pl -g d.pokus1000-30g-clibsvm.mco '<' dtest.conll2009tags.conll '>' dtest.malt-pokus1000-30g-clibsvm.conll</code> 
 + 
 +Vyhodnocení: 
 + 
 +<code>$PARSINGROOT/tools/conll-eval07.pl -g dtest.conll2009tags.conll -s dtest.malt-pokus1000-30g-clibsvm.conll > dtest.malt-pokus1000-30g-clibsvm.eval.txt</code> 
 + 
 +Trénování na části trénovacích dat (prvních N vět). Testování je vždy na celém dtestu, tedy 9270 vět. 
 + 
 +| N | TÚloha | Délka trénování | PÚloha | Délka parsingu | Rychlost parsingu | Úspěšnost | 
 +| 1000 | | 1 minuta | | 1248 s = 20:48 min | 1 věta / 0,13 s | 74,63 % | 
 +| 2000 | | 4 minuty | | 1885 s = 31:25 min | 1 věta / 0,20 s | 77,73 % | 
 +| 5000 | | 30 minut | | 5534 s = 1:32 hod | 1 věta / 0,60 s | 80,18 % | 
 +| 10000 | | 1:30 hod | | 7171 s = 2:00 hod | 1 věta / 0,77 s | 82,11 % | 
 +| 20000 | | 10:09 hod | | 17139 s = 4:45 hod | 1 věta / 1,85 s | 83,65 % | 
 +| 25000 | 984089 | 12:12 hod | 984241 | 16031 s = 4:27 hod | 1 věta / 1,73 s | 84,24 % | 
 +| 30000 | 984090 | 21:54 hod | 984266 | 19280 s = 5:21 hod | 1 věta / 2,08 s | 84,54 % | 
 +| 35000 | 984091 | 21:09 hod | 984242 | 22018 s = 6:07 hod | 1 věta / 2,38 s | 84,89 % | 
 +| 40000 | 984092 | spadlo na ''sdm0.003.libsvm.mod'' | | | | | 
 +| 45000 | 984093 | poslední zápis 30.3. 6:33 | | | | | 
 +| 50000 | 984030 | 49:55 hod | 984336 | | | | 
 +| 55000 | 984094 | spadlo na ''sdm0.004.libsvm.mod'' | | | | | 
 +| 60000 | 984095 | spadlo na ''sdm0.004.libsvm.mod'' | | | | | 
 +| 65000 | 984096 | nezapisuje od 29.3. 16:01 | | | | | 
 +| 68563 | | Dva pokusy, oba spadly při vytváření ''sdm0.004.libsvm.mod''. Zanechaly core, jinak nic. | | | | | 
 + 
 +==== Co dál? ==== 
 + 
 +  * Stáhnout céčkovou verzi ''libsvm'' a zkusit, o kolik bude rychlejší. 
 +  * Zkusit ''liblinear'' místo ''libsvm''
 +  * Jestli nakonec nějak prorazím, bude potřeba opět učesat obalovací skripty. Mj. jsem přišel na to, že ve většině svých skriptů používám jako dočasný adresář ''/tmp'' místo Milanem důrazně doporučeného ''/mnt/h/tmp''. Např. na tauri10 jsem tak počmáral 4 GB a proces skončil, protože příslušný svazek byl plný. Tohle by se mj. mělo opravit i u skriptů pro Joshuu a dalších. Jinak jsem taky mohutně čachroval s žádostí o příděl paměti na clusteru (týká se i skriptu ''qsub.csh''), s konfigurací Maltu atd.

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