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:dz-parser:icon [2009/10/21 21:21] zeman Jak zobrazit v Tredu. |
user:zeman:dz-parser:icon [2012/12/09 20:59] zeman Statistiky o výkonu. |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== Hindi Parsing Shared Task at COLING 2012 Mumbaī ====== | ||
+ | |||
+ | http:// | ||
+ | |||
+ | ===== Udělat ===== | ||
+ | |||
+ | * Natrénovat McDonaldův MST parser. Pokud možno s pořádnými rysy, neprojektivně a druhý řád. Ale na druhou stranu, aby to taky někdy doběhlo. | ||
+ | * Ambati et al. použili 2. řád a training-k: | ||
+ | * Zkusit mu dát značky z jiného zdroje. Teď je to POS. Nabízí se CPOS, kombinace CPOS-POS, FEAT, nějaký výběr z FEAT (vibhakti a tam) nebo složitější kombinace výše uvedeného. | ||
+ | * Natrénovat Malt parser a mezi rysy mu přidat hypotézu od MST (parser MST-Malt podle Joakimova a Ryanova článku). | ||
+ | * To znamená, že musím vybrat nejlepší parametry trénování MST, rozdělit trénovací data na 10 dílů, opakovaně natrénovat MST na devíti dílech a pustit ho na ten desátý. Pak musím rozhodnout, jakým způsobem se názor MST předloží Maltu. Musí to být rys položky na vstupu nebo na zásobníku. Asi nejjednodušší by bylo zavést rys, který pro každé slovo řekne značku jeho rodiče. V mnoha větách to bude ukazovat na více než jedno slovo, ale někde to snad pomůže. A pokud místo značky dáme slovo, mohla by být příliš řídká data. (Můžeme ale zavést dva rysy a dát tam obojí.) Index rodiče je jako rys k ničemu, protože hodnota má v každé větě jiný význam. Nejlepší by zřejmě bylo, kdybychom dokázali posuzovat dvě položky najednou (např. dvě horní položky v zásobníku) a říct, zda si MST parser myslí, že mezi nimi vede hrana. Ale to zase neumím popsat a je otázka, jestli to vůbec umí Malt parser, resp. ten jeho SVM rádce. | ||
+ | * Zkontrolovat normalizaci UTF-8 (dévanágarí). | ||
+ | * Natrénovat samostatný značkovač syntaktických značek. Ambati et al.: MST labeler je blbej, použili maxent (http...lzhang, | ||
+ | * Potřebuju nějaké vyhledávadlo a zvýrazňovadlo chyb. | ||
+ | * Opravit normalizaci pro HamleDT. Normalizace hindštiny prý dělá na nových datech mnohem více chyb (uzel pod Coord nemá is_member apod.) Mohly by mi pomoct Martinovy transformace koordinací? | ||
+ | |||
+ | HTB verze 0,51: train 12041 sent, 268093 tok? (words), dev 1233 / 26416 | ||
+ | |||
+ | **MST parser:** V& | ||
+ | |||
+ | Vyhodnotit samostatně | ||
+ | * LAS vs. UAS | ||
+ | * uvnitř chunku vs. mezi chunky | ||
+ | * pro jednotlivé s-značky | ||
+ | |||
+ | ===== Výsledky ===== | ||
+ | |||
+ | * Na malých hindských datech (1000 vět) hlásí, že našel 397875 rysů (je to stejné pro projektivní i neprojektivní model). | ||
+ | * Projektivní trénování trvalo 12 minut a model má necelých 6 MB. | ||
+ | * Neprojektivní trénování trvalo 18 minut a velikost modelu je podobná. | ||
+ | * Na velkých hindských datech (všechny věty) hlásí, že našel 2180868 rysů. | ||
+ | * Neprojektivní trénování trvalo 4 hodiny a model má necelých 35 MB. | ||
+ | |||
+ | mst nonproj o2 full | ||
+ | Labeled | ||
+ | Unlabeled attachment score: 20408 / 26416 * 100 = 77.26 % | ||
+ | Label accuracy score: | ||
+ | |||
+ | mst nonproj o2 1000 | ||
+ | Labeled | ||
+ | Unlabeled attachment score: 20335 / 26416 * 100 = 76.98 % | ||
+ | Label accuracy score: | ||
+ | |||
+ | Parser zřejmě použil jako part of speech sloupec CoNLL POS (nikoli CPOS nebo FEAT). | ||
+ | |||
====== ICON 2009 NLP Tools Contest ====== | ====== ICON 2009 NLP Tools Contest ====== | ||
Line 5: | Line 50: | ||
===== Zbývá udělat ===== | ===== Zbývá udělat ===== | ||
- | * Napsat | + | * Upravit makefile tak, abych mohl pouštět pokusy současně se starými i novými daty. A aby se váhy hlasování automaticky upravovaly podle aktuální úspěšnosti dílčích parserů. |
- | * Rozchodit podporu clusteru v makefilech, abych nemusel MST parser pouštět ručně zvlášť. | + | * Upravit makefile a/nebo skripty pro pouštění Malt parseru tak, aby Malt pro každý jazyk zvolil nejvhodnější algoritmus. |
+ | * Více si pohrát s rysy. Naučit se parserům předhazovat rysy. U Malt parseru je to dobře zdokumentováno, | ||
+ | * Přidat jako rys chunk label, a to i pro DZ Parser. | ||
+ | * Naivní parser pro telugštinu: | ||
+ | * Rozchodit podporu clusteru v makefilech, abych nemusel MST parser pouštět ručně zvlášť | ||
* Vyzkoušet neprojektivní parsing MST parserem. | * Vyzkoušet neprojektivní parsing MST parserem. | ||
- | * Zjistit, jaká je úspěšnost naivního parseru, který pověsí poslední uzel na kořen a všechny předcházející uzly na poslední. Přinejmenším v& | ||
* Zjistit, proč je tolik chyb v syntaktickém značkování, | * Zjistit, proč je tolik chyb v syntaktickém značkování, | ||
- | * Vybrat SVN repozitář, | + | * Více si pohrát s konfigurací Malt parseru. 7 algoritmů už jsem vyzkoušel, ale některé |
* Vyhodnotit křivku učení. | * Vyhodnotit křivku učení. | ||
* Vyhodnotit požadavky na procesor, paměť a disk (je třeba nejdříve rozchodit skript). | * Vyhodnotit požadavky na procesor, paměť a disk (je třeba nejdříve rozchodit skript). | ||
- | * Více si pohrát s rysy. | ||
- | * Více si pohrát s konfigurací Malt parseru. | ||
* Frekvenční slovníky, abych si trochu udělal představu o častých slovech, případně o jejich syntaktických zvláštnostech. | * Frekvenční slovníky, abych si trochu udělal představu o častých slovech, případně o jejich syntaktických zvláštnostech. | ||
- | * Konverze z& | + | * Průzkum dat: jak dlouhé jsou věty? Indové v dokumentaci nějaká čísla uvádějí, ale tam se slova počítají včetně záložek |
+ | * Neučit se na hindštině a bengálštině dohromady? Jsou to přece podobné jazyky a data by se významně zvětšila! | ||
===== Průzkum dat ===== | ===== Průzkum dat ===== | ||
Line 24: | Line 71: | ||
Následující statistiky pocházejí ze souborů pro dtrénink s automatickou morfologií: | Následující statistiky pocházejí ze souborů pro dtrénink s automatickou morfologií: | ||
- | | Jazyk | Výskytů slov | Tvarů | Lemmat | ChunkPOS | POS+case+postpos | FEATS | | + | | Jazyk | Výskytů slov | Tvarů | Lemmat | ChunkPOS |
- | | hindština | 13779 | 3973 | 3134 | 10 | 297 | 714 | | + | | hindština | 13779 | 3973 | 3134 | 10 | 33 | 297 | 714 | |
- | | bengálština | 6449 | 2997 | 2336 | 14 | 398 | 367 | | + | | bengálština | 6449 | 2997 | 2336 | 14 | 30 | 398 | 367 | |
- | | telugština | 5494 | 2462 | 1403 | 12 | 409 | 453 | | + | | telugština | 5494 | 2462 | 1403 | 12 | 31 | 409 | 453 | |
+ | |||
+ | Statistiky v& | ||
+ | |||
+ | <code bash> | ||
+ | |||
+ | ==== Naivní telugu ==== | ||
+ | |||
+ | V& | ||
+ | |||
+ | | Jazyk | dtrain | dtest | | ||
+ | | hi | 35.71 | 34.64 | | ||
+ | | bn | 39.52 | 44.14 | | ||
+ | | te | 73.75 | 76.89 | | ||
+ | |||
+ | ==== Nová data pro druhé kolo ==== | ||
+ | |||
+ | Pro druhé vyhodnocení pořadatelé připravili upravená data "with courser tags". Ukázalo se, že nejde o lepší informaci na morfologické rovině, která by případně mohla parsing usnadnit. Jde o syntaktické značky, které má parser produkovat spolu se závislostní strukturou. Otázka je, jestli jsou nové značky jednodušší, | ||
+ | |||
+ | ===== Analýza chyb ===== | ||
Takhle se z morfologických indických dat vyrobí soubor pro Tred, který obsahuje indické písmo místo WX: | Takhle se z morfologických indických dat vyrobí soubor pro Tred, který obsahuje indické písmo místo WX: | ||
< | < | ||
+ | |||
+ | Důležitou součástí výše uvedeného příkazu je perlový kód, který maže tabulátory ze značek, jinak se na výsledek nedá v& | ||
+ | |||
+ | < | ||
+ | |||
+ | A takhle spojíme vzorovou anotaci s& | ||
+ | |||
+ | < | ||
+ | |||
+ | Tady je ještě jedna alternativa (pozor, tohle je pro změnu okopírováno z& | ||
+ | |||
+ | < | ||
+ | ts and Settings\Dan\Dokumenty\Lingvistika\Projekty\padapt\parsingroot\tools" | ||
+ | C: | ||
+ | -l te -t sci -g te/ | ||
+ | est.voted.1.fs</ | ||
+ | |||
+ | Není pravda, že ze značky POS jednoznačně vyplývá značka chunku. Proto bych měl parserům poskytnout obě značky, může jim to pomoct. Např. v& | ||
+ | |||
+ | V& | ||
+ | |||
+ | Přinejmenším častá slova by měla být pro parsery viditelná jako samostatný rys uzlu. Např. hindské " | ||
+ | |||
+ | Úspěšnost přes 85& | ||
+ | |||
+ | Příklad problému s& | ||
+ | |||
+ | Je potřeba přinejmenším Malt parseru, ale pokud to jde, tak i MST parseru předhodit podrobnější rysy, aby parser mohl pracovat zvlášť např. s& | ||
+ | |||
+ | ===== Výsledky ===== | ||
První výsledky DZ Parseru na vývojových datech: | První výsledky DZ Parseru na vývojových datech: | ||
Line 130: | Line 226: | ||
Otázka je, jestli by si lépe vedly i Malt parser a MST parser, ale to vyzkouším až později. | Otázka je, jestli by si lépe vedly i Malt parser a MST parser, ale to vyzkouším až později. | ||
Pozoruhodné je, že zhoršený DZ Parser zlepšuje výsledek hlasování, | Pozoruhodné je, že zhoršený DZ Parser zlepšuje výsledek hlasování, | ||
+ | |||
+ | Nové váhy parserů při hlasování (20.10.2009 13:26, DZ parser teď na všechno používá pád a záložku, Malt parser používá POSTAG s pádem a záložkou pro hindštinu, jinde používá CPOSTAG, MST Parser používá všude POSTAG s pádem a záložkou): | ||
+ | |||
+ | unlabeled MST:MALT:DZ | ||
+ | hi 8616: | ||
+ | bn 8570: | ||
+ | te 7985: | ||
+ | |||
+ | labels MST:MALT:DZ | ||
+ | hi 6816: | ||
+ | bn 6967: | ||
+ | te 5526: | ||
+ | |||
+ | ===== Neprojektivity ===== | ||
21:57 lrc-two:/ | 21:57 lrc-two:/ | ||
Line 159: | Line 269: | ||
Label accuracy score: | Label accuracy score: | ||
- | Nové váhy parserů při hlasování (20.10.2009 13:26, DZ parser teď na všechno používá pád a záložku, | + | ===== Parsovací algoritmy |
- | unlabeled | + | Zatím jsem neměnil root handling u Nivreho algoritmů (-r strict|relaxed|normal) a allow shift/root u Covingtona (-cs, -cr). Tohle jsou nejlepší hodnoty, kterých jsem dosáhl. Na každém jazyku vyhrál jiný algoritmus. Na hindštině Malt parser opět překonal |
- | hi 8616: | + | |
- | bn 8570: | + | |
- | te 7985: | + | |
- | labels MST:MALT:DZ | + | hi 87.60 stacklazy |
- | hi 6816:6704:5960 | + | bn 85.57 covproj |
- | bn 6967:6215:5314 | + | te 81.04 stackeager |
- | te 5526:4904:4400 | + | |
+ | ==== nivrestandard ==== | ||
+ | |||
+ | Hindština i bengálština vyšla zřetelně lépe než nivreeager, telugština si lehce pohoršila. | ||
+ | |||
+ | Thu Nov 19 18:41:43 CET 2009 | ||
+ | / | ||
+ | Labeled | ||
+ | Unlabeled attachment score: 1082 / 1250 * 100 = 86.56 % | ||
+ | Label accuracy score: | ||
+ | Thu Nov 19 18:41:45 CET 2009 | ||
+ | / | ||
+ | Labeled | ||
+ | Unlabeled attachment score: 693 / 811 * 100 = 85.45 % | ||
+ | Label accuracy score: | ||
+ | Thu Nov 19 18:41:46 CET 2009 | ||
+ | / | ||
+ | Labeled | ||
+ | Unlabeled attachment score: 541 / 675 * 100 = 80.15 % | ||
+ | Label accuracy score: | ||
+ | |||
+ | ==== covproj ==== | ||
+ | |||
+ | Bengálština ještě trochu lepší, možná nesignifikantně. Ostatní ne. | ||
+ | |||
+ | Thu Nov 19 19:47:14 CET 2009 | ||
+ | / | ||
+ | Labeled | ||
+ | Unlabeled attachment score: 1079 / 1250 * 100 = 86.32 % | ||
+ | Label accuracy score: | ||
+ | Thu Nov 19 19:47:15 CET 2009 | ||
+ | / | ||
+ | Labeled | ||
+ | Unlabeled attachment score: 694 / 811 * 100 = 85.57 % | ||
+ | Label accuracy score: | ||
+ | Thu Nov 19 19:47:15 CET 2009 | ||
+ | / | ||
+ | Labeled | ||
+ | Unlabeled attachment score: 542 / 675 * 100 = 80.30 % | ||
+ | Label accuracy score: | ||
+ | |||
+ | ==== covnonproj ==== | ||
+ | |||
+ | Zlepšila se hindština. Bengálština se zhoršila, telugština zůstala. | ||
+ | |||
+ | Thu Nov 19 21:21:46 CET 2009 | ||
+ | / | ||
+ | Labeled | ||
+ | Unlabeled attachment score: 1087 / 1250 * 100 = 86.96 % | ||
+ | Label accuracy score: | ||
+ | Thu Nov 19 21:21:46 CET 2009 | ||
+ | / | ||
+ | Labeled | ||
+ | Unlabeled attachment score: 682 / 811 * 100 = 84.09 % | ||
+ | Label accuracy score: | ||
+ | Thu Nov 19 21:21:47 CET 2009 | ||
+ | / | ||
+ | Labeled | ||
+ | Unlabeled attachment score: 542 / 675 * 100 = 80.30 % | ||
+ | Label accuracy score: | ||
+ | |||
+ | ==== stackproj ==== | ||
+ | |||
+ | Není nejhorší, ale taky v ničem nejlepší. | ||
+ | |||
+ | Thu Nov 19 21:29:06 CET 2009 | ||
+ | / | ||
+ | Labeled | ||
+ | Unlabeled attachment score: 1082 / 1250 * 100 = 86.56 % | ||
+ | Label accuracy score: | ||
+ | Thu Nov 19 21:29:06 CET 2009 | ||
+ | / | ||
+ | Labeled | ||
+ | Unlabeled attachment score: 690 / 811 * 100 = 85.08 % | ||
+ | Label accuracy score: | ||
+ | Thu Nov 19 21:29:07 CET 2009 | ||
+ | / | ||
+ | Labeled | ||
+ | Unlabeled attachment score: 546 / 675 * 100 = 80.89 % | ||
+ | Label accuracy score: | ||
+ | |||
+ | ==== stackeager ==== | ||
+ | |||
+ | Přestože umožňuje neprojektivity, | ||
+ | Zato se vytáhla telugština, | ||
+ | |||
+ | Thu Nov 19 21:44:15 CET 2009 | ||
+ | / | ||
+ | Labeled | ||
+ | Unlabeled attachment score: 1022 / 1250 * 100 = 81.76 % | ||
+ | Label accuracy score: | ||
+ | Thu Nov 19 21:44:16 CET 2009 | ||
+ | / | ||
+ | Labeled | ||
+ | Unlabeled attachment score: 680 / 811 * 100 = 83.85 % | ||
+ | Label accuracy score: | ||
+ | Thu Nov 19 21:44:17 CET 2009 | ||
+ | / | ||
+ | Labeled | ||
+ | Unlabeled attachment score: 547 / 675 * 100 = 81.04 % | ||
+ | Label accuracy score: | ||
+ | |||
+ | ==== stacklazy ==== | ||
+ | |||
+ | Na hindštině je to maximum, ostatní se zhoršily. | ||
+ | |||
+ | Thu Nov 19 21:52:53 CET 2009 | ||
+ | / | ||
+ | Labeled | ||
+ | Unlabeled attachment score: 1095 / 1250 * 100 = 87.60 % | ||
+ | Label accuracy score: | ||
+ | Thu Nov 19 21:52:54 CET 2009 | ||
+ | / | ||
+ | Labeled | ||
+ | Unlabeled attachment score: 687 / 811 * 100 = 84.71 % | ||
+ | Label accuracy score: | ||
+ | Thu Nov 19 21:52:55 CET 2009 | ||
+ | / | ||
+ | Labeled | ||
+ | Unlabeled attachment score: 544 / 675 * 100 = 80.59 % | ||
+ | Label accuracy score: 336 / 675 * 100 = 49.78 % | ||