Both sides previous revision
Previous revision
Next revision
|
Previous revision
Next revision
Both sides next revision
|
user:zeman:malt-parser [2013/06/12 13:47] zeman Co dál? |
user:zeman:malt-parser [2013/07/11 18:41] zeman Aktualizace úkolů. |
http://maltparser.org/ | http://maltparser.org/ |
| |
Rychlý úvod do práce s Malt parserem, který tu dřív byl, už neplatí, protože se týkal starého Malt parseru 0.4 (céčková implementace). Nyní už máme 1.3 (javová implementace). Až se to usadí, budou k ní spouštěcí skripty v repozitáři Parsing v SVN. | Od května 2012 používám Malt Parser 1.7.1 z ''/home/zeman/nastroje/parsery/maltparser-1.7.1''. |
| |
Aktualizace květen 2012: Malt Parser 1.7.1 jsem právě rozbalil do ''/home/zeman/nastroje/parsery/maltparser-1.7.1''. Moje staré pokusy s Malt Parserem a PDT 2.0 jsou v ''/net/work/people/zeman/parsing/projects/maltpdt/uppsala-features''. | 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. (S Joakimem jsem se o tom bavil na jaře 2010 a šlo o Malt Parser 1.3.) |
| |
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. | Celá trénovací data mají 68562 vět (někde mám chybně uvedeno 68563 kvůli nejasnostem s počítáním od nuly a od jedničky, ale teď jsem to kontroloval a dvojím způsobem přepočítával prázdné řádky v souboru ''dtrain.conll'' a je to opravdu 68562). Testování je vždy, když není řečeno jinak, na celém dtestu, tedy 9270 vět. Tam, kde je explicitně uvedeno testování na etestu, jde o 10148 vět; v tom případě pak trénuju na sjednocení trénovacích a d-test dat, celkem 77832 vět. |
| |
Celá trénovací data mají 68563 vět. Testování je vždy na celém dtestu, tedy 9270 vět. | |
| |
===== Jak se to pouští? ===== | ===== Jak se to pouští? ===== |
* Přejít do adresáře ''/net/work/people/zeman/parsing/projects/maltpdt'', popř. si nejdřív někam vybalit SVN parsing a pak přejít do složky ''projects/maltpdt''. | * Přejít do adresáře ''/net/work/people/zeman/parsing/projects/maltpdt'', popř. si nejdřív někam vybalit SVN parsing a pak přejít do složky ''projects/maltpdt''. |
* Skript ''getdata.csh'', případně ''getdata.gold.csh'' (pokud chceme použít ručně zjednoznačněnou morfologii), nám vyrobí místní kopii trénovacích a testovacích dat, převedenou do formátu CoNLL. Jsou to data z PDT 2.0 (train, dtest a etest na analytické rovině) a já už je mám na toto místo zkopírované. | * Skript ''getdata.csh'', případně ''getdata.gold.csh'' (pokud chceme použít ručně zjednoznačněnou morfologii), nám vyrobí místní kopii trénovacích a testovacích dat, převedenou do formátu CoNLL. Jsou to data z PDT 2.0 (train, dtest a etest na analytické rovině) a já už je mám na toto místo zkopírované. |
* Složka ''/net/work/people/zeman/parsing/projects/maltpdt/uppsala-features'' obsahuje pokusy, ve kterých jsem se snažil co nejvíce přiblížit nastavení, které se nejvíce osvědčilo Joakimovi a jeho týmu v roce 2009. Příslušné soubory s definicemi rysů jsou ve složce ''/net/work/people/zeman/parsing/malt-parser/marco-kuhlmann-czech-settings''. Je tam také skript ''conll-pdttags2conll.pl'', kterým se patnáctimístné poziční značky PDT převedou na takové seznamy rysů a hodnot, jaké se používaly v soutěži CoNLL 2009. | * Složka ''/net/work/people/zeman/parsing/projects/maltpdt/experiments'' obsahuje pokusy, ve kterých jsem se snažil co nejvíce přiblížit nastavení, které se nejvíce osvědčilo Joakimovi a jeho týmu v roce 2009. Příslušné soubory s definicemi rysů jsou ve složce ''/net/work/people/zeman/parsing/malt-parser/marco-kuhlmann-czech-settings''. Je tam také skript ''conll-pdttags2conll.pl'', kterým se patnáctimístné poziční značky PDT převedou na takové seznamy rysů a hodnot, jaké se používaly v soutěži CoNLL 2009. |
* Dosud neexistuje žádný Makefile. Pouštělo se to pomocí skriptu ''all.pl'', který rovnou odesílal úlohy na cluster. Každá složka s odlišným pokusem má svou mutaci tohoto skriptu. Každá odeslaná úloha se skládá ze tří částí: učení, rozbor testovacích dat a vyhodnocení. | * Dosud neexistuje žádný Makefile. Pouštělo se to pomocí skriptu ''all.pl'', který rovnou odesílal úlohy na cluster. Každá složka s odlišným pokusem má svou mutaci tohoto skriptu. Každá odeslaná úloha se skládá ze tří částí: učení, rozbor testovacích dat a vyhodnocení. |
| |
===== Co dál? ===== | ===== Co dál? ===== |
| |
* Zjistit úspěšnost na e-testu a publikovat ji na stránce o českém parsingu. A možná tam publikovat i LAS, nejenom UAS. Teď rychle rozebrat e-test modelem natrénovaným na dtrainu. Výhledově ho ale srovnat s modelem natrénovaným na etrainu (tj. dtrain+dtest). | |
* Upravit švédskou definici rysů, aby fungovala i s algoritmy ''nivrestandard'', ''nivreeager'', ''covproj'' a ''covnonproj''. Vše vyzkoušet opět na různě velkých trénovacích datech. Nikde není dáno, že právě ''stacklazy'' musí být nejúspěšnější algoritmus na PDT. | * Upravit švédskou definici rysů, aby fungovala i s algoritmy ''nivrestandard'', ''nivreeager'', ''covproj'' a ''covnonproj''. Vše vyzkoušet opět na různě velkých trénovacích datech. Nikde není dáno, že právě ''stacklazy'' musí být nejúspěšnější algoritmus na PDT. |
* Odladit ''train.pl'', aby se výsledný soubor ''.mco'' dal rozbalovat. Možná mu vadí pouze ".mco" u volby ''-c''. | * Odladit ''train.pl'', aby se výsledný soubor ''.mco'' dal rozbalovat. Možná mu vadí pouze ".mco" u volby ''-c''. |
* Vyhodnotit to ještě i na e-testu a připsat to na stránku o českém parsingu. | * Vyhodnotit to ještě i na e-testu a připsat to na stránku o českém parsingu. |
* Zkusit hlasování pětitisícových kusů. | * Zkusit hlasování pětitisícových kusů. |
| |
| ===== Nové výsledky s Malt Parserem 1.7 ===== |
| |
| Měl jsem dva cíle: 1. Natrénovat nové modely, protože ty staré nejsou kompatibilní s novou verzí parseru, a 2. získat výsledky na e-testu, protože dosud jsem pracoval jen s d-testem. I když jsem novou verzi parseru pouštěl se stejnými parametry jako před třemi lety tu starou, dostal jsem jiné výsledky (nepatrně horší). |
| |
| D-test (9270 vět): |
| LAS = 80,04 % |
| UAS = 85,96 % |
| LAB = 86,43 % |
| Běželo na stroji lucifer5 (Intel Xeon 2394 GHz) s vyhrazenými 30 GB paměti: |
| learning time (na trénovacích datech) = 139 hodin, tj. necelých 6 dní |
| parsing time = 7 hodin (25559301 ms), tj. 1 věta průměrně za 2,76 s |
| |
| E-test (10148 vět): |
| LAS = 79,80 % |
| UAS = 85,76 % |
| LAB = 86,24 % |
| Běželo na stroji hydra1 (AMD Opteron 2518 GHz) s vyhrazenými 30 GB paměti: |
| learning time (na trénovacích a d-test datech) = 221 hodin, tj. něco přes 9 dní |
| parsing time = 9 hodin (34135285 ms), tj. 1 věta průměrně za 3,36 s |
| |
===== BEST: Javová implementace libsvm, splitting trick ===== | ===== BEST: Javová implementace libsvm, splitting trick ===== |