La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Alessandro Lenci Dipartimento di Linguistica

Presentazioni simili


Presentazione sul tema: "Alessandro Lenci Dipartimento di Linguistica"— Transcript della presentazione:

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

2 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

3 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

4 Esplorare i dati linguistici

5 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

6 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

7 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)

8 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”

9 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” /[ ]/ 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’ “ ” /123/ la stringa di caratteri ‘123’ “ ” “ ”

10 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]/

11 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”

12 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

13 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’

14 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”

15 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” …

16 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

17 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”

18 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

19 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”

20 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.)

21 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.

22 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?”

23 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 …”

24 “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

25 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)+/

26 Rappresentare i dati linguistici

27 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

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

29 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

30 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.

31 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)

32 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

33 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

34 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

35 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

36 La gerarchia dell’informazione
benzina, 4 cil. in linea 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: 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.)

37 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

38 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.)

39 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à

40 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

41 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

42 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>

43 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>

44 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

45 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

46 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

47 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>

48 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

49 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>

50 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)

51 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)

52 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

53 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>

54 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>, non esiste un limite di lunghezza per il nome di un elemento

55 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

56 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

57 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

58 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

59 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>

60 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/>

61 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

62 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>

63 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

64 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 -->

65 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

66 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

67 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)>

68 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

69 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

70 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

71 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

72 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

73 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

74 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

75 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)*)>

76 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

77 <!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>

78 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>

79 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>

80 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

81 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

82 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”

83 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

84 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>

85 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=“ ”> … </libro> <libro scrittoDa=“ ”> … </libro> </libri> </biblioteca>

86 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

87 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 ”) 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 " 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>

88 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)*> … ] >

89 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>”

90 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

91 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

92 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

93 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

94 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

95 Annotare i dati linguistici

96 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

97 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

98 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.

99 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

100 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

101 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”>

102 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>

103 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

104 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>

105 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

106 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>


Scaricare ppt "Alessandro Lenci Dipartimento di Linguistica"

Presentazioni simili


Annunci Google