Table of Contents
Automatické určování koreference
implementace v TectoMT ⇒ můžeme použít existující moduly (analýza případně až na tekto rovinu, nám bude stačit analytická rovina)
segmentace → morfologie → tagging → parsing na analytickou rovinu
Co budou markables?
Podle mne všechna podstatná jména a všechna osobní zájmena. Přinejmenším zpočátku, pak se to může vylepšovat či rozšiřovat. Řídil bych se především potřebami projektu PlayCoref a tím, co je anotováno v projektu Bridging.
Na pojmenované entity bych se vykašlal, alespoň zatím. V datech bridging stejně máme šipky mezi jednotlivými uzly. Sice na tekto rovině, ale projekce do analytické roviny a zpět (tedy i na povrch) je podle mne jednoznačná.
Jak poznat nové uvedení slova do diskurzu od slova, které koreferuje už s něčím dříve zmíněným?
Neboli: Má z daného markable vést někam šipka? Je anaphorem nějakého antecedentu?
Vidím dvě možnosti:
1) Předřadit modul, který to určí; úspěšnost by však musela být velice vysoká, jinak to považuju za zbytečné snižování celkové úspěšnosti. Nicméně není problém takový modul ve scénáři mít či mít možnost ho tam mít.
2) V rankingu určit mez, kterou musí vítězný kandidát překročit, aby vůbec nějaká koreference byla označena. Může i koexistovat s předchozím modulem.
Kdo budou kandidáti?
Předchozí osobní zájmena a podstatná jména, tedy tytéž markables. Předchozí až do nějaké vzdálenosti nebo všichni až do začátku textu? Respektive přesněji: předchozí diskurzní entity - již existující koreferenční řetězec by měl vystupovat jako jeden kandidát. (Nebudou se tím šířit předchozí chyby? Dá se vyřešit další featurou - kolikátý prvek řetězce zprava od nejbližšího kandidáta to je.)
Narozdíl od některých přístupů bych za antecedent vždy volil nejbližší prvek budoucího koref. řetězce - tzn. i zájmeno může být antecedentem podstatného jména - to je možné právě díky posuzování kandidátů včetně jejich existujícího koref. řetězce.
Jaká metoda, jaké features?
Supervised ranking. Unsupervised metody bych zvážil později, pokud by mohly přispět ke zvýšení úspěšnosti supervised metod, např. při adaptaci na jinou doménu apod.
Ranking - ale jaký?
Co bude ranker posuzovat v jednom kroku? “Anaphor + 1 kandidát” nebo “anaphor + kandidát + všichni ostatní kandidáti”? Mám pocit, že všichni to dělají jen “anaphor + 1 kandidát” - tím můžeme začít, ale nechal bych si možnost rozšířit to. Napadá mě featura typu “Je mezi ostatními kandidáty vlastní jméno?”.
Další možností je využít už existující koreferenční řetězec - neposuzuju kandidáta samostatně, ale už i s jeho koreferenty - mám pocit, že už to někdo někde takhle taky dělal (?). Kandidát pak dostane skóre na základě “shody” i s těmi koreferenty.
Features
Features pro ranking (a jejich váhy) budou různé pro různé typy anaphor (pozná se podle tagu), nejméně tyto tři typy:
- zájmena (zájmen je více; jaká rozlišovat? Osobní zájmena (v klitice, plné formě), další zájmena?)
- vlastní jména
- demonstrative noun phrase?
- ostatní podstatná jména
Features bych pro začátek vzal z různých článků, např. Denis and Baldridge (2008?), Soon et al. (2001); Denis and Baldridge je pěkně rozdělují do skupin podle typu.
Další features mohou přibýt díky např. stromové struktuře a ohodnocení uzlů analytickými funkcemi.
Linguistic Form
(Personal?) Pronoun (0/1) - je kandidát (osobní?) zájmeno?
Proper Name (0/1) - je kandidát vlastní jméno?
General Name (0/1) - je kandidát obecné jméno?
Demonstrative Noun Phrase (0/1) - visí na podstatném jménu anaphoru něco jako “tento, tato apod.”? Je stejné pro všechny kandidáty! Ale vhodné pro rozhodování, zda z daného uzlu vést šipku nebo ne.
Context
POS Left (10 hodnot → 10 features) - POS slova vlevo od kandidáta
POS Right (10 hodnot → 10 features) - POS slova vpravo od kandidáta
POS Surr (10×10 hodnot → 100 features) - POS slova vlevo a slova vpravo od kandidáta
Distance
Distance (více hodnot, řádově desítky až stovky features) - vzdálenost anaphoru od kandidáta; v čem měřit? (věty, slovesa, slova - možná víc featur))
Morphosyntactic Agreement
Number Agreement (0/1) - shoda v čísle
Gender Agreement (0/1) - shoda v rodu
Person Agreement (0/1) - shoda v osobě (?)
Both Proper Names (0/1) - (Soon et al. 2001)
Semantic Similarity
Semantic Similarity - WordNet - existuje nástroj pro měření podobnosti slov na základě Wordnetu v Perlu, je částí OpenNLP Toolkitu. Funguje ale na Czech EuroWordNet? Také by šla použít podobnost na základě Wikipedie (Ponzetto & Strube, 2006)
String Similarity
String Match (0/1) - na lemmatech (bez přípon); případně s použitím editační vzdálenosti - více features pro různé hodnoty
Left substring (0/1)
Right substring (0/1)
Apposition
Apposition (0/1) - Anja tam možná nedělá šipky?
Acronym
Acronym (0/1) - např. “ČR” a “republika, na které visí česká” - tady můžeme dobře využít analytickou rovinu
Salience
Salience (více hodnot - řádově do deseti features) - pro antecedenty zájmen - aktivovanost v diskurzu (podle Hajičové?)
Vynecháno ze zmíněných článků, co se nehodí pro češtinu (nebo z jiných důvodů)
- kandidát je definite/undefinite noun phrase
- Semantic Class Agreement - (female, male, person, organization, location, date, time, money, percent, object) - vyžaduje nástroj, který by to určil
- Head word match - to je featura z Denise, ale co to je?