[ Skip to the content ]

Institute of Formal and Applied Linguistics Wiki


[ Back to the navigation ]

This is an old revision of the document!


Table of Contents

Pokusy s DZ Parserem pro CoNLL

Tato stránka původně vznikla jako záznam o tom, jakým způsobem jsem spouštěl parser během soutěže v parsingu CoNLL 2007, abych tyto pokusy dokázal zopakovat. Postupně se mění na stránku o pokusech s daty CoNLL obecně (nejen 2007). Data leží v /net/data/conll. Parser odsud čte, ale nepíše sem. Pro soubory související se syntaktickou analýzou těchto dat mám samostatnou složku /net/work/people/zeman/conll-dzparser.

Proměnné

Používám proměnné prostředí, které mám nastavené ve svém .cshrc takto:

setenv PARSINGROOT /net/work/people/zeman/parsing
setenv TOOLS $PARSINGROOT/tools
setenv INTERSET ~zeman/projekty/interset
setenv PARSER ~zeman/projekty/parser

Kromě toho mám ve své PATH přidáno $INTERSET/bin a v PERLLIB a PERL5LIB mám mj. $INTERSET/lib a $PARSINGROOT/lib.

Další proměnné, určené přímo pro rozbor dat CoNLL mým parserem:

setenv DATA /net/data/conll
setenv OUTPUT /net/work/people/zeman/conll-dzparser

Zpracování

Každý jazyk zkouším zpracovat jednak s původními značkami, jednak se značkami převedenými do české sady PDT. Základní zpracování (bez přiřazování syntaktických značek) předpokládá pouze dva kroky: natrénování modelu na průběžných trénovacích datech a jeho otestování na průběžných testovacích datech. U základního zpracování používáme výchozí, jazykově nezávislé nastavení parseru.

cd $OUTPUT
setenv ROK 2007
setenv JAZYK cs
$PARSER/train.pl < $DATA/$ROK/$JAZYK/dtrain.csts > $JAZYK.stat
($PARSER/parse.pl -m $JAZYK.stat < $DATA/$ROK/$JAZYK/dtest.csts > $JAZYK.dtest.dz.csts) >& $JAZYK.dtest.log

Výsledky

Následující tabulka ukazuje úspěšnost DZ parseru s výchozím nastavením na průběžných testovacích datech CoNLL, s původními značkami CoNLL (tabulátory, rysy oddělené svislítky).

Jazyk Rok A G B P
ar 2006 3955 2555 1400 64,6
ar 2007 5873 3757 2116 64,0
bg 2006 4677 3178 1499 67,9
ca 2007 10971 7670 3301 69,9
cs 2006 5643 3822 1821 67,7
cs 2007 5760 4061 1699 70,5
da 2006 5470 3792 1678 69,3
de 2006 5403 3704 1699 68,6
el 2007 4874 3132 1742 64,3
en 2007 9529 6163 3366 64,7
eu 2007 4334 2477 1857 57,2
hu 2007 5995 4088 1907 68,2
it 2007 7643 5556 2087 72,7
ja 2006 3384 2524 860 74,6
nl 2006 6187 4579 1608 74,0
pt 2006 6719 4941 1778 73,5
sl 2006 4307 2765 1542 64,2
sv 2006 7140 5075 2065 71,1
tr 2007 6210 3920 2290 63,1
zh 2006 1839 1269 570 69,0
zh 2007 2277 1506 771 66,1

Následující tabulka srovnává výsledky s původními značkami CoNLL a výsledky se značkami PDT. Data jsou dtest. Nastavení parseru je výchozí, tj. selektivní lexikalizace není zapnuta, ale úprava (zkracování) značek ve výchozí konfiguraci omylem zapnuté bylo. I tak se občas dostal do značky tabulátor a takové značky se pak chybně ukládají ve statistice. Poslední sloupec říká, zda je změna úspěšnosti statisticky významná podle McNemarova testu na úrovni 0,05 (χ2 ≥ 3,84).

Jazyk Rok Značky A G B P SV
ar 2006 CoNLL 3955 2555 1400 64,6
ar 2006 PDT 3955 2595 1360 65,6 ne
ar 2007 CoNLL 5873 3757 2116 64,0
ar 2007 PDT 5873 3793 2080 64,6 ne
bg 2006 CoNLL 4677 3178 1499 67,9
bg 2006 PDT 4677 3338 1339 71,4 ano
cs 2006 CoNLL 5643 3822 1821 67,7
cs 2006 PDT 5643 4050 1593 71,8 ano
cs 2007 CoNLL 5760 4061 1699 70,5
cs 2007 PDT 5760 4294 1466 74,5 ano
da 2006 CoNLL 5470 3792 1678 69,3
da 2006 PDT 5470 3804 1666 69,5 ne
en 2007 CoNLL 9529 6163 3366 64,7
en 2007 PDT 9529 6254 3275 65,6 ano
sv 2006 CoNLL 7140 5075 2065 71,1
sv 2006 PDT 7140 5232 1908 73,3 ano
zh 2006 CoNLL 1839 1269 570 69,0
zh 2006 PDT 1839 1252 587 68,1 ne
zh 2007 CoNLL 2277 1506 771 66,1
zh 2007 PDT 2277 1449 828 63,6 ano

Převod značek do sady PDT pomohl všude kromě čínštiny, i když u některých jazyků změna nebyla statisticky významná. U čínštiny lze zhoršení snadno vysvětlit. Čínská sada značek se velmi liší od ostatních, do Intersetu se vejde jen nepatrný zlomek informace, kterou značky nesou, takže ztráta informace při převodu značek je mimořádně veliká.

Následující tabulka je opravou té předchozí. Značky obsahující tabulátory už se ukládají správně, úprava značek je opravdu vypnutá.

Jazyk Rok Značky A G B P SV
ar 2006 CoNLL 3955 2527 1428 63,9
ar 2006 PDT 3955 2640 1315 66,8 ano
ar 2007 CoNLL 5873 3813 2060 64,9
ar 2007 PDT 5873 3771 2102 64,2 ne
bg 2006 CoNLL 4677 3380 1297 72,3
bg 2006 PDT 4677 3331 1346 71,2 ne
cs 2006 CoNLL 5643 3617 2026 64,1
cs 2006 PDT 5643 3618 2025 64,1 ne
cs 2007 CoNLL 5760 3981 1779 69,1
cs 2007 PDT 5760 3952 1808 68,6 ano
da 2006 CoNLL 5470 3825 1645 69,9
da 2006 PDT 5470 3858 1612 70,5 ne
en 2007 CoNLL 9529 6725 2804 70,6
en 2007 PDT 9529 6236 3293 65,4 ano
sv 2006 CoNLL 7140 5071 2069 71,0
sv 2006 PDT 7140 5181 1959 72,6 ano
zh 2006 CoNLL 1839 1286 553 69,9
zh 2006 PDT 1839 1258 581 68,4 ne
zh 2007 CoNLL 2277 1570 707 69,0
zh 2007 PDT 2277 1450 827 63,7 ano

Starší poznámky

Postup zpracování jednoho jazyka CoNLL:

$cesta je cesta k datům daného jazyka. Např. pro češtinu je to “/net/data/conll/2007/czech/pdt”.
$xx je kód daného jazyka podle ISO 639-1.
$PARSINGROOT je cesta k mé pracovní kopii SVN balíku s parsery
$parser je cesta k mému parseru, tedy ~zeman/projekty/parser

$PARSINGROOT/tools/conll2csts.pl -l $xx < $cesta/${xx}train.conll > $cesta/${xx}train.csts
$PARSINGROOT/tools/conll2csts.pl -l $xx < $cesta/${xx}test.conll > $cesta/${xx}test.csts
$parser/train.pl < $cesta/${xx}train.csts > $cesta/${xx}.stat
$parser/atrain.pl < $cesta/${xx}train.csts > $cesta/${xx}.astat
$parser/parse.pl -m $cesta/${xx}.stat < $cesta/${xx}test.csts > $cesta/${xx}test.dz.csts
$parser/aclass.pl -m $cesta/${xx}.astat -z mdgdz < $cesta/${xx}test.dz.csts > $cesta/${xx}test.dz.a.csts
$PARSINGROOT/tools/csts2conll.pl < $cesta/${xx}test.dz.a.csts > $cesta/${xx}test.dz.conll

Takhle to pro čínštinu 2006 nefunguje. Jednak máme dtrain a dtest, jednak při zavolání z cesty s daty (ale s plnou cestou, jak je uvedeno výše) parser stávkuje a nenačte data ze standardního vstupu. Měl by alespoň vypsat cestu ke konfiguračnímu souboru, který používá.

setenv parser ~zeman/projekty/parser
setenv cesta /net/data/conll/2006/chinese/sinica
setenv xx zh
$parser/train.pl < $cesta/${xx}dtrain.csts > $cesta/${xx}.stat
$parser/parse.pl -m $cesta/${xx}.stat < $cesta/${xx}dtest.csts > $cesta/${xx}dtest.dz.csts
~zeman/projekty/interset/bin/csts-zh-conll-cs-pdt.pl < $cesta/${xx}dtrain.csts > $cesta/${xx}dtrain.pdt.csts
~zeman/projekty/interset/bin/csts-zh-conll-cs-pdt.pl < $cesta/${xx}dtest.csts > $cesta/${xx}dtest.pdt.csts
$parser/train.pl < $cesta/${xx}dtrain.pdt.csts > $cesta/${xx}.pdt.stat
$parser/parse.pl -m $cesta/${xx}.pdt.stat < $cesta/${xx}dtest.pdt.csts > $cesta/${xx}dtest.pdt.dz.csts

Čeština 2006

setenv cesta /net/data/conll/2006/czech/pdt
setenv xx cs
cd $cesta
csts_convert_tags.pl -f cs::conll -t cs::pdt < cstrain.csts > cstrain.pdttags.csts
csts_convert_tags.pl -f cs::conll -t cs::pdt < cstest.csts > cstest.pdttags.csts
$PARSER/train.pl < $cesta/${xx}train.pdttags.csts > $cesta/${xx}.pdttags.stat
$PARSER/parse.pl -m $cesta/${xx}.pdttags.stat < $cesta/${xx}test.pdttags.csts > $cesta/${xx}test.pdttags.dz.csts

Výsledky (365 vět, které CoNLL dodalo jako testovací): A 5853 - G 4197 - B 1656 - P 71,71 %

Parser (i trénování) byl spuštěn s výchozími parametry bez konfiguračního souboru. Neměl tušení, že zpracovává svůj rodný jazyk. Kromě toho, že testovací data jsou jiná (a podstatně menší), než jsem měl přímo při práci s PDT, také chybí přídavné informace u lemmat (protože je CoNLL částečně přesunulo do atributu Sem, jehož hodnotu jsem při převádění značek zpět na PDT zahodil). Parser z nich využíval informace o křestním jménu a příjmení. Na druhou stranu parseru mohlo pomoct, že pracujeme s ručně přiřazenými značkami.


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