Specifiche per l`etichettatura pragmatica in XML
Transcript
Specifiche per l`etichettatura pragmatica in XML
Specifiche per l’etichettatura pragmatica in XML a cura di Renata Savy & Simona De Leo 1 0. PREMESSA. ................................................................................................................................3 1.Il linguaggio di mark-up XML.............................................................................3 2. LA DTD .......................................................................................................................................3 2.1. Descrizione delle DTD per Pra.Ti.D................................................................4 2.1.1 Elementi 5 2.1.2 Attributi 5 3. LA PROCEDURA DI ANNOTAZIONE .........................................................................8 2 0. PREMESSA. Questo documento illustra la DTD costruita e derivata dallo schema di annotazione pragmatica descritto in “PraTiD_Normario per l'annotazione pragmatica” e le norme per l’etichettatura in XML dei dati di Pra.Ti.D 1. IL LINGUAGGIO DI MARK-UP XML. La letteratura dedicata alla Corpus Linguistics e in particolare ai metodi di raccolta e codifica dei corpora insiste su due raccomandazioni circa le annotazioni linguistiche: 1) che siano elettronicamente leggibili per poter garantire un accesso automatico e flessibile al materiale linguistico; 2) che seguano standard di rappresentazione comuni e condivisi che garantiscano la “portabilità” del corpus. Tra i formati di rappresentazione linguistica, si è imposto da tempo come standard in numerosi progetti nazionali ed internazionali l’XML (eXtensible Mark-up Language), un metalinguaggio studiato per il web, che descrive linguaggi di mark-up, definendo le etichette e la struttura. Tale linguaggio si presta molto bene ad annotazioni multilivello, in particolar modo al tagging di livelli dotati di una buona ‘struttura’ e rappresentabili per componenti e categorie ‘gerarchizzate1’. Inoltre, esso permette e facilita lo scambio dei dati anche con altri programmi a patto che si dichiari all’inizio il significato delle estensioni effettuate nel documento attraverso la pubblicazione della DTD. 2. LA DTD La DTD (Document Type Definition) è l’insieme delle regole di definizione dei tags ed indica gli elementi e il loro ordine nel documento XML. 1 Savy R., Castagneto M. (2006) Funzioni comunicative e categorie d’analisi pragmatica: dal testo dialogico allo schema Xml e viceversa, in stampa. 3 Gli elementi (<ELEMENTS>) sono nodi dell’albero e presentano dei Contents , cioè ciò di cui sono/o possono essere costituiti, cioè altri <ELEMENTS> o testo (<PCDATA>); nel secondo caso si parla di “elementi foglia” dell’albero (cioè nodi che non ramificano). L’elemento che contiene tutti gli altri è detto “nodo radice”. Nella lista dei Contents il segno ‘+’ sta ad indicare “una sequenza di uno o più contenuti”; il segno ‘*’ indica invece “una o più scelte tra i contenuti’, vale a dire contenuti in alternativa. Ogni elemento può inoltre ricevere degli “attributi” che svolgono la funzione di specificare le caratteristiche dell’elemento a cui si riferiscono; essi sono specificati in una <ATTLIST> (cioè una lista di attributi) che varia a seconda dell’elemento considerato. Gli attributi possono essere obbligatori (REQUIRED) o facoltativi (IMPLIED) ed avere valori bouleiani (vero/falso) o assumere valori diversi elencati per ciascun attributo. 2.1. Descrizione delle DTD per Pra.Ti.D La DTD per l’annotazione pragmatica di Pra.Ti.D traduce in una struttura rigida le gerarchie stabilite nello schema a livelli (cfr. il documento “PraTiD_Normario per l'annotazione pragmatica”). In sostanza essa considera il nostro schema come un albero in cui i vari livelli sono trattati, a seconda dei casi, come “ELEMENTI” del testo o “ATTRIBUTI” degli elementi stessi. • le categorie di primo livello costituiscono gli ELEMENTS; tra questi le Mosse Autonome non hanno attributi (all’infuori di un ID), mentre le Mosse di Apertura e Chiusura sono analizzabili in Attributi di: • move_type (tipi di mossa), corrispondenti alle categorie di secondo livello; • move_spec (specificatori di mossa), corrispondenti alle mosse terminali di terzo livello. 4 2.1.1 Elementi Il nodo radice è DIALOG <!ELEMENT dialog (turn+)> costituito di uno o più turni dialogici L’Element TURN è costituito da una o più classi di primo livello (Autonome, di Apertura, di Chiusura): <!ELEMENT turn (UNP*|SelfTalk*|Interruption*|Ready*|Comment*|Extra*| TR_Begin*|Open*|TR_Closure*|End*|Shift_Begin*| Shift_Closure*)+> Gli Elements : <UNP>, <SelfTalk>, <Interruption>, <Ready>, <Comment> ed <extra> (ossia le Mosse Autonome) presentano tutti il content (#PCDATA)> sono quindi foglie, non ramificanti che contengono informazione testuale. Gli Elements : < TR_Begin>, <Open>, <TR_Closure>, <End>, <Shift_Begin> ed <Shift_Closure> (ossia le Mosse di Apertura e Chiusura) presentano tutti il content (#PCDATA)> sono quindi foglie, non ramificanti che contengono informazione testuale. La differenza tra mosse Autonome e Mosse di Apertura/Chiusura risiede nella assenza/presenza di attributi che completano lo schema. 2.1.2 Attributi Il nodo DIALOG presenta come unico attributo un ID, cioè un codice Identificativo obbligatorio, rappresentato dal nome del dialogo: <!ATTLIST dialog dialog_id CDATA #REQUIRED 5 Es: <dialog dialog_id="DGtdA01L"> L’elemento TURN prevede come attributo, - oltre l’ID (obbligatorio e corrispondente al codice di turno adoperato nella trascrizione ortografica), - il “numero di mosse” contenute nel turno (obbligatorio e rappresentato da un indice numerico), - una notazione addizionale ‘add’ che include la lista dei valori attribuibili al turno (change_on | change_off | skipped) marcati #IMPLIED (cioè non obbligatori ma inseribili quando la circostanza lo richiede). 1. Es di turn senza valore aggiuntivo: <turn turn_id="P1#1" n_of_moves="3"> 2. Es. Di turno con valore aggiuntivo <turn turn_id="p1#29" add="skipped" n_of_moves="3"> ATTENZIONE: Gli attributi di DIALOG e TURN sono pensati come note dell’operatore che marcano le caratteristiche dell’elemento. Tali note non devono essere confuse con le mosse pragmatiche che invece marcano la funzione,che un segmento svolge all’interno del contesto, quindi marcano l’intenzione comunicativa dei parlanti, non evidenziata dalle note dell’annotatore. Gli attributi degli altri elementi (cfr sotto) posseggono invece valori che ne specificano la funzione e corrispondono a mosse pragmatiche. Gli Elementi UNP, SELF TALK, INTERRUPTION, READY, COMMENT ed EXTRA (ossia le mosse autonome) prevedono nell’ATTLIST solo un move_ID, ossia il numero progressivo della mossa. 6 Es: <UNP move_id="13"> Gli Element TR_BEGIN e SHIFT_BEGIN presentano come ATTLIST: - move_id: che (come per i precedenti <Element>) specifica il numero progressivo e sequenziale della mossa ed è obbligatorio; es: <TR_Begin move_id="1" - move_type: che specifica il tipo di mossa ed ha come valori alternativi Influencing, Question o Null, cioè alcune delle categorie di 2° livello, anch’esso obbligatorio; es: <TR_Begin move_id="1" move_type="influencing" - move_spec: che identifica lo specificatore di mossa ed ha come valori alternativi Action_Dir, Open_Option, Explain, Check, Query_Y, Query_W, Info_Req, cioè alcune delle mosse del 3° livello. Quest’ultimo attributo è #IMPLIED, cioè non obbligatorio (non va inserito nel caso del Null). es con specificatore: <TR_Begin move_id="1"move_type="influencing"move_spec="open_option"> es senza move spec: <TR_Begin move_id="13" move_type="null"> Gli elementi TR_CLOSURE e SHIFT_ CLOSURE presentano come ATTLIST: - move_id: - move_type: che può assumere valori Understanding o Answer cioè alcune delle mosse di 2° livello, anch’esso obbligatorio; es: <TR_ Closure move_id="1" move_type="understanding" - move_spec: che può assumere valori Over, Acknowledge, Repeat_Rephrase, Fatic, Continue, Clarify, Reply_Y, Reply_N, Reply_W, Reply, cioè alcune delle mosse del 3° livello. In questo caso l’attributo è #REQUIRED cioè obbligatorio e va inserito sempre. 7 es: <TR_Closure move_id="11" move_type="understanding" move_spec="over"> L’Element OPEN prevede come ATTLIST: - move_id; - move_type: che può assumere valori Influencing o Question, ed è obbligatorio: es: <Open move_id="15" move_type="question" " - move_spec: che può assumere valori Action_Dir, Open_Option, Explain, Align, Check, Query_Y, Query_W, Info_Req ed è obbligatorio es: <Open move_id="15" move_type="question" move_spec="query_y"> Infine, l’Elemento END presenta come ATTLIST: - move_id; - move_type: con valori Understanding, Answer, obbligatorio; es: <End move_id="16" move_type="answer" - move_spec: con valori Over, Acknowledge, Repeat_Rephrase, Fatic, Continue, Not_Ready, Clarify, Reply_Y, Reply_N, Reply_W, Reply, Hold, Object, Correct, obbligatorio: es: <End move_id="16" move_type="answer" move_spec="reply_y"> 3. LA PROCEDURA DI ANNOTAZIONE Ogni documento XML presenta un prologo iniziale contenente una dichiarazione di versione <?xml version="1.0" encoding="utf-8"?> e la dichiarazione della DTD utilizzata <!DOCTYPE dialog SYSTEM "pragma_vers3.dtd"> 8 Il primo tag da aprire è l’elemento radice cui vanno aggiunti gli attributi, come nell’esempio: <dialog dialog_id="DGtdA01L">. Segue l’annotazione del turno con i suoi attributi <turn turn_id="P1#1" n_of_moves="3"> <turn turn_id="p1#13" add="skipped" n_of_moves="2">. A questo punto è necessario introdurre, partendo dal nodo turno, il tag per ciascuna delle mosse in cui il turno è analizzato, aggiungendo i valori per ciascun attributo e infine il testo: <TR_Begin move_id="1" move_type="influencing" move_spec="open_option"> Marco andiamo di figura in figura</TR_Begin>. Prima di proseguire con l’annotazione della mossa successiva, il tag corrispondente, deve essere chiuso, </TR_Begin> Gli Elements TR_Closure, Open, End prevedono tutti le stesse azioni di annotazione, ovviamente ognuno con i propri attributi e valori. Esempi: 1. <Open move_id="3" sei?</Open> move_type="question" move_spec="align">ci 2. <End move_id="5" move_type="answer" move_spec="reply_y">il cane sì</End> 3. <TR_Closure move_id="11" move_type="understanding" move_spec="over">quindi l la prima differenza è questa</TR_Closure> L’annotazione di TR_Begin e Shift_Begin, invece, prevede la non obbligatorietà dell’attributo move_spec.. Esempio: <TR_Begin move_id="13" move_type="null">allora le due gambe</TR_Begin> 9 Chiusa l’ultima mossa del turno è necessario chiudere anche il tag di turno </turn> Alla fine dell’annotazione di tutto il testo bisogna, invece, chiudere il tag dialogo: </dialog>. Un dialogo annotato secondo la DTD descritta precedentemente risulterà formato come nell’esempio: <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE dialog SYSTEM "PraTiD.dtd"> <dialog dialog_id="DGtdA01L"> <turn turn_id="P1#1" n_of_moves="3"> <TR_Begin move_id="1" move_type="influencing" move_spec="open_option"> Marco andiamo di figura in figura </TR_Begin> <Open move_id="2" move_type="influencing" move_spec="explain"> io parto col cane </Open> <Open move_id="3" move_type="question" move_spec="align"> ci sei? </Open> </turn> <turn turn_id="p2#2" n_of_moves="2"> <End move_id="4" move_type="understanding" move_spec="acknowledge"> mh </End> </turn> <turn turn_id="p1#3" n_of_moves="2"> <Ready move_id="6"> allora allora il </Ready> <Open move_id="7" move_type="question" move_spec="check"> / la sua coda è dritta ? </Open> </turn> 10 <turn turn_id="p2#4" n_of_moves="2"> <End move_id="8" move_type="answer" move_spec="reply_n"> no </End <Open move_id="9" move_type="influencing" move_spec="explain"> è a uncino verso l'alto </Open> </turn> <turn turn_id="p1#5" n_of_moves="2"> <End move_id="10" move_type="understanding" move_spec="acknowledge"> okay </End> <TR_Closure move_id="11" move_type="understanding" move_spec="over"> quindi l la prima differenza è questa </TR_Closure> </turn> </dialog> Alcuni suggerimenti: Il documento deve essere accompagnato sempre dalla omonima DTD. Un documento XML è definito Well-Formed se rispetta la forma che l’XML impone es: tag aperti/chiusi, dichiarazioni, presenza di valori per gli attributi etc..: invece, si definisce un documento Valido se rispetta le norme imposte e gerarchizzate nella DTD. Ad esempio se la mossa Open viene annotata come figlio di una mossa TR_Begin, il documento risulterà non valido in quanto Open e TR_Begin sono entrambi degli Element, figli entrambi del nodo Turn e, di conseguenza, non possono contenersi l’uno nell’altro. Gli attributi sia del turno che delle mosse vanno inseriti, obbligatoriamente, nell’ordine esposto ossia: turno: • turn_id, n_ of moves; • turn_id, add, n_ of moves (nel caso di un turno marcato dall’annotatore); 11 mosse TR_Closure, Open; End; Shift_Closure: • move_ id, move_type, move_spec; mossa TR_Begin, Shift_Begin: • move_ id, move_type, move_spec. (quando presenti) • move_ id, move_type, (in caso di mossa “Null”). Bisogna sempre ricordare che ad un tag di apertura deve corrispondere un tag di chiusura altrimenti il documento non risulterà ben formato. 12