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:malt-parser [2010/01/10 15:49] zeman |
user:zeman:malt-parser [2010/04/06 17:03] zeman Některé úlohy zahynuly, aniž by zanechaly chybové hlášení. |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Malt parser ====== | ====== Malt parser ====== | ||
- | Toto je rychlý úvod do práce s Malt parserem. | + | http:// |
- | + | ||
- | 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 CONLL / | + | |
- | cd $MALT | + | |
- | $PARSINGROOT/ | + | |
- | $PARSINGROOT/ | + | |
- | $PARSINGROOT/ | + | |
- | + | ||
- | 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, | + | |
- | + | ||
- | < | + | |
- | + | ||
- | 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: | + | |
- | + | ||
- | < | + | |
- | + | ||
- | 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í. | + | |
- | + | ||
- | < | + | |
- | $PARSINGROOT/ | + | |
+ | 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. | ||
===== Pokusy s PDT 2.0 ===== | ===== Pokusy s PDT 2.0 ===== | ||
Line 37: | Line 14: | ||
| nivreeager | 24 dní 17 hodin 13 minut (2135575 s) | 180062 s (50:01 hodin) | 1 věta / 19,4 s | 80,73 % | | | 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 % | | | 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 ''/ | ||
+ | | 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 ('' | | stacklazy | Skončilo chybou Java VM ('' | ||
+ | | 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. | 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. | ||
Line 52: | Line 33: | ||
Podívat se na LEMMA místo FORM? | Podívat se na LEMMA místo FORM? | ||
- | Stav trénování Malt Parseru na PDT 2.0, čtvrtek 10.12.2009, 10:00: | + | ==== Výpočetní náročnost ==== |
- | 20000 vět | + | 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: | + | === orion7 |
procesor 64bit Intel Xeon 2 GHz | procesor 64bit Intel Xeon 2 GHz | ||
paměť 32 GB, ale proces zabírá jen 2,2 GB | paměť 32 GB, ale proces zabírá jen 2,2 GB | ||
Je to náročné na diskové operace? | 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. | + | === sol5 === |
+ | procesor 64bit dual core AMD Opteron 2 GHz | ||
+ | paměť 16 GB, ale proces zabírá jen 4,1 GB | ||
- | --- | + | ==== Nastavení od Švédů ==== |
- | celý treebank (68562 | + | 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ží. |
- | sol5: | + | 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. |
- | procesor 64bit dual core AMD Opteron | + | |
- | paměť 16 GB, ale proces zabírá jen 4,1 GB | + | < |
+ | $PARSINGROOT/ | ||
+ | end | ||
+ | foreach i (dtrain dtest) | ||
+ | $PARSINGROOT/ | ||
+ | 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</ | ||
+ | |||
+ | Učení: | ||
+ | |||
+ | < | ||
+ | |||
+ | Rozbor: | ||
+ | |||
+ | < | ||
+ | |||
+ | Vyhodnocení: | ||
+ | |||
+ | < | ||
+ | |||
+ | 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 '' | ||
+ | | 45000 | 984093 | 38:18 hod | 1008955 | 26853 s = 7:28 hod | 1 věta / 2,90 s | 85,35 % | | ||
+ | | 50000 | 984030 | 49:55 hod | 984336 | 37224 s = 10:20 hod | 1 věta / 4,02 s | 85,47 % | | ||
+ | | 55000 | 984094 | spadlo na '' | ||
+ | | 60000 | 984095 | spadlo na '' | ||
+ | | 65000 | 984096 | spadlo na '' | ||
+ | | 68563 | | spadlo na '' | ||
+ | |||
+ | ==== Proč trénování větších modelů padá? ==== | ||
+ | |||
+ | '' | ||
+ | |||
+ | < | ||
+ | cd model | ||
+ | less symboltables.sym</ | ||
+ | |||
+ | Až na jednu výjimku trénování spadlo vždy při budování '' | ||
+ | |||
+ | Joakim navrhuje, abychom zkusili dělení zjemnit, např. místo CPOSTAGu dělit modely podle slovního poddruhu (druhá pozice české značky). Pak by dílčí modely byly menší a libsvm by třeba nespadlo. Ve skutečnosti budu asi muset zjemňovat jiným způsobem, protože právě u podstatných jmen žádné zvláštní dělení na poddruhy neexistuje. Mohly by ale pomoct pády. | ||
+ | |||
+ | ==== Javová implementace libsvm ==== | ||
+ | |||
+ | Předpokládá se, že vyžaduje více času a paměti. Podle dokumentace může dojít i k& | ||
+ | |||
+ | | N | Úloha | Délka trénování | Délka parsingu | Rychlost parsingu | Úspěšnost | Poznámka | | ||
+ | | 1000 | 1011450 | 37 s | | | | Spadlo, kód -1 není v& | ||
+ | | 2000 | 1011451 | 2:46 min | 661 s = 11 min | 1 věta / 0,07 s | 74,10 % | | | ||
+ | | 5000 | 1011452 | 17:45 min | 1527 s = 25 min | 1 věta / 0,16 s | 76,65 % | | | ||
+ | | 10000 | 1011453 | | | | | Nerozeběhlo se. | | ||
+ | | 20000 | 1011454 | 6:23 h | 5602 s = 1:33 h | 1 věta / 0,60 s | 79,90 % | | | ||
+ | | 25000 | 1011455 | 10:59 h | 6964 s = 1:56 h | 1 věta / 0,75 s | 80,32 % | | | ||
+ | | 30000 | 1011456 | | | | | Nerozeběhlo se. | | ||
+ | | 35000 | 1011457 | 22:33 h | 9230 s = 2:34 h | 1 věta / 1,00 s | 81,03 % | | | ||
+ | | 40000 | 1011458 | 36:36 h | 12484 s = 3:28 h | 1 věta / 1,35 s | 81,17 % | | | ||
+ | | 45000 | 1011459 | 46:26 h | 13889 s = 3:51 h | 1 věta / 1,50 s | 81,51 % | | | ||
+ | | 50000 | 1011460 | 58:13 h | 15711 s = 4:22 h | 1 věta / 1,69 s | 81,72 % | | | ||
+ | | 55000 | 1011461 | 65:48 h | 17031 s = 4:44 h | 1 věta / 1,84 s | 81,83 % | | | ||
+ | | 60000 | 1011462 | 90:10 h | 18145 s = 5:02 h | 1 věta / 1,96 s | 82,11 % | | | ||
+ | | 65000 | 1011463 | 89:29 h | 15808 s = 4:23 h | 1 věta / 1,71 s | 82,31 % | | | ||
+ | |||
+ | === Oprava 6.4.2010 === | ||
+ | |||
+ | Předcházející pokusy s& | ||
+ | |||
+ | | N | Úloha | Délka trénování | Délka parsingu | Rychlost parsingu | Úspěšnost | Poznámka | | ||
+ | | 1000 | 1032117 | 2:38 min | | | | 6.4.2010 | | ||
+ | | 2000 | 1032118 | 8:44 min | | | | 6.4.2010 | | ||
+ | | 5000 | 1032131, 1032132 | | | | | 6.4.2010. Nějak se pustilo dvakrát přes sebe, takže trénink bohužel nemohl zapisovat do souboru s& | ||
+ | | 10000 | 1032120 | | | | | 6.4.2010 | | ||
+ | | 20000 | 1032121 | | | | | 6.4.2010 | | ||
+ | | 25000 | 1032122 | | | | | 6.4.2010 | | ||
+ | | 30000 | 1032123 | | | | | 6.4.2010 | | ||
+ | | 35000 | 1032124 | | | | | 6.4.2010 | | ||
+ | | 40000 | 1032125 | | | | | 6.4.2010 | | ||
+ | | 45000 | 1032126 | | | | | 6.4.2010 | | ||
+ | | 50000 | 1032127 | | | | | 6.4.2010 | | ||
+ | | 55000 | 1032128 | | | | | 6.4.2010 | | ||
+ | | 60000 | 1032129 | | | | | 6.4.2010 | | ||
+ | | 65000 | 1032130 | | | | | 6.4.2010 | | ||
+ | |||
+ | |||
+ | ==== Trénovací data rozsekaná na pětitisícové úseky ==== | ||
+ | |||
+ | | N | Úloha | Délka trénování | Délka parsingu | Rychlost parsingu | Úspěšnost | Poznámka | | ||
+ | | 00000-04999 | 1021425 | | | | 76,65 % | | | ||
+ | | 05000-09999 | 1021426 | | | | 76,99 % | | | ||
+ | | 10000-14999 | 1021427 | | | | 76,47 % | | | ||
+ | | 15000-19999 | 1021428 | | | | 76,72 % | | | ||
+ | | 20000-24999 | 1021429 | | | | 76,72 % | | | ||
+ | | 25000-29999 | 1021430 | | | | 76,80 % | | | ||
+ | | 30000-34999 | 1021431 | | | | 76,87 % | | | ||
+ | | 35000-39999 | 1021432 | | | | 76,94 % | | | ||
+ | | 40000-44999 | 1021433 | | | | 76,72 % | | | ||
+ | | 45000-49999 | 1021434 | | | | 76,98 % | | | ||
+ | | 50000-54999 | 1021435 | | | | 76,69 % | | | ||
+ | | 55000-59999 | 1021436 | | | | 76,96 % | | | ||
+ | | 60000-64999 | 1021437 | | | | 76,81 % | | | ||
+ | | 65000-68562 | 1021438 | | | | 75,86 % | | | ||
+ | |||
+ | Všechny díly se nakonec podařilo použít, čímž jsme definitivně vyvrátili, že by v& | ||
+ | |||
+ | Zarážející je ale úspěšnost. Přinejmenším pro první pětitisícový úsek měla být s& | ||
+ | |||
+ | === Oprava 6.4.2010 === | ||
+ | |||
+ | Předcházející pokusy s& | ||
+ | |||
+ | | N | Úloha | Délka trénování | Délka parsingu | Rychlost parsingu | Úspěšnost | Poznámka | | ||
+ | | 00000-04999 | 1032102 | | | | | Nevysvětlitelná náhlá smrt během trénování. | | ||
+ | | 05000-09999 | 1032103 | 24:24 min | | | | | | ||
+ | | 10000-14999 | 1032104 | 31:56 min | | | | | | ||
+ | | 15000-19999 | 1032116 | 30:27 min | | | | | | ||
+ | | 20000-24999 | 1032106 | 21:35 min | | | | | | ||
+ | | 25000-29999 | 1032107 | | | | | Nevysvětlitelná náhlá smrt během trénování. | | ||
+ | | 30000-34999 | 1032108 | 28:30 min | | | | | | ||
+ | | 35000-39999 | 1032109 | | | | | Nevysvětlitelná náhlá smrt během trénování. | | ||
+ | | 40000-44999 | 1032110 | 19:17 min | | | | | | ||
+ | | 45000-49999 | 1032111 | 22:54 min | | | | | | ||
+ | | 50000-54999 | 1032112 | 22:31 min | | | | | | ||
+ | | 55000-59999 | 1032113 | | | | | Nevysvětlitelná náhlá smrt během trénování. | | ||
+ | | 60000-64999 | 1032114 | | | | | Nevysvětlitelná náhlá smrt během trénování. | | ||
+ | | 65000-68562 | 1032115 | 12:43 min | | | | | | ||
- | Trénování už běží 161 hodin (CPU time), tedy téměř týden. | + | ==== Co dál? ==== |
+ | * Pokusy, na kterých céčková verze '' | ||
+ | * Navrhnout jemnější dělení modelů '' | ||
+ | * Rozsekat trénovací data na 14 pětitisícových kusů a s& | ||
+ | * Zkusit '' | ||
+ | * Odladit '' | ||
+ | * 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ář ''/ | ||
+ | * Vyhodnotit to ještě i na e-testu a připsat to na stránku o českém parsingu. |