[ 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

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 2007, s původními značkami CoNLL (tabulátory, rysy oddělené svislítky):

Jazyk A G B P
ar 5873 3757 2116 64,0
ca 10971 7670 3301 69,9
cs 5760 4061 1699 70,5
el 4874 3132 1742 64,3
en 9529 6163 3366 64,7
eu 4334 2477 1857 57,2
hu 5995 4088 1907 68,2
it 7643 5556 2087 72,7
tr 6210 3920 2290 63,1
zh 2277 1506 771 66,1

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

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 ]