360 likes | 449 Views
Automatické přiřazování funktorů v Pražském závislostním korpusu. Zdeněk Žabokrtský student ČVUT FEL, obor výpočetní technika e-mail: zabokrtz@cs.felk.cvut.cz téma diplomové práce: Převod z analytických do tektogramatických stromů v PDT vedoucí: Ivana Kruijff-Korbayová.
E N D
Automatické přiřazování funktorův Pražském závislostním korpusu Zdeněk Žabokrtský student ČVUT FEL, obor výpočetní technika e-mail: zabokrtz@cs.felk.cvut.cz • téma diplomové práce: Převod z analytických do tektogramatických stromů v PDT • vedoucí: Ivana Kruijff-Korbayová
Automatické přiřazování funktorův Pražském závislostním korpusu raw text morphologically tagged text analytic tree structures (ATS) Automatic functor assignement (AFA) tectogrammatical tree structures (TGTS)
Příklad TGTS • Podle předběžných odhadů se totiž počítá, že do soukromého vlastnictví bude prodáno minimálně 10000 bytů • AFA = klasifikace uzlů TGTS do 60 tříd
Výchozí podmínky • znalosti o přiřazování funktorů nejsou k dispozici ve formě pravidel, anotátoři se často řídí intuicí • anotátoři berou při přiřazování v úvahu celý strom; není známa minimální velikost „kontextu“ nezbytná pro správné přiřazení funktorů • předběžná měření: četnost funktorů je velmi nerovnoměrná (15 funktorů pokrývá 90% uzlů) • omezené množství hotových TGTS • dostupné TGTS obsahují nedokonalá data • nejednoznačnost - více funktorů u jednoho uzlu • neúplnost - některé uzly jestě nemají funktor
Očekávané potíže • za roh - DIR3 • za hodinu - TWHEN • za svobodu - OBJ • po otci • TWHEN (Přišel po otci.) • NORM (Jmenuje se po otci.) • HER (Zdědil dům po otci.) • . . .
Vhodná velikost kontextu pro určení funktoru uzlu U a) jen uzel U b) celý strom c) uzel U a nadřízený uzel d) uzel U a sourozenci
Použité atributy 1) výběr 10 příznaků • tvar, lemma, morfologická značka a analytická funkce podřízeného i nadřízeného uzlu • funktor podřízeného uzlu, • podřadící spojka nebo předložka 2) extrakce 3 dalších příznaků • slovní druh podřízeného a nadřízeného uzlu • pád podřízeného uzlu • Výsledek: vektor třinácti (12+1) symbolických příznaků pro každou hranu • AFA klasifikace vektorů s 12 symbolickými příznaky do 60 tříd
Ukázka dat zastavme :zastavit1 :vmp1a:v:pred:okamz_ik :okamz_ik :nis4a :n:4:na:adv:tfhl zastavme :zastavit1 :vmp1a:v:pred:ustanoveni_:ustanoveni_:nns2a :n:2:u :adv :loc normy :norma :nfs2a :n:atr :nove_ :novy_ :afs21a :a:0: :atr :rstr normy :norma :nfs2a :n:atr :pra_vni_ :pra_vni_ :afs21a:a:0: :atr :rstr ustanoveni_ :ustanoveni_:nns2a :n:adv:normy :norma :nfs2a :n:2: :atr :pat
Předzpracování dat • Dostupná data - 18 souborů po 50 TGTS 1) rozdělení (náhodný výběr) trénovací množina - 15 souborů testovací množina - 3 soubory 2) transformace ze stromu do seznamu hran, výběr a extrakce příznaků 3) ostranění vektorů s nejednozně nebo neúplně vyplněnými hodnotami příznaků 4) odstranění diakritiky • Výsledek: • 6049 vektorů v trénovací množině • 1089 vektorů v testovací množině
Metody doplňování funktorů 1. Metody založené na slovnících (dictionary-based methods) • slovníky příslovcí, podřadících spojek ... • slovníky se získávají z trénovací množiny a z manuálu pro anotátory 2. Metody založené na pravidlech (rule-based methods) - nepoužívají slovní tvar ani lemma a) pravidla z manuálu pro anotátory a ručně odvozená pravidla b) pravidla získaná pomocí strojového učení
Metody založené na slovnících:Porovnávání s trénovacími vektory(similarity) • slovník = všechny vektory z trénovací množiny • na prostoru vektorů příznaků se zavede metrika, hledá se nejbližší soused vzhledem k metrice • výpočet metriky • za každý příznak, ve kterém se vektory liší, se přičítá váha příznaku • příklad: • hrana z testovací množiny: „zálohy na daně“ • nejpodobnější hrana z trénovací množiny: „návrh na stanovení“ , dolní uzel je PAT
Metody založené na slovnících:Příslovce (adverbs) • slovník obsahuje 290 dvojic (příslovce, funktor) • slovník vznikl sloučením příslovcí z trénovací množiny a z manuálu pro anotátory • pouze „jednoznačná“ příslovce • ukázka ze slovníku: ani rhem apropo_ att aspon_ rhem be_z_ne_ mann bezma_la rhem bezmocne_ resl bezplatne_ mann
Metody založené na slovnících:Podřadící spojky (subconj) • slovník obsahuje 38 dvojic (spojka, funktor) • slovník vznikl sloučením příslovcí z trénovací množiny a z manuálu pro anotátory • pouze „jednoznačné“ podř. spojky • ukázka ze slovníku: a_proto csq ac_ cncs ac_koli cncs ac_koliv cncs aniz_ compl byt_ cncs co tsin dokud thl
Metody založené na slovnících:Přeložka + podstatné jméno (prepnoun) • slovník obsahuje 69 trojic (předložka, podst.jm, funktor) • slovník vznikl výběrem těch spojení z trénovací množiny, které se vyskytly alespoň dvakrát a vždy se stejným funktorem • ukázka ze slovníku: v_roce twhen v_praze loc v_dobe_ twhen pro_podnikatele ben od_doby tsin do_vlastnictvi_ dir3 z_zisku dir1
Metody založené na ručně psaných pravidlech 1) verbs_active: jestliže řídící uzel je sloveso afun=subjekt ACT objekt v dativu ADDR objekt v akuzativu PAT 2) verbs_passive: jestliže řídící uzel je sloveso subjekt PAT objekt v dativu ADDR objekt v 7. pádě ACT
Metody založené na ručně psaných pravidlech 3) adjectives: přídavné jméno přivlastňovací RSTR jiné APP 4) pronounpos: přivlastňovací zájmeno APP 5) numerals: číslovka RSTR 6) pnom: afun=PNOM PAT 7) pred: afun=PRED PRED
Metoda založená na strojovém učení(ml80) • spolupráce: Sašo Džeroski, Jožen Štefan Institute, Ljubljana • c4.5 (J. Ross Quinlan, 1993) - systém pro vytváření rozhodovacích stromů podle dané trénovací množiny • postup: • 1. předzpracování (selekce a extrakce příznaků) • 2. vygenerování rozhodovacího stromu podle trénovací množiny • 3. prořezání stromu (zůstanou jen pravidla s nadějí na vyšší než 80 % úspěšnost) • 4. poloautomatická transformace do programu v Perlu
Metoda založená na strojovém učení • část „naučeného“ rozhodovacího stromu dep_afun = sb: | gov_pos = a: rstr (1.0/0.8) | gov_pos = j: pat (1.0/0.8) | gov_pos = n: rstr (21.0/8.0) | gov_pos = null: act (1.0/0.8) | gov_pos = z: act (19.0/5.9) | gov_pos = v: | | gov_morph = vp: act (463.0/25.9) | | gov_morph = vr: act (133.0/12.9) | | gov_morph = vs: pat (28.0/8.2) • ukázka z výsledného programu v Perlu if (dep_afun="atr") { if (conj_prep eq "o") {$functor="pat"} if (conj_prep eq "v") {$functor="loc"} if (conj_prep eq "z") {$functor="dir1"} if (conj_prep="null") { if (dep_case="0") { if (dep_morph eq "a") {$functor="rstr"}; if (dep_morph eq "ps") {$functor="app"}; if (dep_morph eq "vr") {$functor="rstr"}; if (dep_morph eq "znum") {$functor="rstr"};
Implementace • AFA systém je tvořen posloupností malých programů (filtrů), každý odpovídá jedné metodě • Každý program může doplnit jen ty funktory, které nevyplnil žádný z jeho předchůdců • Výhoda: pole působnosti jednotlivých metod nejsou disjunktní, změnou jejich pořadí lze „ladit“ přesnost, aniž by se musel přepisovat kód programu
Jak vyhodnocovat úspěšnost AFA? • není to jednorozměrný problém - kompromis mezi co nejvíce správně přiřazenými funktory a co největší přesností • u každé metody i celkem se vyhodnocuje 6 veličin: • Cover = počet funktorů přiřazených danou metodou • Relat. Cover = Cover / počet všech funktoru k doplnění • Errors = počet chybně přiřazených funktorů • Hits = počet správně přiřazených funktorů • Recall = Hits / počet všech funktorů k přiřazení • Precision = Hits / Cover
Vyhodnocení úspěšnosti • uvedené výsledky byly dosaženy na testovací množině 1) ručně psaná pravidla a všechny slovníkové metody
Vyhodnocení úspěšnosti 2) jen metoda similarity Cover = 100 % Precision = Recall = 73 % 3) jen strojové učení a) bez prořezání stromu, tj. použijí se úplně všechna pravidla naučená v trénovací množině Cover = 100 % Precision = Recall = 76 % b) s prořezáním pravidel s horší než 80 % přesností Cover = 37.3 % Recall = 35.3 % Precision=94.5 % 4) jen ručně psaná pravidla Cover=51.2% Recall=48.1 % Precision=93.9 %
Vyhodnocení úspěšnosti 4) všech 12 metod Cover=100% Precision=Recall=78.6 % 5) strojové učení + ručně psaná pravidla + adverbs+ prepnoun Cover=62.8% Recall=58.7 % Precision=93.5 %
Ukázka vyhodnocování 18 23:34 tip 45 /home/zabokrt/FUNKTORY/ASSIGNERS> cat ../ML/test2.txt | ml80.pl | pred.pl | verbs_active.pl | verbs_passive.pl | pnom.pl | adjectives.pl | numerals.pl | pronounposs.pl | adverbs.pl | prepnoun.pl | ../TOOLS/stat.pl Number of lines: 1089 (100%) Method #Covered #Hit #Missed Hit ratio ---------------------------------------------------------------------- ml80 406 (37.28 %) 384 (35.26 %) 22 (2.02 %) 94.58 % adjectives 175 (16.06 %) 170 (15.61 %) 5 (0.45 %) 97.14 % pronounpos 16 (1.46 %) 13 (1.19 %) 3 (0.27 %) 81.25 % prepnoun 8 (0.73 %) 8 (0.73 %) 0 (0 %) 100 % numerals 19 (1.74 %) 13 (1.19 %) 6 (0.55 %) 68.42 % adverbs 28 (2.57 %) 24 (2.20 %) 4 (0.36 %) 85.71 % pred 4 (0.36 %) 4 (0.36 %) 0 (0 %) 100 % verbs_passive 7 (0.64 %) 6 (0.55 %) 1 (0.09 %) 85.71 % verbs_active 21 (1.92 %) 18 (1.65 %) 3 (0.27 %) 85.71 % ---------------------------------------------------------------------- 684 (62.80 %) 640 (58.76 %) 44 (4.04 %) 93.56 %
Ukázka automaticky anotovaného stromu (bcb21, 15) tip /home/zabokrt/FUNKTORY/CompleteAFA>./foreachn.pl < ./afa.fsp bcb21trz.fs • Proto je dobré seznámit se s jejich praktikami a tak vlastně preventivně předcházet možným metodám konkurenčních firem.
Vedlejší produkty • některé seznamy v manuálu pro anotátory lze obohatit daty z trénovací množiny • příslovce • podřadící spojky • předložkové pády • „valenční slovník“ - u častějších sloves lze vyhodnotit, jaké se k nim obvykle váží funktory (i jakou předložkou atd.). Předpoklad: nejčastější funktory slovesa pravděpodobně patří do jeho rámce
Vedlejší produkty:rozšířený seznam předložkových pádů ... ... ...
Další vývoj • valenční slovník sloves - sloučení 2 zdrojů dat • valenční slovník nejčastějších sloves od pana Paly - znám valence, neznám funktor • „valenční slovník“ vydolovaný z trénovací množiny - vím, jaké funktory se jak vážou ke slovesu, ale nevím, co z toho skutečně patří do valenčního rámce • použití WordNetu • očekávám, že s pomocí WordNetu lze navrhnout způsob výpočtu sémantické vzdálenosti (nebo alespoň hledat synonyma) a zvýšit použitelnost slovníkových metod, zejména prepnoun a similarity
Závěr • s dostupnou trénovací množinou a mými znalostmi o funktorech pravděpodobně nelze při pokusu o úplné pokrytí dosáhnout uspokojivé (tj. alespoň 90%) správnosti,... (zdůvodnění - různými cestami jsem došel k podobným výsledkům: • jen ML (neprořezaný strom) precision = 75.9 % • jen similarity precision = 73 % • všech 12 metod precision = 78.6 % ) • ...ale vhodnou kombinací metod lze dosáhnout přijatelné správnosti při zhruba polovičním pokrytí • doporučená kombinace: • ML + ručně psaná pravidla + adverbs + prepnoun • Cover=62.8% Recall=58.7 % Precision=93.5 %
Publikace výsledků • http://obelix.ijs.si/ZdenekZabokrtsky/AFA/ • Text, Speach and Dialogue 2000: • Z.Ž.: Automatic Functor Assignment in Prague Dependency Treebank • 5th TELRI Seminar, Corpus Lingustics: How to Extract Meaning from Corpora • Sašo Džeroski, Z.Ž.: Machine Learning Approach to Automatic Functor Assignment in Prague Dependency Treebank