This is an old revision of the document!
Table of Contents
Malt parser
Toto je rychlý úvod do práce s Malt parserem.
Jeden z formátů, které parser umí, je sloupcový formát CoNLL. Kromě 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 v nich opravdu objevilo:
setenv MALT /home/zeman/nastroje/parsery/malt/maltparser_0.4 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
Taky potřebujeme soubor s definicemi rysů. Pro začátek můžeme využít jeden ze souborů dodávaných s parserem, ale musíme si ho buď přejmenovat, nebo v souboru options.dat
změnit název, pod kterým ho bude parser hledat.
ln -s m2.par model.par
Výchozí volby lze načíst ze souboru options.dat. I při trénování parser posílá na výstup stromečky, což lze využít při konverzi formátů. Natrénovaný model se ukládá do souborů, jejichž názvy se odvodí ze souboru s definicemi rysů, model.par. Trénování můžeme pustit např. takhle:
maltparser -f option.dat -m LEARN -I CONLLTAB -i $CONLL/2006/swedish/otrain.conll
Trénování nad 11000 švédskými větami trvalo na zenu asi 13 s.
Vlastní parsing pustíme ze stejného adresáře, parser si zřejmě sám načte natrénovaný model. Z testovacích dat nemusíme odstraňovat případné ruční anotace. Parseru nemusíme říkat, kde leží natrénovaný model, zřejmě tedy ale musíme být ve složce, ve které jsme byli při trénování.
maltparser -f option.dat -m PARSE -I CONLLTAB -i $CONLL/2006/swedish/etest.conll -O CONLLTAB -o sv.etest.malt.conll $PARSINGROOT/tools/conll-eval.pl -g $CONLL/swedish/etest.conll -s sv.etest.malt.conll | tee sv.etest.malt.result
Pokusy s PDT 2.0
Malt 1.3. Podle Joakima trénování na celém PDT trvá 3 až 5 dní, a to ještě jen při použití splitting triku (bez něj několik týdnů). Trénování SVM má kvadratickou složitost vzhledem k počtu trénovacích příkladů; těch z PDT vypadnou asi 3 milióny.
Trénování bez “splitting tricku” na celých trénovacích datech.
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 2010. V /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 % |
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 | Délka trénování | Délka parsingu | Rychlost parsingu | Úspěšnost |
1000 | 5 minut | 1 hodina | 2,5 vě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?
Stav trénování Malt Parseru na PDT 2.0, čtvrtek 10.12.2009, 10:00:
20000 vět
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?
Trénování na 20000 větách už běží 46 hodin (CPU time, ne real time!) a asi ještě dlouho poběží, protože trénování na 10000 větách trvalo 22 hodin (real time) a předtím vždy zdvojnásobení trénovacích dat znamenalo pěti- až desetinásobné nároky na čas.
—
celý treebank (68562 vět)
sol5:
procesor 64bit dual core AMD Opteron 2 GHz
paměť 16 GB, ale proces zabírá jen 4,1 GB
Trénování už běží 161 hodin (CPU time), tedy téměř týden.
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ží.