[ Skip to the content ]

Institute of Formal and Applied Linguistics Wiki


[ Back to the navigation ]

This is an old revision of the document!


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 %
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)

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.


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