[ Skip to the content ]

Institute of Formal and Applied Linguistics Wiki


[ Back to the navigation ]

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
Next revision Both sides next revision
user:zeman:dz-parser:icon [2009/10/20 18:05]
zeman vytvořeno
user:zeman:dz-parser:icon [2009/11/19 22:30]
zeman Nová data?
Line 3: Line 3:
 Soutěž v závislostní syntaktické analýze hindštiny, bengálštiny a telugštiny. Něco jako CoNLL-X a 2007 shared task, ale pro indické jazyky. Tentokrát nezkouším jen DZ Parser, ale hlasující kombinaci tří parserů: Malt parseru, MST parseru a DZ parseru. Soutěž v závislostní syntaktické analýze hindštiny, bengálštiny a telugštiny. Něco jako CoNLL-X a 2007 shared task, ale pro indické jazyky. Tentokrát nezkouším jen DZ Parser, ale hlasující kombinaci tří parserů: Malt parseru, MST parseru a DZ parseru.
  
-Indický parsing - to do:+===== Zbývá udělat =====
  
-- Převod z CSTS do CoNLL 2006 není v pořádku. Asi i proto mi vychází úspěšnost 100 %+  * Zjistit, čím se liší nová data, která pořadatelé zveřejnili po prvním vyhodnocení, a jaká mi na nich vychází úspěšnost. 
-- Pokusit se rozchodit a natrénovat MST ParserPokud se to podaří, pokračovat rozcházení hlasování 3 parserů. +  * Více si pohrát s rysy. Naučit se parserům předhazovat rysy. U Malt parseru je to dobře zdokumentováno,MST ne. 
-- Makefile a případné další soubory specifické pro tuto úlohu enést do některého svého repozitáře SVN+  * Přidat jako rys chunk label, a to i pro DZ Parser. 
-- Zjistitzda je Malt parser MST parser také horší, když se mu dá morfologiea o kolik+  * Naivní parser pro telugštinu: poslední uzel visí na kořeni, ostatní uzly na posledním uzlu. Informace, zda závislost mezi dvěma uzly odpovídá tomuto pravidlu, může být rys, který budou parsery sledovat. 
-Zjistit, které rysy co znamenajíProzkoumatzda nepomůže přibrat do značky pád+  * Rozchodit podporu clusteru v makefilech, abych nemusel MST parser pouštět ručně zvlášť (''qmake''). 
-Zdá se, že lemma bylo také součástí morfologické anotace není součástí "obyčejnýchssf souborů. +  * Vyzkoušet neprojektivní parsing MST parserem. 
-- Totéž zřejmě platí o značce slovního druhu – ehlédl jsem, že v souborech ssf se opakuje značka chunku!+  * Zjistit, proč je tolik chyb v syntaktickém značkování, a vylepšit ho. Třeba pomocí nějakého toolkitu pro strojové učení (Mallet apod.) Uvědomit si, že na jednom slovesu zřejmě nemohou viset dvě káčka se stejnými čísly (karma-karta). Taky že většina sloves asi vyžaduje k1. 
 +  * Více si pohrát s konfigurací Malt parseru. 7 algoritmů už jsem vyzkoušel, ale některé z nich mají ještě další parametry (práce s kořenem apod.)které jsem neměnil. 
 +  * Vyhodnotit křivku učení. 
 +  * Vyhodnotit požadavky na procesor, paměť a disk (je třeba nejdříve rozchodit skript). 
 +  * Frekvenční slovníky, abych si trochu udělal představu o častých slovech, případně o jejich syntaktických zvláštnostech. 
 +  * 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 a možná i včetně interpunkce, takže neodpovídají počtu uzlů, které vidím v treebanku
 + 
 +===== Průzkum dat ===== 
 + 
 +Jak je zvykem, máme k dispozici data pro (d)trénink, dtest etest (ta poslední jsou slepá, aspoň zatím). Každý datový soubor je k dispozici jednak s automaticky doplněnou (a zjednoznačněnou) morfologií (lemma, značka POS, morfologické kategorie), jednak bez ní (tj. na morfologické rovině pouze slovní tvar a značka chunku, ta by ale zřejmě měla být iřazená ručně). Každý z uvedených souborů je ještě k dispozici jednak ve formátu CoNLL 2006, jednak v SSF (Shakti Standard Format, pro Indy je domovský, takže by stálo za to zjistit, zda se z něj evodem do CoNLL co neztrácí). 
 + 
 +Následující statistiky pocházejí ze souborů pro dtrénink s automatickou morfologií: 
 + 
 +| Jazyk | Výskytů slov | Tvarů | Lemmat | ChunkPOS | POS | POS+case+postpos | FEATS | 
 +| hindština | 13779 | 3973 | 3134 | 10 | 33 | 297 | 714 | 
 +| bengálština | 6449 | 2997 | 2336 | 14 | 30 | 398 | 367 | 
 +| telugština | 5494 | 2462 | 1403 | 12 | 31 | 409 | 453 | 
 + 
 +Statistiky v tabulce byly získány následujícím příkazem: 
 + 
 +<code bash>$TOOLS/conll_pocet_hodnot_sloupec.pl 4 < hi/dtrain.mconll</code> 
 + 
 +==== Naivní telugu ==== 
 + 
 +V&nbsp;telugských stromech jsem vypozoroval extrémní důsledek slovosledu SOV: poměrně často se stáváže poslední slovo věty visí na kořeni (typicky je to zřejmě sloveso) většina ostatních slov visí na něm. Pro hindštinu a bengálštinu už to neplatí. Následující tabulka ukazuje podíl uzlů v jednotlivých datových souborech, které visely "naivně telugsky" (tj. pokud šlo o poslední uzel, visel na kořeni, jinak na posledním uzlu). Vzhledem k&nbsp;tomu, že na telugštině jinak dosahuju nejnižší úspěšnostiby se tohle mělo nějak využít. 
 + 
 +| Jazyk | dtrain | dtest | 
 +| hi | 35.71 | 34.64 | 
 +| bn | 39.52 | 44.14 | 
 +| te | 73.75 | 76.89 | 
 + 
 +===== Analýza chyb ===== 
 + 
 +Takhle se z morfologických indických dat vyrobí soubor pro Tredkterý obsahuje indické písmo místo WX: 
 + 
 +<code>cat hi/dtest.rmconll | conll_wc2utf.pl -l hi | $TOOLS/conll2csts.pl -y 2006 -l hi | perl -pe 's/<t>\S+\t/<t>/; s/\t.*?</</;' | cstsfs.pl > hi/dtest.fs</code> 
 + 
 +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&nbsp;Tredu koukat. Tady je varianta pro výstup parseru: 
 + 
 +<code>cat hi/dtest.voted.rconll | conll_wc2utf.pl -l hi | $TOOLS/conll2csts.pl -y 2006 -l hi | perl -pe 's/<t>\S+\t/<t>/; s/\t.*?</</;' | cstsfs.pl > hi/dtest.voted.fs</code> 
 + 
 +A takhle spojíme vzorovou anotaci s&nbsp;výstupem parseruabychom viděli chyby: 
 + 
 +<code>conll_pokusy.pl -l hi -t -g hi/dtest.mconll -s hi/dtest.voted.rconll | cstsfs.pl -s dzchyby > hi/dtest.voted.fs</code> 
 + 
 +Tady je ještě jedna alternativa (pozor, tohle je pro změnu okopírováno z&nbsp;Windows). Kromě toho, že jsem opravil některé chyby v&nbsp;''brahmi.pm'' (což se na volání nijak neprojeví), je teď nově možnost vybrat si ze dvou variant výstupní transliterace do latinky''-t sci'' vyvolá vědeckou transliteracikterá se hodí do článků, ale nehodí se pro čtení v&nbsp;Putty, protože používá kombinovanou diakritiku. Pro čtení v&nbsp;Putty použijeme ''-t putty''
 + 
 +<code>C:\Documents and Settings\Dan\Dokumenty\Lingvistika\Projekty\icon-parsing\work>set TOOLS="C:\Documen 
 +ts and Settings\Dan\Dokumenty\Lingvistika\Projekty\padapt\parsingroot\tools" 
 +C:\Documents and Settings\Dan\Dokumenty\Lingvistika\Projekty\icon-parsing\work>perl conll_pokusy.pl 
 +-l te -t sci -g te/dtest.mconll -s te/dtest.voted.rconll | perl %TOOLS%/cstsfs.pl -s dzchyby > te/dt 
 +est.voted.1.fs</code> 
 + 
 +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&nbsp;bengálské větě "(3) তবে / tabé সুদীপ / sudípa ওকে / óké একদিন / ékadina আড়ালে / áđa়াlé ডেকে / đéké বলেছিল / baléčhila কৌতূহল / kautúhala দেখালে / dékhálé তুমি / tumi উঁচুতে / um̃čuté উঠতে / uţhaté অনিমেষ / animéšajsou slova "déké" a "dékhálé" značena jako "VGNF|VM" (zřejmě gerundium), zatímco "baléčhila" a "uthaté" jsou "VGF|VM". Pokud parser u všech vidí jen "VM", pak není divu, že v té větě nasekal několik divokých chyb. 
 + 
 +V&nbsp;hindštině se často na chybách podílí uzel NULL. Spočítat, kolik takových uzlů ve kterém jazyce je
 + 
 +Přinejmenším častá slova by měla být pro parsery viditelná jako samostatný rys uzlu. Např. hindské "कि / ki" ("že") se mi zavěsilo špatně a kdo ví, jestli to není jen proto, že parser viděl pouze značku "CC". Podobně "तो / tó" má taky značku "CC", ale jeho zavěšování asi bude o dost jiné. 
 + 
 +Úspěšnost es 85&nbsp;% je poměrně vysoká a je těžké v&nbsp;těch občasných chybách vysledovat nějaké pravidlo. Přinejmenším v&nbsp;hindštině se mi ale zdá, že často jde o chyby se slovesy či spojkami (koordinace sloves) a často na velkou vzdálenost. 
 + 
 +Příklad problému s&nbsp;koordinací, stejného, jaký měl DZ parser na češtině: "(143) भाई / bháí और / aura भाभी / bhábhí उसके / usaké अच्छा / aččhá व्यवहार / vjavahára करते / karaté". "bháí aura bhábhí" je jasná koordinace dvou podstatných jmen, která pak dohromady tvoří podmět slovesa. Parser je sice správně spojil do koordinace, pak už ale asi viděl jen spojku "aura", zapomněl na podstatná jména pod ní, vzpomněl si, že spojky také spojují celé klauze, a pověsil ji na kořen. 
 + 
 +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&nbsp;lemmatem a zvlášť s&nbsp;pádem a sám se rozhodnout, ve kterém případě mu co pomáhá víc. 
 + 
 +===== Výsledky =====
  
 První výsledky DZ Parseru na vývojových datech: První výsledky DZ Parseru na vývojových datech:
Line 110: Line 175:
 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í, na kterém se podílí! Pozoruhodné je, že zhoršený DZ Parser zlepšuje výsledek hlasování, na kterém se podílí!
 +
 +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:8584:7512
 +bn 8570:8471:5438
 +te 7985:8089:4578
 +
 +labels MST:MALT:DZ
 +hi 6816:6704:5960
 +bn 6967:6215:5314
 +te 5526:4904:4400
 +
 +===== Neprojektivity =====
  
 21:57 lrc-two:/ha/work/people/zeman/icon-parsing/work> cat hi/dtrain.conll hi/dtest.conll | $TOOLS/neproj.pl 21:57 lrc-two:/ha/work/people/zeman/icon-parsing/work> cat hi/dtrain.conll hi/dtest.conll | $TOOLS/neproj.pl
Line 139: Line 218:
   Label accuracy score:       685 / 1250 * 100 = 54.80 %   Label accuracy score:       685 / 1250 * 100 = 54.80 %
  
-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):+===== Parsovací algoritmy Malt parseru =====
  
-unlabeled MST:MALT:DZ +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 MST, takže bude potřeba upravit váhy při hlasování. Současný výsledek Malt parseru je lepší než dosud nejlepší výsledek dosažený hlasováním!
-hi 8616:8584:7512 +
-bn 8570:8471:5438 +
-te 7985:8089:4578+
  
-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 
 +/net/work/people/zeman/icon-parsing/work/hi/dtest.malt.eval.txt 
 +  Labeled   attachment score812 / 1250 * 100 = 64.96 % 
 +  Unlabeled attachment score1082 / 1250 * 100 = 86.56 % 
 +  Label accuracy score:       847 / 1250 * 100 = 67.76 % 
 +Thu Nov 19 18:41:45 CET 2009 
 +/net/work/people/zeman/icon-parsing/work/bn/dtest.malt.eval.txt 
 +  Labeled   attachment score491 / 811 * 100 = 60.54 % 
 +  Unlabeled attachment score693 / 811 * 100 = 85.45 % 
 +  Label accuracy score:       509 / 811 * 100 = 62.76 % 
 +Thu Nov 19 18:41:46 CET 2009 
 +/net/work/people/zeman/icon-parsing/work/te/dtest.malt.eval.txt 
 +  Labeled   attachment score304 / 675 * 100 = 45.04 % 
 +  Unlabeled attachment score: 541 / 675 * 100 = 80.15 % 
 +  Label accuracy score:       339 / 675 * 100 = 50.22 % 
 + 
 +==== covproj ==== 
 + 
 +Bengálština ještě trochu lepší, možná nesignifikantně. Ostatní ne. 
 + 
 +Thu Nov 19 19:47:14 CET 2009 
 +/net/work/people/zeman/icon-parsing/work/hi/dtest.malt.eval.txt 
 +  Labeled   attachment score: 801 / 1250 * 100 = 64.08 % 
 +  Unlabeled attachment score: 1079 / 1250 * 100 = 86.32 % 
 +  Label accuracy score:       836 / 1250 * 100 = 66.88 % 
 +Thu Nov 19 19:47:15 CET 2009 
 +/net/work/people/zeman/icon-parsing/work/bn/dtest.malt.eval.txt 
 +  Labeled   attachment score: 500 / 811 * 100 = 61.65 % 
 +  Unlabeled attachment score: 694 / 811 * 100 = 85.57 % 
 +  Label accuracy score:       516 / 811 * 100 = 63.63 % 
 +Thu Nov 19 19:47:15 CET 2009 
 +/net/work/people/zeman/icon-parsing/work/te/dtest.malt.eval.txt 
 +  Labeled   attachment score: 303 / 675 * 100 = 44.89 % 
 +  Unlabeled attachment score: 542 / 675 * 100 = 80.30 % 
 +  Label accuracy score:       330 / 675 * 100 = 48.89 % 
 + 
 +==== covnonproj ==== 
 + 
 +Zlepšila se hindština. Bengálština se zhoršila, telugština zůstala. 
 + 
 +Thu Nov 19 21:21:46 CET 2009 
 +/net/work/people/zeman/icon-parsing/work/hi/dtest.malt.eval.txt 
 +  Labeled   attachment score: 811 / 1250 * 100 = 64.88 % 
 +  Unlabeled attachment score: 1087 / 1250 * 100 = 86.96 % 
 +  Label accuracy score:       843 / 1250 * 100 = 67.44 % 
 +Thu Nov 19 21:21:46 CET 2009 
 +/net/work/people/zeman/icon-parsing/work/bn/dtest.malt.eval.txt 
 +  Labeled   attachment score: 492 / 811 * 100 = 60.67 % 
 +  Unlabeled attachment score: 682 / 811 * 100 = 84.09 % 
 +  Label accuracy score:       510 / 811 * 100 = 62.89 % 
 +Thu Nov 19 21:21:47 CET 2009 
 +/net/work/people/zeman/icon-parsing/work/te/dtest.malt.eval.txt 
 +  Labeled   attachment score: 305 / 675 * 100 = 45.19 % 
 +  Unlabeled attachment score: 542 / 675 * 100 = 80.30 % 
 +  Label accuracy score:       329 / 675 * 100 = 48.74 % 
 + 
 +==== stackproj ==== 
 + 
 +Není nejhorší, ale taky v ničem nejlepší. 
 + 
 +Thu Nov 19 21:29:06 CET 2009 
 +/net/work/people/zeman/icon-parsing/work/hi/dtest.malt.eval.txt 
 +  Labeled   attachment score: 830 / 1250 * 100 = 66.40 % 
 +  Unlabeled attachment score: 1082 / 1250 * 100 = 86.56 % 
 +  Label accuracy score:       871 / 1250 * 100 = 69.68 % 
 +Thu Nov 19 21:29:06 CET 2009 
 +/net/work/people/zeman/icon-parsing/work/bn/dtest.malt.eval.txt 
 +  Labeled   attachment score: 510 / 811 * 100 = 62.89 % 
 +  Unlabeled attachment score: 690 / 811 * 100 = 85.08 % 
 +  Label accuracy score:       524 / 811 * 100 = 64.61 % 
 +Thu Nov 19 21:29:07 CET 2009 
 +/net/work/people/zeman/icon-parsing/work/te/dtest.malt.eval.txt 
 +  Labeled   attachment score: 309 / 675 * 100 = 45.78 % 
 +  Unlabeled attachment score: 546 / 675 * 100 = 80.89 % 
 +  Label accuracy score:       339 / 675 * 100 = 50.22 % 
 + 
 +==== stackeager ==== 
 + 
 +Přestože umožňuje neprojektivity, hindština i bengálština jsou výrazně horší. 
 +Zato se vytáhla telugština, kde neprojektivity téměř nejsou! 
 + 
 +Thu Nov 19 21:44:15 CET 2009 
 +/net/work/people/zeman/icon-parsing/work/hi/dtest.malt.eval.txt 
 +  Labeled   attachment score: 761 / 1250 * 100 = 60.88 % 
 +  Unlabeled attachment score: 1022 / 1250 * 100 = 81.76 % 
 +  Label accuracy score:       813 / 1250 * 100 = 65.04 % 
 +Thu Nov 19 21:44:16 CET 2009 
 +/net/work/people/zeman/icon-parsing/work/bn/dtest.malt.eval.txt 
 +  Labeled   attachment score: 498 / 811 * 100 = 61.41 % 
 +  Unlabeled attachment score: 680 / 811 * 100 = 83.85 % 
 +  Label accuracy score:       514 / 811 * 100 = 63.38 % 
 +Thu Nov 19 21:44:17 CET 2009 
 +/net/work/people/zeman/icon-parsing/work/te/dtest.malt.eval.txt 
 +  Labeled   attachment score: 303 / 675 * 100 = 44.89 % 
 +  Unlabeled attachment score: 547 / 675 * 100 = 81.04 % 
 +  Label accuracy score:       336 / 675 * 100 = 49.78 % 
 + 
 +==== stacklazy ==== 
 + 
 +Na hindštině je to maximum, ostatní se zhoršily. 
 + 
 +Thu Nov 19 21:52:53 CET 2009 
 +/net/work/people/zeman/icon-parsing/work/hi/dtest.malt.eval.txt 
 +  Labeled   attachment score: 823 / 1250 * 100 = 65.84 % 
 +  Unlabeled attachment score: 1095 / 1250 * 100 = 87.60 % 
 +  Label accuracy score:       853 / 1250 * 100 = 68.24 % 
 +Thu Nov 19 21:52:54 CET 2009 
 +/net/work/people/zeman/icon-parsing/work/bn/dtest.malt.eval.txt 
 +  Labeled   attachment score: 480 / 811 * 100 = 59.19 % 
 +  Unlabeled attachment score: 687 / 811 * 100 = 84.71 % 
 +  Label accuracy score:       496 / 811 * 100 = 61.16 % 
 +Thu Nov 19 21:52:55 CET 2009 
 +/net/work/people/zeman/icon-parsing/work/te/dtest.malt.eval.txt 
 +  Labeled   attachment score: 307 / 675 * 100 = 45.48 % 
 +  Unlabeled attachment score: 544 / 675 * 100 = 80.59 % 
 +  Label accuracy score      336 / 675 * 100 = 49.78 %
  

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