Table of Contents
Výsledky
Čeština PDT 2.0
Poslední test proběhl 15.5.2007 s revizí 4. Trénink trval 27 minut, parsing 35 minut.
train.pl -i parser-pdt.ini > pracovni/pdt2.stat parse.pl -i parser-pdt.ini -m pracovni/pdt2.stat > pracovni/pdt2dtest.dz.csts
A 158962 - G 118984 - B 39978 - P 0.748505932235377.
Stránka Czech Parsing tvrdí, že jsem na d-testu uměl 75 %, ale nevím, která verze parseru to měla být.
Arabština PADT 1.0
Korpus PADT obsahuje celkem 113700 tokenů a 2995 vět (stromů). Průměrná délka věty je 38 tokenů (v češtině je to jen asi 17, tedy méně než polovina!) Není závazně rozdělen na trénovací a testovací data. Obsahuje pouze ruční morfologickou anotaci. Ta je údajně na části korpusu (AFP, UMH a XIN) velmi nekvalitní.
Rozdělil jsem si korpus na trénovací a testovací data. Dat je málo, takže si nenechávám stranou žádný e-test. Každá desátá věta je testovací, tedy: trénink 2696 stromů a 102716 tokenů, test 299 stromů a 10984 tokenů.
Abych mohl otestovat úspěšnost na jiných než ručních značkách, také jsem na korpus pustil jednoduchý tagger. Pro natrénování taggeru jsem vybral soubor mtrain.csts z train.csts tak, že jsem vynechal věty z morfologicky nekvalitních zdrojů AFP, UMH a XIN. Zbylo 1181 vět a 44575 slov. Pro testování taggeru jsem obdobným způsobem vybral mtest.csts z test.csts. Zbylo 131 vět a 4474 slov. Když na mtrainu natrénujeme Hajičův tagger a pustíme ho na mtest, dostaneme úspěšnost 20 % (896/4474) na lemmatech a 87,8 % (3926/4474) na značkách.
Na značkách z Krůzova taggeru
Krůzův tagger má sám o sobě značkovou úspěšnost 80,6 % (G 3606). Neznámá slova dostávají prázdnou značku. Když místo ní dosadíme první značku od morfologického analyzátoru Tima Buckwaltera, dostaneme úspěšnost 86,1 % (G 3852).
Test probíhá 15.5.2007 s revizí parseru č. 4. Trénuje se na značkách z Krůzova taggeru (data/padt/trainmm.kruza.csts).
train.pl -i parser-padt.ini > pracovni/padt.stat parse.pl -i parser-padt.ini -m pracovni/padt.stat > pracovni/padt.csts
A 10984 - G 6023 - B 4961 - P 0.548343044428259.
Na ručních značkách
V konfiguračním souboru parser-padt.ini
se musí změnit cesty ke vstupním datům. Místo /home/zeman/data/padt/trainmm.kruza.csts
se trénuje na /home/zeman/data/padt/trainmm.csts
. Místo /home/zeman/data/padt/testmm.kruza.bezneznamych.csts
se testuje na /home/zeman/data/padt/testmm.csts
. Parametr mzdroj0
se musí změnit z “MD” na prázdný řetězec. Parametr mzdroj1
se musí změnit z “kruza” na prázdný řetězec.
train.pl -i parser-padt.ini > pracovni/padt-rucni.stat parse.pl -i parser-padt.ini -m pracovni/padt-rucni.stat > pracovni/padt-rucni.csts
A 10984 - G 7091 - B 3893 - P 0.645575382374363.
Výsledky CoNLL 2006
Arabština
train.pl < /net/data/CoNLL/2006/arabic/padt/artrain.02.csts parse.pl < /net/data/CoNLL/2006/arabic/padt/artest.02.csts
G 3086 - B 2287 - P 57,44 %. Ruční značky (jiné nemáme) převedené z CoNLL do PDT. Slova a hesla obsahují za podtržítkem Buckwalterovu transliteraci tak jako v CoNLL. Ta je ovšem převedena na malá písmena, což můj parser dělá i jinde.
Výsledky CoNLL 2007
Viz též Data CoNLL.
Arabština
train.pl < /net/data/conll/2007/arabic/padt/ardtrain.csts parse.pl < /net/data/conll/2007/arabic/padt/ardtest.csts
G 3591 - P = 61,1 %
Baskičtina
train.pl < /net/data/CoNLL/2007/basque/3lbBasque/eudtrain.csts parse.pl < /net/data/CoNLL/2007/basque/3lbBasque/eudtest.csts
A 4334 - G 2630 - B 1704 - P 0.606829718504845.
Čeština
Nastavení: stejné jako pro ostatní jazyky, podle výchozího parser.ini
. Zvláštní zpracování koordinací je vypnuté. Značky se sice upravují, ale z tvaru CoNLL, v důsledku čehož parser nemá k dispozici informaci o pádu.
train.pl < /net/data/CoNLL/2007/czech/pdt/csdtrain.csts parse.pl < /net/data/CoNLL/2007/czech/pdt/csdtest.csts
A 5760 - G 3067 - B 2693 - P 0.532465277777778.
Zkouším primitivní model přiřazení syntaktických značek závislostem. Model přiřazuje nejčetnější syntaktickou značku pro danou dvojici morfologických značek rodiče a dítěte. Trénuje se na ručně přiřazených značkách.
atrain.pl < /net/data/conll/2007/czech/pdt/csdtrain.csts > cs.astat
Při nasazení modelu na trénovací (!) data je úspěšnost 85 %: A 451536 - G 385252 - B 66284 - P 0.853203288331384. Překvapivé je, že na testovacích datech to není horší, ale dokonce nepatrně lepší: A 6124 - G 5237 - B 887 - P 0.855160026126715.
Další pokus. Tentokrát pouštím na stromy vypadlé z parseru. První běh stavěl stromy podle návrhů parseru, druhý podle původní ruční anotace. Druhý by tedy měl odpovídat výše naměřenému výsledku na testovacích datech, ale neodpovídá.
12:49 zen:/export/home/zeman/projekty/parser> aclass.pl < csdtest.dz.csts A 6124 - G 3355 - B 2769 - P 0.547844546048334 12:49 zen:/export/home/zeman/projekty/parser> aclass.pl < csdtest.dz.csts A 6124 - G 4875 - B 1249 - P 0.796048334421946
Potřebujeme umět skriptu říct pomocí parametrů na příkazovém řádku, podle jaké anotace se má stavět strom, na jehož základě budeme odhadovat syntaktické značky.
Potřebujeme umět skriptu předat cestu k modelu, podle kterého má syntaktické značky odhadovat.
Potřebujeme umět skriptu říct, že místo testování úspěšnosti chceme vypsat CSTS s přidanými syntaktickými značkami.
Čínština
train.pl < /net/data/CoNLL/2007/chinese/sinica/zhdtrain.csts parse.pl < /net/data/CoNLL/2007/chinese/sinica/zhdtest.csts
A 2277 - G 1513 - B 764 - P 0.664470794905577.
Italština
train.pl < /net/data/CoNLL/2007/italian/isst/itdtrain.csts parse.pl < /net/data/CoNLL/2007/italian/isst/itdtest.csts
A 7643 - G 4866 - B 2777 - P 0.63666099699071.
Katalánština
train.pl < /net/data/CoNLL/2007/catalan/cess-cat/cadtrain.csts parse.pl < /net/data/CoNLL/2007/catalan/cess-cat/cadtest.csts
A 10971 - G 6768 - B 4203 - P 0.616899097621001.
Maďarština
train.pl < /net/data/CoNLL/2007/hungarian/szeged/hudtrain.csts parse.pl < /net/data/CoNLL/2007/hungarian/szeged/hudtest.csts
A 5995 - G 3164 - B 2831 - P 0.527773144286906.
Řečtina
train.pl < /net/data/CoNLL/2007/greek/gdt/eldtrain.csts parse.pl < /net/data/CoNLL/2007/greek/gdt/eldtest.csts
A 4874 - G 3122 - B 1752 - P 0.640541649569142.
Turečtina
train.pl < /net/data/CoNLL/2007/turkish/metu/trdtrain.csts parse.pl < /net/data/CoNLL/2007/turkish/metu/trdtest.csts
A 6210 - G 4037 - B 2173 - P 0.650080515297907.
Atanas Čanev, jaro 2006 až 2008
Atanas se mi ozval, že zkouší použít DZ Parser na italský TUT (Turin University Treebank) a na pár dalších (BulTreeBank, Slovene Dependency Treebank). Úspěšnost nebyla nic moc a měl nějaké problémy s nastavením. Na poslední mail z 13.4.2006 jsem mu téměř 2 roky neodpověděl a teď už to ztrácí smysl.
Pokusy s TUT mám na nilu jako samostatný projekt ve složce projekty\tut. Na zenu tenhle projekt nemám, tam mám jen projekty/parser. Dnes (19.2.2008) ho tam kopíruji, ale cílem je sloučit ho se složkou parser a data odstěhovat do příslušných složek na data.
20.3.2006
Tyto výsledky jsem zaznamenal při prvních pokusech s Turínským treebankem. Parser používal původní turínské morfologické značky (snad přiřazené ručně, ale nevím). Značky nebyly nijak upravovány. Koordinace nebyla zpracovávána odlišně od pravých závislostí. Celá data obsahují 1500 vět, které jsem si rozdělil na prvních 1350 trénovacích a zbývajících 150 testovacích. Průměrná délka turínské věty je 27,7 tokenů (v češtině je to jen asi 17). Trénovací data obsahují 37557 tokenů. Testovací data obsahují 4059 tokenů.
Parsing všech (i trénovacích!) dat parserem natrénovaným na všech datech:
A 41616 - G 30254 - B 11362 - P 72,7 %
Výsledky na testovacích datech:
A 4059 - G 2862 - B 1197 - P 70,5 %
19.2.2008
Následující příkazy nefungují, protože DZ Parser zatím není možné spustit z jiné složky, než ve které se nachází. Perl nenajde knihovny .pm.
cd /home/zeman/projekty/tut ../parser/train.pl -i parser-tut.ini < tut.dz.csts ../parser/parse.pl -i parser-tut.ini < test.dz.csts
Chtělo by to přidat nějakou inicializaci (BEGIN), která zařídí, že skript se dívá po knihovnách ve složce, ve které sám leží, aniž by tato složka musela být aktuální.
BEGIN {my $path = `dirname $0`; $path =~ s/\r?\n$//; unshift(@INC, $path) unless(grep {$_ eq $path} @INC)}
Přidal jsem výše uvedený řádek do train.pl a funguje to. Měl bych totéž přidat ještě do parse.pl a všechno uložit do SVN.
Dále se zdá, že současná verze parseru nepřečte treebank, který není v UTF-8, ale v ISO 8859-1 (italština). Jakmile narazí na ne-ASCII znak, vyhodnotí ho jako začátek poškozeného znaku UTF-8, ohlásí chybu a skončí. Pro tuto chvíli to řeším tím, že převádím Turínský treebank do UTF-8. Je to divné, protože na první pohled treebank vůbec neobsahuje ne-ASCII znaky. Italské samohlásky s accentem grave se tu totiž objevují jako ASCII samohlásky následované apostrofem. Jak se zdá, týká se to výhradně “většítkových uvozovek” (“»”).
../parser/train.pl -i parser-tut.ini < train.dz.utf.csts > tut.utf.stat ../parser/parse.pl -i parser-tut.ini --model tut.utf.stat < test.dz.csts
17:33:59 Statistika obsahuje 150383 událostí. Počet vět = 1500 Počet slov = 41616 Maska pro jména souborů s daty: - Nalezeno 1 souborů. 17:34:01 Otevírá se soubor - 17:34:01 N-tice: Zpracovává se věta 0. Výpočet skončil v 17:34:01. Program běžel 00:00:14 hodin.
20.2.2008
Propracoval jsem se až k puštění parsingu, ale stěžuje si, že nemůže otevřít soubor zakazy_preskoceni.txt. Tenhle soubor pochopitelně pro italštinu vůbec nemám, ale divím se, že ho tahle verze ještě vyžaduje, všechny podobné externí zdroje jsem se totiž už dávno snažil zakomponovat do trénování. Snad bude stačit vypnout zákaz přeskakování v konfiguračním souboru.
Nyní se pro změnu shání po souboru rematizatory. Tohle se zřejmě konfigurovat nedá, tak prostě nalinkuju český soubor ze sousední složky.
A 4059 - G 2925 - B 1134 - P 0.720620842572062.
Nyní je na čase ověřit, jak se současná verze parseru liší od poslední verze uložené v SVN. Přinejmenším úprava pro nalezení knihoven by se tam uložit měla. Ukládám do SVN revizi 5.
Nyní by to chtělo uklidit. Projekt tut zrušit, data přestěhovat mezi data, konfiguraci parseru přestěhovat do projektu parser.
Bulharština
Atanas mi ještě psal o problémech, které měl s rozborem bulharštiny z BulTreeBanku. U některých vět, které obsahovaly 2 slova (ve skutečnosti to byly nadpisy), na výstupu dostal pouze 1 slovo. Nemám dost podkladů, abych tuto chybu zopakoval (například nemám jeho trénovací data), takže tento problém nebudu řešit.
Atanas hlásil na bulharštině úspěšnost 63,78 % (CoNLL bez interpunkce, unlabelled).
Slovinština
Atanas hlásil na slovinštině úspěšnost 58,34 % (CoNLL bez interpunkce, unlabelled).