===== 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 (10x10 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?