Aspetti computazionali e metodologici della disambiguazione del Corpus Taurinense
Scopo del progetto: Creazione di un corpus che possa fungere da modello di apprendimento per un sistema di annotazione stocastica basata sui Modelli Markoviani Nascosti (HMM)
Problema: come realizzare un efficace sistema di disambiguazione per una lingua letteraria ancora vergine sotto laspetto del trattamento automatico
Soluzione: creazione di un sistema di disambiguazione per Parti del Discorso (POS) basato su regole, il più possibile svincolate dal contesto in cui si trovano
Necessità di prevedere comunque limpiego di regole legate al contesto al fine di coprire tutti i numerosi casi di trattazione particolare dellelemento (token) da disambiguare
Tre differenti tipologie di disambiguazione: - Esterna: parti del discorso diverse - Interna: attributi genere/numero - Intra-POS: tipi diversi della stessa parte del discorso (es. modo, tempo, ecc.)
Necessità di prevedere una gerarchia di azione: Regole di disambiguazione organizzate in sei moduli distinti operanti in cascata In uno stesso modulo organizzazione delle regole secondo uno schema a mutua esclusione: regole diverse non possono agire sullo stesso token
Modulo 1Modulo 2Modulo 3Modulo 6Modulo 5Modulo 4 Testo iniziale Testo disambiguato
Tipologia di disambiguazione (interna, esterna, ecc.) non vincolata ad alcun modulo specifico: possibilità di agire contemporaneamente su più parametri anche allinterno di una stessa regola
Il primo modulo assume in ingresso un testo già diviso in token e dotato di completa annotazione morfosintattica e codifica metatestuale (markup)
Esempio testo di origine: %001 &V $0035$ D' amore abiendo gioia interamente, lasso, nonn¬ aio in altro intendimento né che partisse lo cor né la mente da ÷l primo loco là onde avea abento ; $0036$ ma feci come· ll' omo che consente molte fïate contro a suo talento : traduto m' àn li sguardi che sovente mi son mostrati, e messo in gran tormento. Sì come il marinaro la serèna, ca lo disvïa co lo dolze canto e poi li dà tempesta per inganno, $0037$ così la gioia m' è cangiata in pena, e· ÷Ø riso, lasso m' è tornato in pianto : per mia follia ò radop&[p&]iato il danno.
Esempio testo etichettato: %001 &V_lem=versesection,71,0,0,0,0,0 $0035$ D'_(lem=da,56,0,0,0,0,0);(lem=di,56,0,0,0,0,0);(lem=di,51,0,0,0,0,0) ;(lem=di;da,56,0,0,0,0,0) amore_lem=amore,20,0,4,6,0,0 abiendo_lem=avere,224,0,0,0,0,0 gioia_lem=gioia,20,0,5,6,0,0 interamente_lem=interamente,45,0,0,0,8,0,_lem=comma,71,0,0,0,0,0 lasso_lem=lasso,26,0,4,6,8,0,_lem=comma,71,0,0,0,0,0 nonn¬_lem=non,45,0,0,0,8,0 aio_lem=avere,211,1,0,6,0,0 in_(lem=in,56,0,0,0,0,0);(lem=in,51,0,0,0,0,0);(lem=in,75,0,0,0,0,0) altro_lem=altro,32,0,4,6,0,0 intendimento_lem=intendimento,20,0,4,6,0,0 né_lem=né,50,0,0,0,0,0 che_(lem=che,36,0,4;5,6;7,0,0);(lem=che,51,0,0,0,0,0);(lem=ché,51,0, 0,0,0,0);(lem=che,35,0,4;5,6,0,0);(lem=che,40,0,4;5,6,0,0);(lem=che, 32,0,4,6,0,0);(lem=che,45,0,0,0,8,0) partisse_lem=partire/- si/,116,3,0,6,0,0 lo_(lem=lo,60,0,4,6,0,0);(lem=lo,39,3,4,6,0,0) cor_(lem=cuore,20,0,4,6,0,0);(lem=cor,75,0,0,6,0,0) né_lem=né,50,0,0,0,0,0 la_(lem=la,60,0,5,6,0,0);(lem=la,39,3,5,6,0,0);(lem=là,45,0,0,0,8,0) mente_(lem=mente,20,0,5,6,0,0);(lem=mentire,115,2,0,6,0,0)
Funzionamento del motore di disambiguazione: - Creazione di una serie di puntatori ai token che compongono il testo - Definizione di regole che agiscono sul token del puntatore centrale
Caratteristiche dei puntatori: - numero minimo pari a 3 - mobili: avanzano allinterno del testo - puntano a elementi testuali contigui (dati di markup esclusi) - permettono di definire con assoluta precisione il campo di applicazione di una regola non generale
Esempio di puntatori: né_lem=né,50,0,0,0,0,0 PT 1 che_(lem=che,36,0,4;5,6;7,0,0);(lem=che,51,0,0,0,0,0 );(lem=ché,51,0,0,0,0,0);(lem=che,35,0,4;5,6,0,0); (lem=che,40,0,4;5,6,0,0);(lem=che,32,0,4,6,0,0); (lem=che,45,0,0,0,8,0) PT 2 partisse_lem=partire/-si/,116,3,0,6,0,0 PT 3 lo_(lem=lo,60,0,4,6,0,0);(lem=lo,39,3,4,6,0,0) cor_(lem=cuore,20,0,4,6,0,0);(lem=cor,75,0,0,6,0,0)
né_lem=né,50,0,0,0,0,0 che_(lem=che,36,0,4;5,6;7,0,0);(lem=che,51,0,0,0,0,0); (lem=ché,51,0,0,0,0,0);(lem=che,35,0,4;5,6,0,0); (lem=che,40,0,4;5,6,0,0);(lem=che,32,0,4,6,0,0); (lem=che,45,0,0,0,8,0) PT 1 partisse_lem=partire/-si/,116,3,0,6,0,0 PT 2 lo_(lem=lo,60,0,4,6,0,0);(lem=lo,39,3,4,6,0,0) PT 3 cor_(lem=cuore,20,0,4,6,0,0);(lem=cor,75,0,0,6,0,0) Scorrimento in avanti:
Funzionamento delle regole di disambiguazione: - analisi del contenuto dei puntatori: controllo di corrispondenza con quanto stabilito dalla regola - modifica (disambiguazione) del contenuto del puntatore centrale
Esempio di regola di disambiguazione if (campo ~ /^terza_/ && campo ~ /\);\(/) { nf++ if ($bw ~ /^già_/ || $fw ~ /^a_/) { assegna(campo, "20", end) } else { assegna(campo, "65", end) } }
Problematiche delle regole di disambiguazione: - elevata complessità di sviluppo - modalità di azione suddivisa su più moduli distinti - definizione di ordine gerarchico di funzionamento - difficoltà di controllo degli errori
Soluzione: - suddivisione delle regole in moduli omogenei per campo di applicazione (es. V/N; N/Adj; etc.) - utilizzo preventivo di regole ad-hoc per agevolare il funzionamento delle regole generali - utilizzo del modulo ausiliario PEX per la verifica della coerenza sintattica e di applicazione di una data regola
PEX – Pattern EXtractor - sistema dotato di capacità di emulazione di qualsivoglia modello no Definizione e stampa del contesto si Regola individuata? Ricerca della regola nel testo
Fasi di sviluppo tradizionali: - studio teorico dei vari tipi di regole - implementazione pratica delle stesse in un determinato formalismo, di solito strettamente dipendente dal programma di disambiguazione - attivazione del processo di elaborazione - verifica sul testo disambiguato del corretto operato delle regole - correzione in post-editing delle regole - rielaborazione del testo dallorigine
Fasi di sviluppo adottate nel CT: - studio teorico dei vari tipi di regole - emulazione delle singole regole mediante lutilizzo del modulo PEX - analisi dei risultati - eventuale correzione delle regole - implementazione definitiva delle regole - elaborazione del testo da disambiguare
Vantaggi: - semplificazione delliter di sviluppo - abbattimento dei cicli successivi di correzione regole e analisi dei dati - riduzione dei tempi morti di elaborazione - ottenimento di risultati certi e definitivi in tempi notevolmente ridotti - elaborazione finale in un unico passaggio