Transcript Document

DOTTORATO IN LINGUISTICA
GENERALE, STORICA, APPLICATA, COMPUTAZIONALE E
DELLE LINGUE MODERNE
Linguistica Computazionale
Metodi computazionali per l'esplorazione e
la rappresentazione dei dati linguistici
Alessandro Lenci
Dipartimento di Linguistica
Sommario
 Esplorare 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
2
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
3
DOTTORATO IN LINGUISTICA
GENERALE, STORICA, APPLICATA, COMPUTAZIONALE E
DELLE LINGUE MODERNE
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
5
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
6
RE e Pattern Matching
 In Perl una RE è un’espressione della forma
/<pattern>/
 Uso delle espressioni regolari in Perl
1. Si definisce un pattern tramite una RE
2. La RE viene verificata su un testo e produce come risultato un valore
booleano (true-false):
ú
t r ue
sa
 true = il testo contiene
una
out put
= stringa che corrisponde (match) al pattern
f alse
 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)
7
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/
“il testo del corpus”
/a/
“il cane di Mario è nero”
“mark up del testo”
/mark up/
/Linguistica/
“markup del testo”
“la Linguistica Computazionale”
“la linguistica computazionale”
8
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”
9
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]/
/[a-z]/
è equivalente a /[2345]/
è equivalente a /[abcdefghijklmnopqrstuvwxyz]/
10
Classe di caratteri
 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%”
qualsiasi carattere che non
sia né ‘s’ né ‘t’
“2 parole”
/[^st]/
“il tempo”
“ssssss”
ATTENZIONE!
 ‘^’ ha valore negativo solo quando compare subito dopo la ‘[‘

/[2^]/
il carattere ‘2’ o ‘^’
“3^5”
11
Classe di caratteri
 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
12
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’
13
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”
14
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”
un numero infinitamente
lungo che deve contenere
almeno una cifra
“2” “43” “534” “3546” “3830”
“87474”
/[0-9]+/
un numero infinitamente
lungo che deve contenere
almeno una cifra
“2” “43” “534” “3546” “3830”
“87474”
/ba+/
il carattere ‘b’ seguito da 1 o
n ‘a’
“ba” “baa” “baaa” “baaaa”
“baaaaa” …
/[0-9][0-9]*/
“la repubblica”
“la repubblica”
15
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
“aab”
“ab”
“aaab”
16
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”
“ad”
“ac”
“ad”
s/a/i/g
“cavallo”
“civillo”
s/a/i/
“cavallo”
“civallo”
17
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” …
qualsiasi stringa che inizia
per b e termina per s
“bs” “bas” “bbs” “b3s” “b!s” “b
s” “b,s” “baas”
/b.*s/
“baas”
“bisogna prendere l’autobus”
/.*/
qualsiasi stringa (compresa
quella vuota)
l’intero corpus, anche se vuoto
18
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”
19
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.)
20
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/
/p(.)o p\1o/
/p.o p.o/
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
“abab”
“abbabb”
“aabaab”
“abbaab”
la variabile “\1” corrisponde a
qualunque stringa abbia fatto matching
con il contenuto delle parentesi
“pio pio” “pao pao” “pro pro”,
ecc.
la wildcard “.” può essere sostituita da
qualsiasi carattere
“pio pio” “pio pao” “pro pso”,
“pao pio”, ecc.
“pio pao” “pao peo”
21
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/


/\[a/
/a./
ERRORE! ‘[‘ è interpretato come operatore di disgiunzione e
manca la parentesi ‘]’
la stringa “[a”
qualsiasi stringa di due caratteri che inizia con ‘a’
“ab” “au” as” “a1” “a?” …



/a\./
/cane?/
/cane\?/
la stringa di testo “a.”
le stringhe “cane” e “can”
la stringa “cane?”
22
Ancore
 Le ancore sono caratteri speciali che specificano
dove deve comparire il pattern di testo da cercare


/^<pattern>/
/<pattern>$/
il <pattern> deve comparire all’inizio di una linea
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¶”
/^La/
/^La Spezia$/
“il cane di Mario”
la stringa ‘La’ quando
compare all’inizio di una
linea
“¶La macchina era guasta”
una riga che contiene solo la
stringa “La Spezia”
“¶La Spezia¶”
“il treno per La Spezia”
“…a La Spezia per lavoro …”
23
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 è …”
/\Bcane\b/
la stringa ‘cane’ deve avere a
destra (ma non a sinistra) un
confine di parola
“il canestro” “le americane sono”
“il cane è …”
“il canestro” “le americane sono”
24
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
Sequenze e ancore
Alternativa
()
? * + {m,n}, ecc.
ata ^ $ \b
|
 Le parentesi ( ) permettono di alterare l’ordine di
precedenza
/a|b+/
vs.
/(a|b)+/
25
DOTTORATO IN LINGUISTICA
GENERALE, STORICA, APPLICATA, COMPUTAZIONALE E
DELLE LINGUE MODERNE
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
27
La codifica digitale del testo
Il testo e la sua organizzazione
intestazione
capitolo
titolo
testo
28
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
29
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.
30
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)
31
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
32
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
33
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
34
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
Conoscenza
La gerarchia
dell’informazione
Informazione
Dati
Dati = contenuto grezzo dell’informazione
Informazione = dati + interpretazione (struttura)
Conoscenza = informazione + teoria
35
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
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
dati di un auto
informazione su un auto
conoscenza sulle auto
(struttura, funzionamento,
tipologie, ecc.)
36
Perché codificare?
La gerarchia dell’informazione linguistica
modelli della lingua
conoscenza
linguistica
informazione linguistica
dati linguistici
la conoscenza della
lingua
l’organizzazione strutturale
e linguistica di un testo
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
37
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.)
38
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à
39
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
40
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
41
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>
42
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>
43
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
44
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
45
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
46
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>
47
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
48
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>
49
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)
50
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)
51
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
52
I componenti della marcatura XML
gli elementi
Elemento
delimitatore
di apertura
Contenuto
delimitatore
di chiusura
 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>
53
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
54
I componenti della marcatura XML
relazioni tra elementi
 due elementi XML possono essere
annidati l’uno nell’altro
LIBRO
CAPITOLO
SEZIONE
SEZIONE
CAPITOLO
SEZIONE
SEZIONE
SEZIONE
 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
55
I componenti della marcatura XML
relazioni tra elementi
LIBRO
CAPITOLO
SEZIONE
SEZIONE
 struttura XML mal formata in
quanto esiste un elemento “a
cavallo” di due elementi
(annidamento improprio)
 in XML non è consentita la
sovrapposizione tra elementi
CAPITOLO
SEZIONE
SEZIONE
 un elemento figlio deve essere
completamente incluso
nell’elemento padre
56
I componenti della marcatura XML
l’elemento radice
CAPITOLO
SEZIONE
 ogni documento XML ben formato
deve contenere un elemento che
contiene tutti gli altri elementi
(elemento radice)
SEZIONE
CAPITOLO
SEZIONE
SEZIONE
 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”
57
I componenti della marcatura XML
il documento XML come albero
LIBRO
CAPITOLO
sezione
stringa di caratteri
SEZIONE
capitolo
SEZIONE
SEZIONE
sezione
LIBRO
CAPITOLO
SEZIONE
SEZIONE
SEZIONE
SEZIONE
stringa di caratteri
sezione
capitolo
sezione
sezione
SEZIONE
58
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>
59
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/>
60
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
61
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>
62
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
63
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 -->
64
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
65
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
66
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)>
67
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
?
occorrenza opzionale
+
occorrenza obbligatoria e ripetibile
*
occorrenza opzionale e ripetibile
Numero occorrenze
0o1
1
0
 Se un sotto-elemento non è seguito da nessuno di questi
indicatori, esso deve ricorrere esattamente una volta
68
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
titolo
 Esempio:
<!ELEMENT libro (titolo)>
69
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
sottotitolo
 Esempio:
<!ELEMENT titolo (sottotitolo?)>
70
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
autore
 Esempio:
<!ELEMENT libro (autore+)>
71
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
traduttore
 Esempio:
<!ELEMENT libro (traduttore*)>
72
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 sottoelementi: la virgola specifica che i sotto-elementi devono ricorrere
all’interno dell’elemento nell’ordine specificato
autore
titolo
sottotitolo
traduttore
 Esempio:
<!ELEMENT libro (autore+,titolo,sottotitolo?,traduttore*)>
73
Dichiarare alternative tra sotto-elementi
 Un elemento padre può contenere uno a scelta tra più sottoelementi 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 sottoelementi rappresentano scelte alternative
ISBN
 Esempio:
codice
<!ELEMENT libro (ISBN | codice)>
74
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)*)>
75
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
76
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
esempio:
<!ELEMENT tutto ANY>
77
Dichiarare elementi
un esempio
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
libro (autore+,titolo,sottotitolo?,capitolo+)>
autore (#PCDATA)>
titolo (#PCDATA)>
sottotitolo(#PCDATA)>
capitolo(#PCDATA|verbo)*>
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>
78
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>
79
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)
È un tipo di attributo che può assumere un valore solo
tra un insieme di possibili valori definiti dall’autore
della DTD
enumerated
80
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
81
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”
82
Dichiarazioni di attributo: esempi
<!ATTLIST capitolo
c_id ID #REQUIRED>
attributo obbligatorio
<!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 opzionale
con valore
predefinito
attributi opzionali
83
Uso di identificatori e riferimenti
<!ELEMENT biblioteca (autori,libri)>
<!ELEMENT autori (autore*)>
<!ELEMENT libri (libro*)>
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ATTLIST
autore (nome,cognome,dataNascita)>
nome (#PCDATA)>
cognome (#PCDATA)>
dataNascita (#PCDATA)>
autore ident ID #REQUIRED>
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ATTLIST
libro (titolo,data)>
titolo (#PCDATA)>
data (#PCDATA)>
libro scrittoDa IDREFS #REQUIRED>
84
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>
85
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
86
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>
87
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)*>
… ] >
88
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>”
89
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
90
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
91
Parser XML
 Parser non 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
 costruiscono un “albero” dei tag del documento


verificano se il documento è conforme alla DTD
Es. TEI Emacs
92
Un esempio di DTD
<!-- dtd per un libro -->
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
libro (titolo, autore+, parte+)>
titolo (#PCDATA | sottotitolo)*>
sottotitolo (#PCDATA)>
autore (#PCDATA)>
parte (titolo, capitolo+)>
capitolo (titolo, capoverso+)>
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
"&#x00F2;">
"&#x00E8;">
93
Un esempio di documento XML valido
<?xml version=”1.0” encoding=”utf-8”?>
Se mettiamo solo il nome
del file della DTD, questa
<!DOCTYPE libro SYSTEM “libro.dtd”>
deve stare nella stessa
<!-- qui comincia l’istanza del -->
cartella del documento XML
<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&ograve; che maestro Ciliegia,
falegname, trov&ograve; 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>
94
DOTTORATO IN LINGUISTICA
GENERALE, STORICA, APPLICATA, COMPUTAZIONALE E
DELLE LINGUE MODERNE
Annotare i dati linguistici
Cosa annotare?
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
96
Schemi di annotazione
 Elementi critici




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
97
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.
98
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
99
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
100
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”>
<orto>legno</orto>
</pm>
101
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>
102
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
103
Annotazione e informazione strutturale
Rappresentazioni XML
 Strutture sintattiche
 Strutture morfologiche
<struct><cat>F</cat>
<struct>
<struct><cat>SN</cat>
<orto>mangiarlo</orto>
<struct><cat>SN</cat>
<orto>Maestro</orto>
<struct lemma=”MANGIARE”/>
<orto>Ciliegia</orto>
<struct lemma=”LO”/>
</struct>
</struct>
<struct><cat>SN</cat>
<orto>falegname</orto>
</struct>
</struct>
<struct><cat>SV</cat>
<struct><cat>V</cat>
<orto>trov&#x00F2;</orto></struct>
<struct><cat>SN</cat>
<struct><cat>SN</cat>
<orto>un</orto>
<orto>pezzo</orto>
</struct>
<struct><cat>SP</cat>
<orto>di</orto>
<struct><cat>SN</cat>
<orto>legno</orto>
</struct></struct></struct></struct></struct>
104
Annotazione e informazione relazionale
 L’informazione relazionale collega tra loro unità
linguistiche previamente identificate (ad es. token, unità
morfolessicali, costituenti sintattici)
 Dipendenze sintattiche
SOGG
Maestro Ciliegia, falegname,
trovò un
pezzo
OGG
di
legno
COMP
Maestro Ciliegia, falegname, trovò un pezzo di legno
 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.
105
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&#x00F2;</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_3”><orto>trov&#x00F2;</orto></pm>
<pm id=”pm_5” deprel=”ogg_diretto” testa=”pm_3”>
<orto>pezzo</orto>
</pm>
106