Alessandro Lenci Dipartimento di Linguistica

Slides:



Advertisements
Presentazioni simili
I Namespace Mario Arrigoni Neri.
Advertisements

1 MeDeC - Centro Demoscopico Metropolitano Provincia di Bologna - per Valutazione su alcuni servizi erogati nel.
Introduzione al DTD Mario Arrigoni Neri.
Introduzione ad XML Mario Arrigoni Neri.
A. FERRARI Alberto Ferrari. L'HyperText Markup Language (HTML) (traduzione letterale: linguaggio di marcatura per ipertesti) è un linguaggio usato per.
Introduzione alla programmazione A. Ferrari. Il linguaggio C Nel 1972 Dennis Ritchie nei Bell Laboratories progettò il linguaggio C Il linguaggio possiede.
1 Introduzione ad XML. 2 Problemi con SGML Complesso da comprendere ed utilizzare Non è pensato per la rete: mancano link ipertestuali e specifiche grafiche.
Lezione 18 MIDI e XML Programmazione MIDI (Prof. Luca A. Ludovico)
Document Type Definition per XML Presentazione 8.1 Informatica Generale (Prof. Luca A. Ludovico)
PHP.
Query OQL e XQUERY a confronto
Numerico-Vespignani, Informatica per le scienze umanistiche, Il Mulino, La rappresentazione dellinformazione testuale e i linguaggi di codifica.
XML Prof. Alfredo Pulvirenti. XML XML (eXtensible Markup Language) è un meta linguaggio. Può essere definito come un insieme di regole e convenzioni che.
Programmazione Procedurale in Linguaggio C++
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
TW Analisi dei documenti n Classificazione dei componenti n Selezione dei componenti, costruzione della gerarchia, dei blocchi informativi e degli elementi.
I MATEMATICI E IL MONDO DEL LAVORO
Laboratorio di Applicazioni Informatiche II mod. A
XML Prof. Barbara Pernici Politecnico di Milano. Introduzione a XML.
XML Prof. Barbara Pernici Politecnico di Milano aggiornato 10/12/2002.
Canale A. Prof.Ciapetti AA2003/04
XML e DTD. –il "PROLOG contiene: dichiarazione della versione di XML; commenti (facoltativi); dichiarazione del DOCUMENT TYPE. –il "DOCUMENT INSTANCE.
1 Anatomia di una pagina Un insieme di pagine web hanno generalmente una parte invariante (o poco): header, navigazione, footer una parte variabile: contenuti.
Lezione 5 Attributi, Entità, Parametri e Namespaces.
MP/RU 1 Dicembre 2011 ALLEGATO TECNICO Evoluzioni organizzative: organico a tendere - ricollocazioni - Orari TSC.
Laboratorio di Informatica
La rappresentazione dellinformazione. 7-2 Digitalizzare linformazione Digitalizzare: rappresentare linformazione per mezzo di cifre (ad es: da 0 a 9)
Introduzione e nozioni fondamentali di sintassi
Unità Didattica 2 I Linguaggi di Programmazione
Linguaggi di markup1 LINGUAGGI DI MARKUP. Linguaggi di markup2 Documenti su Internet Internet permette (tra laltro) di accedere a documenti remoti In.
Cos’è un problema?.
XML per documenti e applicazioni transazionali su Internet Alessio Saltarin Progetto XML Factory.
Lenci, Montemagni, Pirrelli Testo e computer – Carocci 2005 Capitolo 2
Lezione 5 informatica di base per le discipline umanistiche vito pirrelli Istituto di Linguistica Computazionale CNR Pisa Dipartimento di linguistica Università
informatica di base per le discipline umanistiche
Lezione 7 informatica di base per le discipline umanistiche vito pirrelli Istituto di Linguistica Computazionale CNR Pisa Dipartimento di linguistica Università
Gli italiani e il marketing di relazione: promozioni, direct marketing, digital marketing UNA RICERCA QUANTITATIVA SVOLTA DA ASTRA RICERCHE PER ASSOCOMUNICAZIONE.
Espressioni condizionali
Java base I: Sintassi e tipi di dati
Informatica Umanistica A.A. 2009/2010 eXtensible Markup Language (XML)
Importanza DTD La DTD (Document Type Definition) consente di dichiarare in maniera univoca la struttura di markup mediante la definizione dello schema.
Linguaggi di codifica.
1 Documenti XML validi La Document Type Definition Dichiarazione di elementi.
CHARGE PUMP Principio di Funzionamento
1 IsaPress. 2 Obiettivo Realizzare uno strumento di facile uso per estrarre il contenuto da documenti binari di vario tipo in un formato utile per l'impaginazione.
1 IsaPress. 2 Obiettivo Realizzare uno strumento di facile uso per estrarre il contenuto da documenti binari di vario tipo in un formato utile per l'impaginazione.
HyperText Markup Language 17-23/6/08 Informatica applicata B Cristina Bosco.
ORDINE DI CHIAMATA a 1minuto e 2 minuti PRINCIPALI TEMPI DELLA COMPETIZIONE ORDINE DI CHIAMATA a 1minuto e 2 minuti PRINCIPALI TEMPI DELLA COMPETIZIONE.
CORSO AVANZATO INFORMATICA
ISTITUTO COMPRENSIVO “G. BATTAGLINI” MARTINA FRANCA (TA)
CODIFICA Da flow-chart a C++.
Il modello ER Proposto da Peter Chen nel 1976 rappresenta uno standard per la progettazione concettuale (in particolare per le basi di dati) Ha una rappresentazione.
QUIZ – PATENTE EUROPEA – ESAME WORD
GEOGRAFIA DEI NUMERI Accademia dei Lincei - Roma 18 Ottobre2011
Un trucchetto di Moltiplicazione per il calcolo mentale
Creare pagine web Xhtlm. Struttura di una pagina.
Esempi risolti mediante immagini (e con excel)
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
Lezione 3 Struttura lessicale del linguaggio
A.P. cat. B - 1 Per chi vuole: Libro di testo D.P. Curtis, K. Foley, K. Sen, C. Morin Informatica di base 2° edizione Mc Graw-Hill Companies.
Diagramma delle Classi
Internet e HTML Diffusione di informazioni mediante la rete Internet.
Tecnologie di InternetDocument Type Definition Dott. Nicola Dragoni Document Type Definition  Document Type Definition (DTD)  Documento XML valido 
Fondamenti di Markup Languages: Richiami di HTML © 2005 Stefano Clemente Stefano Clemente
WWW La sintassi di SGML  XML Fabio Vitali. WWW Fabio Vitali2 Introduzione Qui esaminiamo in breve tutti gli aspetti di SGML che sono in comune con XML:
Documenti XML ben formati Altre componenti di un documento XML – Struttura dei documenti XML.
Cloud informatica V anno. Introduzione a PHP Lo scripting PHP PHP è un linguaggio di scripting lato server. Le caratteristiche di un linguaggio di scripting.
Cloud informatica V anno.
2 Indice Un esempio Che cosa è A cosa serve Confronto con HTML Punti di forza La sua struttura.
Parsing ricorsivo discendente Il parsing ricorsivo discendente (recursive descent parsing) è un metodo di tipo top-down che può essere facilmente codificato.
Transcript della presentazione:

Alessandro Lenci Dipartimento di Linguistica Linguistica Computazionale Metodi computazionali per l'esplorazione e la rappresentazione dei dati linguistici Alessandro Lenci Dipartimento di Linguistica

Sommario Esplorare i dati linguistici Rappresentare i dati linguistici ricerche avanzate nei corpora testuali espressioni regolari Rappresentare i dati linguistici annotazione linguistica XML schemi di annotazione Testo di riferimento A. Lenci, S. Montemagni, V. Pirrelli Testo e Computer. Elementi di linguistica computazionale, Carocci, 2005

Strumenti e risorse per l’analisi computazionale dei dati linguistici Tre requisiti per la linguistica computazionale e NLP dati linguistici corpora di testi digitali metodi e strumenti formali logica , matematica, statistica, algoritmica software linguaggi di programmazione, strumenti e ambienti di sviluppo Il recupero di quantità significative di dati linguistici è la precondizione di ogni indagine linguistico-computazionale uso di corpora generali esistenti Brown Corpus, Wall Street Journal, ecc. BNC PAROLE, ecc. costruzione di un corpus specializzato per il task in oggetto

Esplorare i dati linguistici

Ricerche avanzate nei corpora Espressioni Regolari Linguaggio standard per caratterizzare stringhe di testo (regular expressions, regex, re) definite da Kleene nel 1956 Strumento ideale per ricercare testo sostituire testo Molti programmi supportano le RE: Trova e Sostituisci in Word grep in Unix Emacs e altri editors di testo Perl è un linguaggio di programmazione che permette un trattamento estremamente avanzato e duttile delle RE

RE e Pattern Matching Il pattern matching è la forma più elementare di elaborazione di un testo: dato un testo T vengono cercate le stringhe in T che corrispondono ad un pattern p un pattern è uno schema di stringhe, ovvero definisce un insieme di stringhe di testo che soddisfano particolari criteri “le parole che iniziano con la lettera maiuscola” “le stringhe di numeri la cui seconda cifra è 2” “le linee di testo che terminano con un punto esclamativo” le RE sono il linguaggio standard per specificare pattern di testo da ricercare Stringa di testo qualsiasi sequenza di caratteri alfanumerici lettere, numeri, spazi, punteggiatura, caratteri speciali, ecc. Attenzione!!! per il pattern matching, anche gli spazi, tabulazioni, ecc. contano come caratteri

RE e Pattern Matching In Perl una RE è un’espressione della forma /<pattern>/ Uso delle espressioni regolari in Perl Si definisce un pattern tramite una RE La RE viene verificata su un testo e produce come risultato un valore booleano (true-false): true = il testo contiene una stringa che corrisponde (match) al pattern false = il testo non contiene una stringa che corrisponda al patttern Altri possibili output documenti in cui viene trovata la stringa(stringhe) corrispondente(i) al pattern linee di testo che contengono il pattern (es. grep)

Caratteri e sequenze di caratteri Un qualsiasi carattere o sequenza di caratteri (lettere, numeri, punteggiatura, spazi, ritorno-a-capo, caratteri speciali) è una RE le RE sono “case sensitive” RE Esempi di “matching” /testo/ /a/ “il testo del corpus” “il cane di Mario è nero” /mark up/ “mark up del testo” “markup del testo” /Linguistica/ “la Linguistica Computazionale” “la linguistica computazionale”

Classe di caratteri Un insieme di caratteri tra parentesi quadre è una RE che definisce una classe di caratteri disgiunti RE Definizione Esempi di “matching” /[st]/ il carattere ‘s’ o il carattere ‘t’ “la sintassi” “il tempo” /[1234567890]/ qualsiasi cifra “2 parole” /[Ll]inguistica/ ‘linguistica’ o ‘Linguistica’ “la Linguistica Computazionale” “la linguistica computazionale” ATTENZIONE!!! - Una classe di caratteri sta sempre per un solo carattere /[st]/ il carattere ‘s’ o ‘t’ “la sintassi” “il tema” /st/ la stringa ‘st’ “la sintassi” “il tema” /[123]/ il carattere ‘1’ o ‘2’ o ‘3’ “715.478” /123/ la stringa di caratteri ‘123’ “715.478” “674.123”

qualsiasi lettera minuscola qualsiasi lettera minuscola o maiuscola Classe di caratteri Dentro una classe di caratteri è possibile specificare un intervallo di caratteri in una scala usando ‘-’: /[2-5]/ il carattere 2 o 3 o 4 o 5 RE Definizione Esempi di “matching” /[a-z]/ qualsiasi lettera minuscola “la sintassi” “il tempo” /[0-9]/ qualsiasi cifra “2 parole” /[a-zA-Z]/ qualsiasi lettera minuscola o maiuscola “la Linguistica” “la linguistica” Sono solo abbreviazioni: /[2-5]/ è equivalente a /[2345]/ /[a-z]/ è equivalente a /[abcdefghijklmnopqrstuvwxyz]/

Classe di caratteri ATTENZIONE! Dentro una classe di caratteri è possibile specificare che un pattern non deve contenere un certo carattere usando il segno ‘^’: /[^2]/ qualsiasi carattere diverso da 2 RE Definizione Esempi di “matching” /[^a-z]/ qualsiasi carattere diverso da una lettera minuscola “la Sintassi” “il 25%” “il tempo” /[^st]/ qualsiasi carattere che non sia né ‘s’ né ‘t’ “2 parole” “ssssss” ATTENZIONE! ‘^’ ha valore negativo solo quando compare subito dopo la ‘[‘ /[2^]/ il carattere ‘2’ o ‘^’ “3^5”

Classe di caratteri equivalente Alcune utili abbreviazioni per classi di caratteri RE Classe di caratteri equivalente /\d/ /[0-9]/ /\w/ /[a-zA-Z0-9_]/ /\s/ /[ \t\n]/ /\D/ /[^0-9] /\W /[^a-zA-Z0-9_]/ /\S/ /[^ \t\n]/ Caratteri particolari: \t tabulazione \n a capo

la stringa “cane” oppure la stringa “gatto” Alternativa L’operatore “|” esprime la disgiunzione tra due RE (operatore di alternativa) RE Definizione Esempi di “matching” /cane|gatto/ la stringa “cane” oppure la stringa “gatto” “il cane abbaia” “il gatto miagola” ATTENZIONE! /[..]/ esprime solo la disgiunzione tra caratteri singoli /[abc]/ il carattere ‘a’ o ‘b’ o ‘c’ La disgiunzione tra stringhe deve essere espressa con l’operatore di alternativa /ab|c/ la stringa ‘ab’ o il carattere ‘c’

Moltiplicatori I seguenti simboli sono usati in una RE per specificare quante volte deve comparire il carattere che li precede immediatamente: /<carattere>?/ “il carattere precedente è opzionale (occorre 0 o 1 volta)” /<carattere>*/ “il carattere precedente occorre 0 o n volte” (Kleene Star) /<carattere>+/ “il carattere precedente occorre 1 o n volte” RE Definizione Esempi di “matching” /ba?rio/ la stringa ‘brio’ o ‘bario’ (la a è opzionale) “brio” “bario” “berio” /tokens?/ l’ultimo carattere ‘s’ è opzionale “token” “tokens” “tokened”

Moltiplicatori RE Definizione Esempi di “matching” /ba*/ il carattere ‘b’ seguito da 0 o n ‘a’ “b” “ba” “baa” “baaa” “baaaa” “baaaaa” … /[0-9]*/ un numero infinitamente lungo, composto da 0 a n cifre “2” “43” “534” “3546” “3830” “87474” “la repubblica” /[0-9][0-9]*/ un numero infinitamente lungo che deve contenere almeno una cifra /[0-9]+/ /ba+/ il carattere ‘b’ seguito da 1 o n ‘a’ “ba” “baa” “baaa” “baaaa” “baaaaa” …

la stringa formata da esattamente 2 ‘a’ e una b Moltiplicatori Moltiplicatori avanzati: /<carattere>{n,m}/ “il <carattere> deve occorrere almeno n volte e al massimo m volte /<carattere>{n,}/ “il <carattere> deve comparire almeno n volte /carattere>{n}/ “il <carattere> deve comparire esattamente n volte RE Definizione Esempi di “matching” /a{2,3}b/ la stringa formata da almeno 2 ‘a’ e al massimo da 3 ‘a’ seguita da una ‘b’ “aab” “aaab” “ab” “aaaab” /a{2}b/ la stringa formata da esattamente 2 ‘a’ e una b

Sostituzione di stringhe in Perl s/<espressione regolare>/<nuova stringa>/ compie la sostituzione solo sul primo match effettuato s/…/…/g sostituzione globale RE Testo originario Nuovo testo s/é/e’/ “…non so il perché” “non so il perche’” s/ab*c/ad/ “abbbbbbc” “ac” “ad” s/a/i/g s/a/i/ “cavallo” “civillo” “civallo”

Wildcard La RE /./ corrisponde a qualsiasi carattere (eccetto il ritorno-a-capo) RE Definizione Esempi di “matching” /b.s/ qualsiasi stringa di tre caratteri che inizia con ‘b’ e termina con ‘s’ “bas” “bbs” “b3s” “b!s” “b s” “b,s” … “baas” /b.*s/ qualsiasi stringa che inizia per b e termina per s “bs” “bas” “bbs” “b3s” “b!s” “b s” “b,s” “baas” “bisogna prendere l’autobus” /.*/ qualsiasi stringa (compresa quella vuota) l’intero corpus, anche se vuoto

Ingordigia e pigrizia I moltiplicatori in Perl sono ingordi (greedy) fanno sempre matching con la stringa più lunga possibile /x+/ “axxxxxxxb” “axxxxxxxb” /a.*c.*/ “a xxx c xxx c xxx d” “a xxx c xxx c xxx d” E’ possibile rendere i moltiplicatori “pigri” (lazy) facendoli seguire dal carattere “?” fanno matching con la stringa più corta possibile /a.*?c.*/ “a xxx c xxx c xxx d” “a xxx c xxx c xxx d”

Raggruppamento e memoria Le parentesi tonde servono per raggruppare stringhe di caratteri da moltiplicare: RE Definizione Esempi di “matching” /(ab)+/ una o più stringhe “ab” “ab” “abab” “ababab” /ab+/ una “a” seguito da una o più “b” “ab” “abb” “abbb” Le parentesi tonde memorizzano la stringa di testo corrispondente al contenuto delle parentesi la stringa viene memorizzata in una variabile temporanea Il contenuto della variabile può essere richiamato con \<numero> (1 = contenuto della prima coppia di parentesi; 2 = contenuto della seconda coppia di patentesi, ecc.)

Raggruppamento e memoria RE Definizione Esempi di “matching” /(ab)+\1/ la variabile “\1” corrisponde a qualunque stringa abbia fatto matching con il contenuto delle parentesi “abab” “abababab” “abababababab” /(a)+(b)+\1\2/ la variabile “\1” corrisponde a qualsiasi stringa abbia fatto matching con il contenuto della prima coppia di parentesi; la variabile “\2” idem, ma rispetto alla seconda coppia di parentesi “abbabb” “aabaab” “abbaab” /p(.)o p\1o/ “pio pio” “pao pao” “pro pro”, ecc. “pio pao” “pao peo” /p.o p.o/ la wildcard “.” può essere sostituita da qualsiasi carattere “pio pio” “pio pao” “pro pso”, “pao pio”, ecc.

Caratteri speciali Alcuni caratteri hanno un significato speciale nel linguaggio delle RE [ ] ? * . ( ) + - / { } Se questi caratteri fanno parte del pattern di testo da cercare, devono comparire in una RE con davanti il carattere ‘\’ (carattere di escape) /[a/ ERRORE! ‘[‘ è interpretato come operatore di disgiunzione e manca la parentesi ‘]’ /\[a/ la stringa “[a” /a./ qualsiasi stringa di due caratteri che inizia con ‘a’ “ab” “au” as” “a1” “a?” … /a\./ la stringa di testo “a.” /cane?/ le stringhe “cane” e “can” /cane\?/ la stringa “cane?”

Ancore Le ancore sono caratteri speciali che specificano dove deve comparire il pattern di testo da cercare /^<pattern>/ il <pattern> deve comparire all’inizio di una linea /<pattern>$/ il <pattern> deve comparire alla fine di una linea RE Definizione Esempi di “matching” /cane$/ la stringa ‘cane’ quando compare alla fine di una linea “…cane¶” “il cane di Mario” /^La/ la stringa ‘La’ quando compare all’inizio di una linea “¶La macchina era guasta” “il treno per La Spezia” /^La Spezia$/ una riga che contiene solo la stringa “La Spezia” “¶La Spezia¶” “…a La Spezia per lavoro …”

“il canestro” “le americane sono” Ancore “\b” è un ancora che indica il confine di una parola (“\B” indica ogni punto non confine di parola) Il confine di una parola è un punto che ha da una parte un carattere di classe \w e dall’altra o un carattere di classe \W o l’inizio (fine) riga ¶La macchina in giardino¶ confini di parola RE Definizione Esempi di “matching” /\bcane\b/ la stringa ‘cane’ deve avere a destra e a sinistra un confine di parola “il cane è …” “il canestro” “le americane sono” /\Bcane\b/ la stringa ‘cane’ deve avere a destra (ma non a sinistra) un confine di parola

Precedenza I moltiplicatori, le parentesi, l’alternativa, le ancore sono operatori permettono di costruire RE complesse a partire da altre RE Esistono delle regole di precedenza tra gli operatori /a|b+/ Parentesi ( ) Moltiplicatori ? * + {m,n}, ecc. Sequenze e ancore ata ^ $ \b Alternativa | Le parentesi ( ) permettono di alterare l’ordine di precedenza /a|b+/ vs. /(a|b)+/

Rappresentare i dati linguistici

La codifica digitale del testo Rappresentazione del testo su supporto digitale in un formato “leggibile” da un computer Machine Readable Form (MRF) I computer memorizzano ed elaborano dati sotto forma di sequenze di due soli simboli 0 e 1 (cifre binarie) Ogni tipo di informazione deve essere codificata in cifre binarie codificare informazione = associare a ciascuna unità di informazione un codice (sequenza di cifre binarie) che la identifica in maniera univoca I testi per essere elaborati o trasmessi da un programma devono avere una rappresentazione (codifica) binaria

La codifica digitale del testo Il testo e la sua organizzazione intestazione capitolo titolo testo

La codifica digitale del testo Il testo e la sua struttura linguistica sintagma nominale V andare pass. rem. 3 sing. frase relativa articolo indefinito femminile singolare stanza come luogo tutti = soggetto

La codifica digitale del testo Il testo come sequenza di caratteri Ciascun carattere alfanumerico, di punteggiatura o di controllo che compone il testo deve essere rappresentato nei termini di un codice binario Le avventure di Pinocchio Capitolo I Come andò che Maestro Ciliegia, falegname, trovò un pezzo di legno, che piangeva e rideva come un bambino. C'era una volta... - Un re! - diranno subito i miei piccoli lettori. - No, ragazzi, avete sbagliato. C'era una volta un pezzo di legno. Non era un legno di lusso, ma un semplice pezzo da catasta, di quelli che d'inverno si mettono nelle stufe e nei caminetti per accendere il fuoco e per riscaldare le stanze. Non so come andasse, ma il fatto gli è che un bel giorno questo pezzo di legno capitò nella bottega di un vecchio falegname, il quale aveva nome mastr'Antonio, se non che tutti lo chiamavano maestro Ciliegia, per via della punta del suo naso, che era sempre lustra e paonazza, come una ciliegia matura.

La codifica digitale del testo Il testo come sequenza di caratteri “Surrogato” parziale del testo originario completa equivalenza solo dal punto di vista dei caratteri che lo compongono perdita di informazione l’informazione implicitamente veicolata dalla formattazione del testo relativa a: le coordinate meta-testuali il nome dell’autore, il titolo, ecc. la struttura e organizzazione testuale la suddivisione logica in sezioni, capitoli, paragrafi, ecc. nessun guadagno di informazione l’informazione sulla struttura linguistica rimane implicita e nascosta (come nel testo originale)

La codifica digitale del testo Due livelli di codifica del testo digitale codifica di basso livello (codifica di livello 0) riguarda la rappresentazione binaria della sequenza ordinata dei caratteri codifica di alto livello arricchisce il testo codificato al livello zero con informazione relativa a dimensioni strutturali organizzazione del testo in strutture macrotestuali articolazione del testo in strutture linguistiche La codifica di alto livello permette di rendere esplicita qualsiasi interpretazione, anche di tipo linguistico, si voglia associareal testo

Codifica di alto livello Interpretazione e codifica Interpretazione del testo informazioni che caratterizzano la struttura, contenuto, presentazione, natura linguistica, ecc. di un testo e del suo contenuto informativo metadati “informazione sull’informazione” esistono vari livelli e gradi di interpretazione tipografica, extratestuale, linguistica, ecc. Codifica di alto livello processo attraverso cui viene resa esplicita un’interpretazione del testo la codifica permette di rendere machine readable informazioni sul testo e tratti del testo che altrimenti non sarebbero elaborabili dal computer

Perché codificare? I motivi della codifica di alto livello Un testo come flusso di caratteri e parole è una fonte di dati linguistici Il testo è un’entità altamente strutturata, nella quale i dati linguistici sono correlati secondo piani di organizzazione multipli struttura del testo l’ articolazione in sezioni, capitoli, titoli, ecc. struttura del contesto l’autore, la data di produzione, la finalità del testo, ecc. struttura linguistica (implicita nel testo!!) informazioni morfologiche, sintattiche, semantiche

Perché codificare? La gerarchia dell’informazione I dati non hanno un significato intrinseco a meno di non inserirli in uno schema o struttura che li organizza e li trasforma in informazione La gerarchia dell’informazione Conoscenza Informazione Dati Dati = contenuto grezzo dell’informazione Informazione = dati + interpretazione (struttura) Conoscenza = informazione + teoria

La gerarchia dell’informazione benzina, 4 cil. in linea 1.997 cc 130 kW (180 CV) 02 Nm (20,6 kgm) manuale a 5 rapporti anteriore 205/50 R 17 4,35/1,76/1,42 m dati di un auto Motori: benzina, 4 cil. in linea Cilindrata: 1.997 cc Potenza max: 130 kW (180 CV) Coppia max: 02 Nm (20,6 kgm) Cambio: manuale a 5 rapporti Trazione: anteriore Pneumatici: 205/50 R 17 Dimensioni: 4,35/1,76/1,42 m informazione su un auto conoscenza sulle auto (struttura, funzionamento, tipologie, ecc.)

Perché codificare? La gerarchia dell’informazione linguistica modelli della lingua conoscenza linguistica la conoscenza della lingua l’organizzazione strutturale e linguistica di un testo informazione linguistica dati linguistici le parole di un testo La codifica di alto livello permette di rendere espliciti e accessibili al computer i livelli di organizzazione strutturale di un testo e lo trasforma in una fonte di informazione linguistica

Cosa codificare? I contenuti della codifica di alto livello Individuare il livello di informazione da codificare strutturale, linguistica, ecc. la codifica esplicita di informazione linguistica viene detta annotazione del testo morfologica, semantica, sintattica, ecc. Definire il repertorio dei tratti giudicati rilevanti per la codifica un esempio: la codifica morfo-sintattica oggetto: codificare esplicitamente la categoria grammaticale e le proprietà morfologiche delle parole di un testo da definire: quali attributi codificare (cat. grammaticale, persona, genere, numero, caso, ecc.) quali valori possono avere i diversi attributi (numero = SING, PLUR; caso = NOM, GEN, ecc.)

Come codificare? I formati digitali del testo Formato solo testo (plain text o txt) un file solo testo è costituito da una sequenza di bytes dove ciascun byte rappresenta un carattere secondo un particolare codice gli editori di testo sono programmi in grado di creare e leggere files di tipo solo testo Emacs, Blocco Note, Word Pad, ecc. quando un editore di testo legge un file cerca di associare ogni sequenza di bits a un carattere secondo un particolare codice Vantaggi formato “aperto”, indipendente dal sistema operativo e dal programma che lo ha creato massima portabilità e interscambiabilità dei testi Svantaggi non può rappresentare aspetti relativi alla codifica di alto livello minima espressività

Come codificare? I formati digitali del testo Formati proprietari (doc, pdf, ecc.) possono essere creati, letti e interpretati solo da uno specifico programma (es. Word, Adobe) oltre a sequenze di bits codificano caratteri, il file contiene sequenze binarie che corrispondono a istruzioni di formattazione, codificate secondo le convenzioni di un certo programma Vantaggi massima capacità espressiva e fruibilità per l’utente umano rappresenta aspetti relativi alla codifica di alto livello ma solo per quanto riguarda la struttura testuale!! Svantaggi formato “chiuso”, con minima portabilità e interscambiabilità codifica non per categorie testuali “astratte”, ma per modalità di visualizzazione le informazioni linguistiche rimangono comunque implicite nel testo

Come codificare? I linguaggi di marcatura Codifica di alto livello con linguaggi di mark-up (linguaggi di marcatura) come XML dal punto di vista del formato digitale un testo codificato in XML è in formato solo testo l’informazione strutturale è rappresentata attraverso l’aggiunta al testo di etichette (o tag) di marcatura sequenze di caratteri visibili secondo una convenzione standard, intercalati nel testo seguendo precise regole di combinazione “marcano” blocchi di testo a cui viene assegnata una determinata interpretazione Vantaggi portabilità e interscambiabilità dei testi codificati massimo grado di espressività è possibile esprimere tuttti gli aspetti della codifica di alto livello, compresa l’informazione linguistica

Come codificare? I linguaggi di marcatura mark-up per la codifica di informazione strutturale <libro> <titolo>Le avventure di Pinocchio <sottotitolo>Storia di un burattino</sottotitolo> </titolo> <autore>Carlo Collodi</autore> <parte p_id=”1”> <titolo>Parte prima</titolo> <capitolo c_id=”I”> <titolo> Come andò che maestro Ciliegia, falegname, trovò un pezzo di legno, che piangeva e rideva come un bambino.</titolo> <capoverso num=”p1c1c1”>C'era una volta...</capoverso> <capoverso num=”p1c1c2”>- Un re! - diranno subito i miei piccoli lettori.</capoverso> <capoverso num=”p1c1c3”>No, ragazzi, avete sbagliato. C'era una volta un pezzo di legno.</capoverso> <capoverso num=”p1c1c4”>Non era un legno di lusso, ma un semplice pezzo da catasta, di quelli che d'inverno si mettono nelle stufe e nei caminetti per accendere il fuoco e per riscaldare le stanze.</capoverso> </capitolo></parte> </libro>

Come codificare? I linguaggi di marcatura mark-up per la codifica di informazione strutturale + mark-up per la codifica di informazione linguistica <libro> … <parte> <capitolo c_id=”I”> <titolo>Come <parola cat=“V” tempo=“passRem”>andò</parola> che <parola cat=“N” genere=“m” num=“s”>maestro</parola> Ciliegia, falegname, trovò <sintagma tipo=”nominale”><parola cat=“artInd” genere=m” num=“s”>un</parola> pezzo di legno</sintagma>, che piangeva e rideva come un bambino.</titolo> </capitolo></parte> </libro>

Come codificare? XML XML (eXtensible Mark-up Language) (meta)linguaggio di marcatura attraverso le DTD (Document Type Definition) consente di definire linguaggi di marcatura per la codifica del testo e di altri tipi di dato con i linguaggi di marcatura, in linea di principio, non vi è limite alla tipologia di informazioni codificabili: infatti la tipologia di etichette di marcatura può essere definita in funzione delle finalità della codifica standard affermato e diffuso facilmente elaborabile dal computer chiara distinzione tra testo e markup ampia disponibilità di software per il trattamento di file XML parser, estrattori di tag, editor specializzati, ecc. facilmente interfacciabile con database per l’importazione dei dati codificati XML è la base di un’intera tecnologia di linguaggi e applicazioni per il trattamento del mark-up

Linguaggi di marcatura Un linguaggio di marcatura è un insieme di convenzioni per la marcatura di testi Marcatura di documenti la marcatura (o etichettatura) permette di rendere esplicita un'interpretazione di un testo. storicamente annotazioni in un testo che descrivono al tipografo come stampare o comporre una parte del testo oggi qualsiasi tipo di codice inserito in un testo in forma elettronica

HTML - HyperText Markup Language È un linguaggio di marcatura (non un metalinguaggio!) definito in termini di SGML Insieme di etichette prefissato La marcatura non denota il “significato” ovvero la struttura “logica” di un documento che insieme di informazioni rappresenta un documento? come faccio a selezionare le informazioni rilevanti? Studiato espressamente per il Web collegamenti ipertestuali immagini marcatura finalizzata alla presentazione del documento come pagina Web diversi tipi di titoli, tabelle, ecc. non c’è un legame tra marcatura e tipi di informazione nel documento

Una pagina HTML <html> <head> <title>Le avventure di Pinocchio</title> </head> <body> <h2>Carlo Collodi</h2> <h1>Le avventure di Pinocchio</h1> <p> <p>Capitolo I</p> <p><i>Come andò che Maestro Ciliegia, falegname, trovò un pezzo di legno, che piangeva e rideva come un bambino.</i><p> </body> </html>

XML eXtensible Mark-up Language La marcatura è dettata dalla struttura logica del documento L’insieme di etichette può cambiare in base l'applicazione Viene usato il concetto di tipo di documento specificato attraverso una Document Type Definition o DTD (è parte dello standard XML) permette di imporre al documento una certa struttura (ovvero come si compongono le sue parti) Naturale successore di HTML come linguaggio per il Web più espressivo e flessibile per la visualizzazione è necessario una descrizione a parte con un altro linguaggio (XSL) ma per lo stesso documento XML è possibile definire più visualizzazione

Esempio di Documento XML <libro> <intestazione> Le avventure di Pinocchio </intestazione> <autore>Carlo Collodi</autore> <titolo>Le avventure di Pinocchio</titolo> <capitolo> <intestazioneCapitolo>Capitolo I</intestazioneCapitolo> <titolo>Come andò che Maestro Ciliegia, falegname, trovò un pezzo di legno, che piangeva e rideva come un bambino.</titolo> </capitolo> </libro>

Le origini di XML 1969 Charles Goldfarb (IBM) dirige lo sviluppo di GML 1974 Charles Goldfarb inventa SGML, il padre dei linguaggi di marcatura 1986 SGML diventa uno standard ISO (ISO 8879 ``Information Processing - Text and Office Systems - Standard Generalized Markup Language'') 1989 Tim-Berners Lee (CERN di Ginevra) inventa HTML 1995 Fondazione del World Wide Web Consortium (W3C)

Le origini di XML 1996 Inizio dello sviluppo di XML presso il W3C 1998 XML 1.0 diventa una raccomandazione W3C (uno standard di fatto) 1996-oggi Sviluppo di standard associati ad XML (coordinato da W3C) 2002 XML 1.1 diventa una raccomandazione candidata W3C (Il consorzio internazionale per la standardizzazione di linguaggi e strumenti per il WEB)

I tratti caratterizzanti di XML Marcatura dichiarativa usa etichette di marcatura che indicano la funzione astratta assolta dalla porzione di testo a cui si riferiscono Marcatura strutturata permette di raggruppare porzioni del testo e di definirle come unità strutturali complesse, che riflettono l’organizzazione interna del testo Marcatura gerarchica le strutture identificate nel testo possono combinarsi in maniera gerarchica un’unità strutturale del testo può a sua volta contenere altre strutture incassate; quello che otteniamo è una gerarchia di strutture definibili a livelli incrementali di dettaglio

I componenti della marcatura XML gli elementi delimitatore di apertura delimitatore di chiusura Contenuto Elemento Gli elementi rappresentano i blocchi costitutivi in cui si articola un testo ogni elemento viene marcato in modo esplicito nel testo inserendo un delimitatore di apertura all’inizio dell’elemento e uno di chiusura alla fine Es: <autore>Carlo Collodi</autore>

I componenti della marcatura XML i nomi degli elementi ogni tipo di elemento è identificato da un nome (etichetta o tag): il nome associato a ogni tipo di elemento è chiamato identificatore generico (generic identifier o GI) XML è case-sensitive l’identificatore generico deve essere sempre specificato con lo stesso tipo di carattere, maiuscolo o minuscolo: <tag>…</tag>, <TAG>…</TAG>, <Tag>…</Tag> *<tag>…</TAG> norme per la sintassi del nome degli elementi possono contenere solo lettere, cifre, ., -, _ possono iniziare solo con una lettera o con _ nomi consentiti: <autore.libro>, <_autore>, <AUTORE-LIBRO>, <autore_1> nomi proibiti: <1autore>, <autore libro>, <autore;@?libro> non esiste un limite di lunghezza per il nome di un elemento

I componenti della marcatura XML relazioni tra elementi due elementi XML possono essere annidati l’uno nell’altro l’elemento più esterno è detto elemento genitore, quello interno elemento figlio questo meccanismo di annidamento degli elementi permette la rappresentazione di strutture gerarchiche di profondità variabile LIBRO CAPITOLO SEZIONE

I componenti della marcatura XML relazioni tra elementi CAPITOLO SEZIONE LIBRO struttura XML mal formata in quanto esiste un elemento “a cavallo” di due elementi (annidamento improprio) in XML non è consentita la sovrapposizione tra elementi un elemento figlio deve essere completamente incluso nell’elemento padre CAPITOLO SEZIONE SEZIONE

I componenti della marcatura XML l’elemento radice ogni documento XML ben formato deve contenere un elemento che contiene tutti gli altri elementi (elemento radice) la figura rappresenta una struttura mal formata in quanto in XML non è possibile avere più elementi a livello di radice ogni documento XML deve contenere uno e uno solo elemento radice l’elemento radice è “orfano” e senza “fratelli” CAPITOLO SEZIONE SEZIONE CAPITOLO SEZIONE SEZIONE

I componenti della marcatura XML il documento XML come albero LIBRO CAPITOLO SEZIONE stringa di caratteri sezione capitolo SEZIONE sezione stringa di caratteri LIBRO sezione SEZIONE capitolo sezione SEZIONE sezione

I componenti della marcatura XML contenuto di un elemento Il contenuto di un elemento può essere costituito da: testo libero non contenente altri elementi (dati di tipo carattere) <titolo>Le avventure di Pinocchio</titolo> altri elementi (detti figli) <capitolo> <titolo>Capitolo primo</titolo> <capoverso>C'era una volta...</capoverso> <capoverso>- Un re! - diranno subito i miei piccoli lettori.</capoverso> </capitolo>

I componenti della marcatura XML contenuto di un elemento contenuto misto (elementi+ testo) <titolo>Le avventure di Pinocchio <sottotitolo>Storia di un burattino</sottotitolo> </titolo> Il contenuto di un elemento può essere “vuoto”. Ci sono due modi di denotare un elemento vuoto: coppia di delimitatori di apertura e chiusura <salto_pagina></salto_pagina> etichetta di elemento vuoto <salto_pagina/>

I componenti della marcatura XML gli attributi Gli elementi XML possono essere dotati di attributi gli attributi rappresentano informazioni aggiuntive che specificano alcune caratteristiche dell’elemento (ma che non fanno parte del contenuto del testo) nome_attributo= ”valore” <capoverso num=”1”>C'era una volta...</capoverso> nome_attributo stesse restrizioni definite per i nomi degli elementi i valori degli attributi devono sempre essere racchiusi tra virgolette (singole o doppie) nel caso in cui un valore contenga al suo interno delle virgolette, allora diventa obbligatorio differenziarle da quelle più esterne un attributo può ricorrere al massimo una volta all’interno di un elemento Attenzione!!! Gli attributi possono comparire solo nei tag di apertura degli elementi

I componenti della marcatura XML elementi vs attributi Elemento = “contenitore” e “classificatore” del dato testuale Attributo = “glossa” associata al dato testuale Codifiche spesso interscambiabili <parola pos=”nome” num=”sing” gen=”masc” lemma=”legno”> <orto>legno</orto> </parola> <parola> <orto>legno</orto> <pos>nome</pos> <accordo> <num>sing</num> <gen>masc</gen> </accordo> </parola>

I componenti della marcatura XML elementi vs attributi Non è sempre facile stabilire quando preferire una codifica in termini di elementi o di attributi gli elementi possono ricorrere più volte mentre un attributo può ricorrere al massimo una volta all’interno di un elemento per gli elementi è possibile specificare l’ordine in cui devono apparire nel testo, mentre ciò non è possibile per gli attributi un attributo non può descrivere strutture complesse (il valore di un attributo XML è semplicemente una stringa di caratteri), mentre questo è un tratto caratterizzante degli elementi

I componenti della marcatura XML commenti Ogni documento XML può contenere una o più “note a margine” dette anche, in gergo tecnico, commenti questo tipo di note non riguardano direttamente i dati da annotare, e come tali sono ignorate da eventuali applicazioni forniscono informazioni preziose riguardo alle intenzioni dell’annotatore, a suoi eventuali dubbi, pro-memoria ecc. Il loro destinatario è tipicamente un lettore umano i commenti possono apparire in qualunque punto all’interno del testo con le seguenti eccezioni: non possono apparire all’interno di un delimitatore di apertura o di chiusura di un elemento non possono apparire all’interno di un commento <!– questo è un commento XML -->

Document Type Definition - DTD La DTD definisce la tipologia dei marcatori XML per la codifica del testo e le regole della loro combinazione definisce la “grammatica” del linguaggio di marcatura associato a una specifica classe o tipo di documenti la DTD è uno schema di documento una volta che i marcatori definiti nella DTD sono intercalati nel testo questo diventa un’istanza del tipo di documento (document instance) La DTD è una lista non ordinata di dichiarazioni nella dtd vengono dichiarati - ovvero definiti - tutti gli oggetti necessari alla costruzione di un linguaggio di marcatura elementi attributi entità non importa in che ordine vengono effettuate le dichiarazioni ogni oggetto deve essere dichiarato una volta sola

Dichiarare un elemento La dichiarazione di un elemento si articola in due parti l’etichetta o tag che lo identifica (identificatore generico o generic identifier) la descrizione del suo contenuto in termini strutturali, denominata modello di contenuto (o content model) <!ELEMENT tag_elemento (modello_di_contenuto)> Gli elementi si suddividono in “contenitori” che possono contenere testo altri elementi (sotto-elementi) testo ed elementi (contenuto misto) vuoti

Dichiarare un elemento Il più semplice modello di contenuto è rappresentato da dati di tipo carattere Il modello di contenuto consiste nella parola riservata #PCDATA (Parsed Character data) che specifica che il contenuto dell’elemento in corso di definizione è testo senza marcatori <!ELEMENT tag_elemento (#PCDATA)> Esempio: <!ELEMENT autore (#PCDATA)>

Dichiarare un elemento Il contenuto di un elemento può essere costituito esclusivamente da sotto-elementi (o elementi figli) per i quali è possibile specificare le modalità di occorrenza Possono essere stabilite restrizioni sul numero di volte in cui ciascun sotto-elemento può ricorrere all’interno di un elemento padre attraverso indicatori di occorrenza aggiunti come “suffissi” al nome del sotto-elemento Simbolo Descrizione Numero occorrenze ? occorrenza opzionale 0 o 1 + occorrenza obbligatoria e ripetibile 1 * occorrenza opzionale e ripetibile 0 Se un sotto-elemento non è seguito da nessuno di questi indicatori, esso deve ricorrere esattamente una volta

Dichiarare un elemento Elemento obbligatorio deve ricorrere esattamente una volta Un libro deve avere un titolo, quindi l’elemento libro deve avere un sotto-elemento titolo Esempio: <!ELEMENT libro (titolo)> titolo

Dichiarare un elemento Elemento opzionale ricorre 0 o 1 volta Un titolo può avere opzionalmente un sottotitolo, quindi l’elemento titolo può avere un sotto-elemento sottotitolo Esempio: <!ELEMENT titolo (sottotitolo?)> sottotitolo

Dichiarare un elemento Elemento ripetibile e obbligatorio che ricorre una o più volte Un libro ha degli autori, almeno uno Quindi l’elemento libro deve contenere al suo interno una o più occorrenze del sotto-elemento autore Esempio: <!ELEMENT libro (autore+)> autore

Dichiarare un elemento Elemento ripetibile e opzionale che ricorre 0 o più volte Ad esempio, un libro può avere dei traduttori oppure no Quindi l’elemento libro può contenere al suo interno zero o più occorrenze del sotto-elemento traduttore Esempio: <!ELEMENT libro (traduttore*)> traduttore

Dichiarare sequenze di sotto-elementi Nel caso in cui i sotto-elementi di un elemento siano più di uno, è possibile specificare la loro co-occorrenza e il loro ordinamento Un libro è articolato al suo interno in diversi tipi di informazioni: gli autori, il titolo, eventualmente il sottotitolo, eventualmente i traduttori e così via L’elemento libro contiene al suo interno una sequenza di sotto- elementi: la virgola specifica che i sotto-elementi devono ricorrere all’interno dell’elemento nell’ordine specificato Esempio: <!ELEMENT libro (autore+,titolo,sottotitolo?,traduttore*)> traduttore titolo sottotitolo autore

Dichiarare alternative tra sotto-elementi Un elemento padre può contenere uno a scelta tra più sotto- elementi elencati Un libro può avere un ISBN oppure un codice L’elemento libro contiene al suo interno una tra le alternative elencate: la barra verticale indica che i sotto- elementi rappresentano scelte alternative Esempio: <!ELEMENT libro (ISBN | codice)> ISBN codice

Dichiarazione di un elemento Modelli di contenuto complessi È possibile definire modelli di contenuto complessi raggruppando scelte alternative e/o sequenze di sotto-elementi attraverso l’uso di parentesi Ai sotto-elementi complessi così definiti possono essere associati indicatori di occorrenza: ad esempio, la dichiarazione (s2|s3)* indica che l’elemento in corso di definizione può contenere un numero indefinito da 0 a n sotto-elementi di tipo s2 e/o s3 senza vincoli sull’ordine reciproco di occorrenza. Esempi: <!ELEMENT tag_elemento (s1,s2?,s3*)> <!ELEMENT tag_elemento (s1|s2|s3)> <!ELEMENT tag_elemento (s1+,(s2|s3)*)>

Dichiarazione di un elemento Modelli di contenuto misto È possibile definire elementi a contenuto misto, caratterizzati dalla presenza di sotto-elementi intervallati da dati di tipo carattere Modello di contenuto particolarmente utile nella codifica di un testo Un elemento a contenuto misto è dichiarato come segue <!ELEMENT tag_elemento (#PCDATA|s1|...|sn)*> Nel modello di contenuto misto: la parola riservata #PCDATA deve essere obbligatoriamente la prima della lista i vincoli riguardano soltanto la tipologia dei sotto-elementi, e non l’ordinamento reciproco o il numero delle loro occorrenze ad es. (#PCDATA|s1|s2)* specifica che l’elemento definito può contenere qualsiasi numero (0) di elementi di tipo s1 e s2 in qualsiasi ordine, opzionalmente intervallati da dati di tipo carattere

<!ELEMENT tag_elemento EMPTY> Altri tipi di elementi Elemento vuoto Non può contenere niente (né testo né sotto-elementi) Un elemento a contenuto vuoto è dichiarato come segue <!ELEMENT tag_elemento EMPTY> esempio: <!ELEMENT salto_pagina EMPTY> Elemento jolly può contenere qualsiasi cosa <!ELEMENT tutto ANY>

Dichiarare elementi un esempio <!ELEMENT libro (autore+,titolo,sottotitolo?,capitolo+)> <!ELEMENT autore (#PCDATA)> <!ELEMENT titolo (#PCDATA)> <!ELEMENT sottotitolo(#PCDATA)> <!ELEMENT capitolo(#PCDATA|verbo)*> <!ELEMENT verbo(#PCDATA)> <libro> <autore>Carlo Collodi</autore> <titolo>Le avventure di Pinocchio</titolo> <capitolo> C‘<verbo>era</verbo> una volta...- Un re! - <verbo>diranno</verbo> subito i miei piccoli lettori. </capitolo> <capitolo>Questo è un altro capitolo</capitolo> </libro>

Dichiarazione di attributi Definisce l’insieme degli attributi pertinenti per la descrizione di un elemento Per ciascun attributo stabilisce vincoli sulla tipologia dei valori che può assumere fornisce informazioni circa l’obbligatorietà della sua specificazione e, eventualmente, sul suo valore di default <!ATTLIST tag_elemento tag_attributo1 tipo_valore modificatore … tag_attributon tipo_valore modificatore>

Tipi di attributo Tipo di attributo Valori associati CDATA Il valore dell’attributo può contenere qualsiasi stringa di caratteri (anche spazi) (Character DATA) NMTOKEN, NMTOKENS Questo attributo può contenere una o più (nel caso di NMTOKENS) stringhe contenenti caratteri alfanumerici (numeri e lettere) più i seguenti caratteri: ‘.’ (punto), ‘-’ (meno), ‘_’ (trattino basso), ‘:’ (due punti). (valore1 | valore2 | … | valoren) enumerated È un tipo di attributo che può assumere un valore solo tra un insieme di possibili valori definiti dall’autore della DTD

Tipi di attributo Tipo di attributo Valori associati ID Il valore dell’attributo deve essere una sequenza di caratteri che costituisce l’identificatore univoco dell’elemento a cui l’attributo è associato IDREF, IDREFS Il valore dell’attributo è una sequenza di caratteri che costituisce il valore dell’attributo ID di un altro elemento nello stesso documento XML. IDREFS permette invece di specificare una lista di sequenze di caratteri ciascuna delle quali costituisce il valore dell’attributo ID di un altro elemento nello stesso documento XML ENTITY, ENTITIES Il valore dell’attributo deve contenere uno o più (nel caso di ENTITIES) nomi di entità, dichiarate a loro volta all’interno della DTD

Modificatori per gli attributi #REQUIRED l’ attributo deve essere obbligatoriamente specificato nell’elemento #IMPLIED la specificazione dell’attributo è opzionale #FIXED permette di fissare nella dichiarazione dell’attributo il valore associato a quell’attributo che rimane costante e immutabile es. #FIXED “valore_fisso” Literal ovvero un valore predefinito – o valore di default l’attributo è opzionale; se non viene reso esplicito, all’elemento viene automaticamente assegnato in fase di validazione l’attributo ocn il valore predefinito es. “valore_default”

Dichiarazioni di attributo: esempi <!ATTLIST capitolo c_id ID #REQUIRED> <!ATTLIST telefono tipo (casa|ufficio|cell) “casa”> <!ATTLIST parola lemma CDATA #REQUIRED pos (n|v|agg|avv|art|prep) #REQUIRED num (sing|plur) #IMPLIED gen (fem|masc) #IMPLIED id_parola ID #REQUIRED ref_forma IDREF #IMPLIED> attributo obbligatorio attributo opzionale con valore predefinito attributi opzionali

Uso di identificatori e riferimenti <!ELEMENT biblioteca (autori,libri)> <!ELEMENT autori (autore*)> <!ELEMENT libri (libro*)> <!ELEMENT autore (nome,cognome,dataNascita)> <!ELEMENT nome (#PCDATA)> <!ELEMENT cognome (#PCDATA)> <!ELEMENT dataNascita (#PCDATA)> <!ATTLIST autore ident ID #REQUIRED> <!ELEMENT libro (titolo,data)> <!ELEMENT titolo (#PCDATA)> <!ELEMENT data (#PCDATA)> <!ATTLIST libro scrittoDa IDREFS #REQUIRED>

Uso di identificatori e riferimenti <biblioteca> <autori> <autore ident=“001”> … </autore> <autore ident=“002”> … </autore> <autore ident=“003”> … </autore> … </autori> <libri> <libro scrittoDa=“001”> … </libro> <libro scrittoDa=“001 002”> … </libro> <libro scrittoDa=“003 005 009”> … </libro> </libri> </biblioteca>

Struttura di un documento XML Un documento XML si articola in due parti: prologo contiene le informazioni che permettono di interpretare il documento come un documento XML, ricollegandolo alla corrispondente DTD (ove esista) istanza del documento racchiude il dato testuale vero e proprio con la relativa marcatura ATTENZIONE! il prologo è facoltativo ma è sempre consigliabile inserirlo nei propri documenti per favorire completezza di informazione e possibilità di validazione automatica

Il prologo del documento XML Si articola a sua volta in due parti dichiarazione XML (XML Declaration) fornisce informazioni sulla versione di XML utilizzata per scrivere il documento attributo version (il valore attuale è “1.0”) specifica il set di caratteri utilizzato per la codifica attributo encoding (il valore è il nome di un seto di caratteri, es. “iso-8859-1”) se l’attributo è omesso, il documento è interpretatao coms codificato in UTF-8 indica se al documento è associata o meno una DTD esterna attributo standalone (vali valori sono “yes” o “no”); se omesso è interpretato come “no” <?XML version="1.0" encoding=“iso-8859-1" standalone="no"?> dichiarazione del tipo di documento (DocType Declaration) specifica qual è l’elemento radice dell’istanza del documento che segue associa al documento XML la relativa DTD che può essere interna o esterna al documento è opzionale; deve essere aggiunta solo quando bisogna validare il documento XML rispetto a una DTD <!DOCTYPE elemento_radice DTD>

Dichiarazione del tipo di documento <!DOCTYPE elemento_radice DTD> dove DTD può corrispondere a l’intera DTD riportata tra parentesi quadre [ … ] (DTD interna al documento) Esempio: <!DOCTYPE libro [ <!ELEMENT libro (titolo, autore+, parte+)> <!ELEMENT titolo (#PCDATA | sottotitolo)*> … ] >

Dichiarazione del tipo di documento <!DOCTYPE elemento_radice DTD> dove DTD può corrispondere a un riferimento al file in cui la DTD è contenuta (DTD esterna) la sintassi del riferimento può essere SYSTEM “URI_DTD” URI_DTD è un nome di file oppure di un indirizzo Web le virgolette sono obbligatorie PUBLIC Formal_Public_Identifier “URI_DTD” nel caso il riferimento riguardi una DTD standard <!DOCTYPE libro SYSTEM “pinocchio.dtd”> <!DOCTYPE libro SYSTEM “http://www.unipi.it/pinocchio.dtd>”

Dichiarazione del tipo di documento DTD mista suddivisa in due porzioni, una interna e una esterna al documento (in questo caso si distingue tra internal subset e external subset) <!DOCTYPE libro SYSTEM “libro.dtd” [ <!ELEMENT traduttore (nome,cognome)> <!ELEMENT nome (#PCDATA)> <!ELEMENT cognome (#PCDATA)> ] > il sottoinsieme interno viene elaborato per primo e gli viene data la precedenza su qualsiasi sottoinsieme esterno funzionalità utile quando si ricorra a una DTD esterna, di cui si desidera modificare alcune parti per un’applicazione specifica

Livelli di correttezza Due livelli di correttezza di un documento XML Documento ben formato obbedisce a tutte le regole della sintassi XML esiste un elemento radice a ogni tag di apertura corrisponde uno di chiusura (senza accavallamenti) i valori degli attributi sono racchiusi tra virgolette le entità sono tutte dichiarate i caratteri speciali sono stati sostituiti da riferimenti a entità Documento valido è ben formato rispetta la struttura prevista dalla DTD il documento diventa un’istanza valida della classe di documenti definiti dalla DTD

Parser XML Parser non validanti Parser validanti controllano solo se il documento XML è ben formato costruiscono un “albero” dei tag del documento Es. Internet Explorer Parser validanti controllano se il documento XML è ben formato verificano se il documento è conforme alla DTD Es. TEI Emacs

Un esempio di DTD <!-- dtd per un libro -->   <!ELEMENT libro (titolo, autore+, parte+)> <!ELEMENT titolo (#PCDATA | sottotitolo)*> <!ELEMENT sottotitolo (#PCDATA)> <!ELEMENT autore (#PCDATA)> <!ELEMENT parte (titolo, capitolo+)> <!ELEMENT capitolo (titolo, capoverso+)> <!ELEMENT capoverso (#PCDATA)> <!ATTLIST parte p_id ID #REQUIRED> <!ATTLIST capitolo c_id ID #REQUIRED> <!ATTLIST capoverso num ID #REQUIRED> <!ENTITY ograve "ò"> <!ENTITY egrave "è"> Le dichiarazioni di elementi, attributi ed entità possono essere anche mescolate

Un esempio di documento XML valido <?xml version=”1.0” encoding=”utf-8”?> <!DOCTYPE libro SYSTEM “libro.dtd”> <!-- qui comincia l’istanza del --> <libro> <titolo>Le avventure di Pinocchio <sottotitolo>Storia di un burattino</sottotitolo> </titolo> <autore>Carlo Collodi</autore> <parte p_id=”cap1”> <titolo>Parte prima</titolo> <capitolo c_id=”I”> <titolo> Come andò che maestro Ciliegia, falegname, trovò un pezzo di legno, che piangeva e rideva come un bambino.</titolo> <capoverso num=”p1c1c1”>C'era una volta...</capoverso> <!-- altri capoversi del capitolo qui --> </capitolo> <!-- altri capitoli della parte qui --> </parte> <!-- altre parti qui --> </libro> Se mettiamo solo il nome del file della DTD, questa deve stare nella stessa cartella del documento XML

Annotare i dati linguistici

Cosa annotare? Schema di annotazione L’annotazione linguistica di un testo consiste nella codifica di informazione linguistica associata al dato testuale Schema di annotazione un repertorio di categorie per la codifica, corrispondenti alla tipologia dei tratti da rappresentare nel testo generalmente espresso nella forma di attributi e dei loro possibili valori la definizione delle regole di compatibilità tra categorie es. l’aggettivo non possiede un attributo di persona, o un nome quello di tempo la specifica accurata dei criteri di applicazione al testo delle categorie selezionate

Schemi di annotazione Elementi critici ATTENZIONE!! il grado di copertura dello schema; la riproducibilità dell’annotazione l’interazione con altri livelli di descrizione il grado di espressività dell’annotazione ATTENZIONE!! il ruolo del linguista nell’annotazione testuale NON si ferma solo alla definizione del contenuto dello schema di annotazione le modalità della sua applicazione sul testo NON rappresentano un aspetto contingente e puramente secondario rispetto alla fase di specifica linguistica

Livelli di annotazione Annotazione morfosintattica categorie grammaticali, lemma, glosse morfemiche, ecc. Annotazione sintattica costituenti, relazioni grammaticali, ecc. Annotazione semantica sensi o categorie semantiche (es. ANIMATO), ruoli semantici (es. AGENTE), ecc. Annotazione pragmatica atti illocutori, relazioni anaforiche ecc.

Anatomia di uno schema di annotazione I “gradi di libertà” di uno schema di annotazione gli scopi della ricerca per la quale l’annotazione è progettata la teoria linguistica di riferimento la modalità (ad es. manuale, semi-automatica, ecc.) con cui l’annotazione viene effettuata la “granularità” della descrizione linguistica le caratteristiche stesse della lingua dei testi da annotare esistono molteplici schemi di annotazione per ciascuno livello linguistico

Anatomia di uno schema di annotazione Uno schema di annotazione è la risultante della combinazione di un ristretto insieme di tipi di informazione linguistica di base, trasversali ai livelli di analisi linguistica informazione categoriale - l’assegnazione di categorie alle unità e relazioni linguistiche identificate in un testo (ad es. verbo, sintagma nominale, soggetto, animato, ecc.); informazione strutturale - l’identificazione nel testo di strutture che possono o essere interne a un particolare token (ad es. la sua articolazione in morfermi) o raggruppare più token (ad es. i costituenti dell’annotazione sintattica); informazione relazionale - la definizione di relazioni tra le unità linguistiche identificate, (ad es. soggetto e oggetto diretto, le relazioni anaforiche, i ruoli semanticiecc.) Ogni tipo di informazione pone specifici problemi di rappresentazione in XML

Annotazione e informazione categoriale Etichette che associano categorie o tratti linguistici alle unità identificate nel testo (o alle loro relazioni) Maestro_Ciliegia/np_ms ,/pun falegname/nc_ms ,/pun trovò/v_ s3ir un/arti_ms pezzo/nc_ms di/prep legno/nc_ms Rappresentazioni XML l’informazione categoriale come attributi XML <pm cat=”nc_ms”> <orto>legno</orto> </pm> <pm pos=”nome” sottotipo=”nome_comune” num=”sing” gen=”masc” lemma=”legno”>

Annotazione e informazione categoriale Rappresentazioni XML l’informazione categoriale come elementi XML <pm> <orto>legno</orto> <pos>nome</pos> <accordo> <num>sing</num> <gen>masc</gen> </accordo> </pm>

Annotazione e informazione strutturale Identificazione delle unità strutturali del testo (sia internamente al singolo token sia tra token diversi) e la loro organizzazione in strutture gerarchiche [ [[Maestro Ciliegia] [falegname]] [[trovò] [[un pezzo] [di [legno]]]]] Generalmente l’annotazione strutturale si accompagana anche all’indicazione di informazione categoriale es. tipi di costituenti

Annotazione e informazione strutturale Rappresentazioni XML Strutture sintattiche <struct><cat>F</cat> <struct><cat>SN</cat> <orto>Maestro</orto> <orto>Ciliegia</orto> </struct> <orto>falegname</orto> <struct><cat>SV</cat> <struct><cat>V</cat> <orto>trovò</orto></struct> <orto>un</orto> <orto>pezzo</orto> <struct><cat>SP</cat> <orto>di</orto> <orto>legno</orto> </struct></struct></struct></struct></struct> Strutture morfologiche <struct> <orto>mangiarlo</orto> <struct lemma=”MANGIARE”/> <struct lemma=”LO”/> </struct>

Annotazione e informazione relazionale L’informazione relazionale collega tra loro unità linguistiche previamente identificate (ad es. token, unità morfolessicali, costituenti sintattici) Dipendenze sintattiche Dipendenze anaforiche Maestro Ciliegiah regala il pezzo di legnoi al suoh amico Geppettoj, il qualej loi prende per fabbricarsi un burattino maravigliosok chek sappia ballare, tirar di scherma e fare i salti mortali. un legno Maestro Ciliegia, falegname, trovò pezzo di SOGG OGG COMP

Annotazione e informazione relazionale Rappresentazioni XML Annotazione distribuita <pm id=”pm_1”> <orto>Maestro</orto><orto>Ciliegia</orto></pm> <pm id=”pm_2”><orto>falegname</orto></pm> <pm id=”pm_3”><orto>trovò</orto></pm> <pm id=”pm_4”><orto>un</orto></pm> <pm id=”pm_5”><orto>pezzo</orto></pm> ... <rel tipo=”sogg” testa=”pm_3” dipendente=”pm_1”/> <rel tipo=”ogg_diretto” testa=”pm_3” dipendente=”pm_5”/> Dipenzenze come attribuiti <pm id=”pm_1” deprel=”sogg” testa=”pm_3”> <orto>Maestro Ciliegia</orto></pm> <pm id=”pm_5” deprel=”ogg_diretto” testa=”pm_3”> <orto>pezzo</orto> </pm>