Preparazione del testo e tokenizzazione

Transcript

Preparazione del testo e tokenizzazione
Linguistica Computazionale
Il testo digitale e la sua
preparazione per il trattamento
computazionale
6 ottobre 2014
Preparazione del testo
l 
I testi digitali possono contenere varie forme di
“rumore”
l 
errori di conversione
l 
l 
l 
l 
caratteri spuri, ecc.
errori nella digitalizzazione (OCR)
codici di markup
Vari aspetti del testo legati alla sua fruizione
umana, possono ostacolarne l’elaborazione
computazionale
l 
l 
convenzioni ortografiche
diversi sistemi di scrittura
2
Preparazione del testo
l 
Preparazione del testo
l 
l 
serie di elaborazioni preliminari attraverso le quali
il testo viene preparato per l’analisi con strumenti
computazionali
Fasi principali
l 
l 
l 
l 
text cleaning
verifica dei caratteri del testo
normalizzazione del testo
tokenizzazione
3
Text cleaning
l 
I testi per le analisi computazionali sono sempre più
di frequente scaricati dal Web
l 
l 
contengono codici in formato testo che devono essere
rimossi per isolare il contenuto testuale
In generale, i documenti digitalizzati devono essere
ripuliti da tutti gli elementi che possono alterare le
successive elaborazioni computazionali
l 
l 
l 
tabelle, didascalie delle figure, intestazioni delle pagine e in
generale di materiale ripetuto per ragioni tipografiche
rimozione del mark-up html
eliminazione dei titoli per la barra di navigazione, frammenti
di codice JavaScript, links, ecc.
l  cf. iniziativa internazionale CLEANEVAL
4
Text cleaning
5
Text cleaning
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/ DTD/xhtml1transitional.dtd">
<html lang="en" dir="ltr" class="client-nojs” xmlns="http://www.w3.org/1999/xhtml"> <head>
<title>Human rights - Wikipedia, the free encyclopedia</title>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" /> <meta http-equiv="Content-Style-Type”
content="text/css" /> <meta name="generator"
content="MediaWiki 1.18wmf1" /> [...]
<p><b>Human rights</b> are "basic <a href="/wiki/Rights” title="Rights">rights</a> and <a href="/wiki/Freedoms”
title="Freedoms" class="mw-redirect">freedoms</a> that all people are entitled to regardless of nationality, sex,
age, national or ethnic origin, race, religion, language, or other status."<sup id="cite_ref-amnestydefinition_0-0”
class="reference"><a href="#cite_note-amnestydefinition-0"> <span>[</span>1<span>] </span></a></sup>
Human rights are conceived as <a href="/wiki/Universality_(philosophy)” title="Universality (philosophy)">
universal</a> and <a href="/wiki/Egalitarian" title="Egalitarian" class="mw-redirect"> egalitarian</a>, with all
people having equal rights by virtue of being human.<sup id="cite_ref-amnestydefinition_0-1”
class="reference"><a href="#cite_note-amnestydefinition-0"><span
Human rights are "basic rights and freedoms that all people are entitled to regardless of nationality,
sex, age, national or ethnic origin, race, religion, language, or other status." Human rights are
conceived as universal and egalitarian, with all people having equal rights by virtue of being human.
These rights may exist as natural rights or as legal rights, in both national and international law. The
doctrine of human rights in international practice, within international law, global and regional
institutions, in the policies of states and the activities of non-governmental organisations has been a
cornerstone of public policy around the world.
6
Caratteri e computer
Maestro
Ciliegia
a
carattere
97
codice (decimale) del carattere
01100001
codifica binaria del codice del
carattere
I computer elaborano internamente
solo sequenze di bits (0,1)
7
Numeri e numeri
X
numero
10
A
rappresentazione
di un numero
1010
l 
Sistema binario
l 
l 
l 
vengono usate due cifre (0 e 1) per rappresentare un numero
problema: i numeri binari sono estremamente lunghi e difficili da ricordare
Sistema esadecimale
l 
l 
l 
ogni numero è rappresentato con 16 cifre (0-9, A-F)
i numeri sono più corti di quelli binari
estrema facilità di conversione tra binario ed esadecimale
l 
l 
l 
l 
in una sequenza binaria, ogni stringa di 4 bits corrisponde ad una cifra esadecimale
0110 1111 0110
numero binario
(6) (15) (6)
6
F
6
numero esadecimale
8
Come sono rappresentati i
caratteri nel computer?
l 
Repertorio di caratteri
l 
l 
un insieme di caratteri (es. “A”, “a”, “!”, “à”, “P”, ecc.)
i caratteri sono entità astratte, da non confondersi con il modo in cui
sono realizzati graficamente (gliphs)
l 
l 
l 
Set di carattere (codice)
l 
una tabella che definisce una corrispondenza biunivoca (1-a-1) tra un
repertorio di caratteri e un insieme di numeri interi non negativi
l 
l 
“a”, “a”, “a”, “a” sono tutti lo stesso carattere “a”
la stessa realizzazione grafica può corrispondere a caratteri diversi (es.
“A” latino e “A” cirillico e “A” greco)
a ogni carattere è assegnato un codice numerico (punto di codice o code
position)
Codifica di carattere
l 
algoritmo che determina come i codici dei caratteri sono rappresentati in
sequenze di bits (bytes)
9
Il codice ASCII
l 
Primo standard per l’assegnazione di codici a caratteri (dal
1963)
l 
l 
l 
set di caratteri riconosciuto da tutti i computer
conosciuto come “ASCII Standard” o ISO-646
Codifica
l 
7 bits
l 
l 
l 
l 
ciascun punto di codice è rappresentato con il numero binario
corrispondente di 7 bits
in realtà 1 byte = 8 bits di cui un bit non è usato per la codifica (bit
di parità)
7 bits = 27 punti di codice = 128 caratteri rappresentati
Sufficiente per rappresentare l’inglese
l 
mancano i caratteri accentati, umlauts, ecc. per rappresentare
altri alfabeti occidentali
10
ASCII Standard
decimale ed esadecimale
11
Il set di caratteri ISO-Latin-1
l 
ISO-Latin-1 (ISO-8859-1 o ASCII esteso)
l 
l 
l 
unica estensione standard di ASCII
1 byte = 8 bits = 28 punti di codice = 256 caratteri rappresentati
sufficiente per lingue europee occidentali (italiano, francese, ecc.)
ASCII Standard
Caratteri di controllo
0-32
128-159
12
La famiglia di caratteri ISO-8859
l 
l 
14 set di caratteri standardizzati da ISO (International Standard
Organization)
Codifica
l 
l 
1 byte = 256 caratteri rappresentati da ciascun set
Soprainsiemi dei caratteri ASCII Standard
l 
punti di codice 0 - 127
punti di codice 128 - 159
l 
punti di codice 160 - 255
l 
ecc.
l 
I set di ISO-8859 sono tutti reciprocamente incompatibili
l 
Punto di codice 232
l 
l 
l 
(parte comune) ASCII
codici di controllo (non corrispondono a
caratteri grafici)
(parte variabile) caratteri aggiuntivi per
greco, cirillico, lingue slave, arabo,
ISO-8859-1 (Latin-1) = “è”
ISO-8859-6 (Cyrillic) = “ш”
ISO-8859 non copre lingue come giapponese, cinese, ecc.
13
La famiglia di caratteri ISO-8859
ISO-Latin-1
14
The Universal Character Set
UNICODE (ISO-10646)
l 
Standard internazionale che permette di rappresentare
qualsiasi tipo di carattere appartenente ai sistemi grafici
esistenti
l 
l 
lingue europee, asiatiche, arabo, ebraico, cirillico, ugaritico, ecc.
permette la composizione dinamica dei caratteri
l 
l 
Assegna un numero di codice univoco ad ogni carattere
l 
l 
l 
caratteri pre-composti (ç) equivalenti a caratteri composti
dinamicamente (c + ¸)
“è” = 232
“ш” = 1096
Risolve i problemi di incompatibilità dei sistemi ISO-8859
l 
l 
l 
estende l’insieme dei caratteri supportati
permette la realizzazione di documenti multilingue
http://www.unicode.org
15
The Universal Character Set
UNICODE (ISO-10646)
l 
Più di 100.000 caratteri grafici rappresentati (Unicode v. 6.2.0)
l 
l 
… ma i punti di codice disponibili sono più di 1 milione !!
Molteplici tipi di codifica:
l 
l 
UCS-2, UCS-4, UTF-8, UTF-16, ecc.
Codifica comune UTF-8
l  codifica di Unicode a lunghezza variabile che usa da 1 a 4 “ottetti” (blocchi di 8 bits =
1byte) per ogni carattere
l  UTF-8 usa 1 byte per la codifica dei caratteri corrispondenti al set ASCII
l  totale compatibilità con la codifica ASCII (…ma non con ISO-latin –1!!!)
16
The Universal Character Set
UNICODE (ISO-10646)
17
Caratteri e computer
1010011101
1010011101
1000100100
1000100100
1001010010
1001010010
0110010100
0110010100
Unicode
ISO-Latin-1
Ab bkйd ‫ﻭو‬٦‫ﻡمﻥن‬
Ab bkƛd ƛƛƛƛ
ds kjdks kdsk
ds kjdks kdsk
sybco oθδjpjp
sybco oƛƛjpjp
18
Caratteri e computer
Risoluzione dei problemi
l 
Analisi dei caratteri nel testo
l 
individuare il set di caratteri con cui è scritto il documento
l 
l 
l 
l 
individuare il set di caratteri accettati dal programma con cui si
deve elaborare il testo
verificare l’eventuale esistenza di caratteri non-standard
l 
l 
ASCII Standard, Unicode, ISO-8859, ecc.
cf. comando file nella shell di Linux
editor esadecimale
Conversione dei caratteri del testo per renderli compatibili con
quelli richiesti dal software
l 
l 
cf. comando iconv nella shell di Linux
NB: attenzione al differente “fine linea” in DOS/Windows (\r\n) e
Linux/Unix (\n)
19
Normalizzazione del testo
maiuscole e minuscole
l 
L’elaborazione computazionale del testo è normalmente “case
sensitive”
l 
l 
“treno” e “Treno” sono considerate due parole diverse
Ambiguità nell’uso della maiuscola:
l 
nomi propri
l 
l 
inizio frase
l 
l 
La macchina non partiva.
enfasi e titoli
l 
l 
l 
Carlo Azeglio Ciampi
… ma ATTENZIONE …
NUOVA STRAGE DEL TERRORE
Trasformare le maiuscole in minuscole (case-folding) non è
sempre la soluzione ottimale
l 
le maiuscole possono avere valore discriminativo e semantico
l 
cf. NATO vs. nato, USA vs. usa, Agnelli vs. agnelli
20
Il testo nel computer
l 
Organizzazione logica di un testo
l 
l 
l 
l 
l 
lettere
parole
frasi
paragrafi
Organizzazione fisica di un testo in formato “machine-readable”
l 
l 
l 
caratteri
sequenze di caratteri
righe
Problema
Le due modalità di organizzazione sono ortogonali e non direttamente compatibili
21
Analizzare un testo
l 
Per analizzare computazionalmente un testo è
necessario insegnare al computer a riconoscere gli
elementi che lo compongono
l 
l 
l 
l 
quante parole?
quante frasi?
ma …
l  cosa è una parola? cosa è una frase?
La nozione di parola per un computer è molto diversa
da quella per gli esseri umani
l 
l 
basata sulla conoscenza dell’organizzazione linguistica
(morfologica, semantica, ecc.)
l  questione ancora più complessa nel parlato
l’informazione grafica non è sempre sufficiente
22
Tokenizzazione
l 
l 
Passo preliminare di qualsiasi elaborazione
computazionale del testo è la sua tokenizzazione
Tokenizzare un testo significa dividere le sequenze di
caratteri in unità minime di analisi dette “token”
parole, punteggiatura, date, numeri, sigle, ecc.
l  i token possono essere anche entità strutturalmente
complesse (es. date), ma sono comunque assunte
come unità di base per i successivi livelli di elaborazione
(morfologico, sintattico ecc.)
La nozione di token è distinta da quella di parola
l 
l 
l 
le parole sono solo un sottoinsieme di token
23
Tokenizzazione
l 
l 
l 
A seconda del tipo di lingua e sistema di scrittura può essere un
task estremamente complesso
Nelle lingue non segmentate (in cui i confini di parola non
sono marcati esplicitamente nella scrittura, es. cinese,
giapponese, ecc.), la tokenizzazione di fatto richiede l’analisi
lessicale (word segmentation)
Molte ambiguità sono possibili
l 
la coppia di caratteri
può corrispondere a 1 parola
(monaco) o a 2 parole (e ancora)
24
Token
l 
Nelle lingue segmentate (in cui i confini di parola sono marcati da
spazi bianchi), la tokenizzazione si basa su un misto di criteri
ortografici e linguistici (superficiali)
l 
i criteri linguistici prescindono da qualsiasi forma di analisi morfologica o
sintattica
l 
l 
mandarglielo = 1 token ma… 3 parole dal punto di vista morfologico e
semantico (mandare + gli + lo)
Anche nelle lingue segmentate, non esiste un rapporto 1-1 tra token e
e sequenze di caratteri delimitate da spazi:
Dopo essere sceso, l’uomo si allontanò.
l 
6 tokens
§ 
l 
… in realtà 9 tokens
§ 
l 
l 
se usiamo solo il criterio degli spazi come delimitatori dei tokens
se consideriamo i tokens come unità linguistiche (es. parole, punteggiatura, ecc.)
convenzioni grafiche
organizzazione lessicale e morfologica della lingua, ecc.
25
Token
alcuni problemi
l 
Non ci sono spazi che separano le parole dalla
punteggiatura che segue (precede):
l 
l 
l 
l 
l 
… gli ispettori, …
… “Dobbiamo aumentare gli ispettori…
gli elementi principali (azoto e ossigeno) …
… il presidente francese a “Time”: …
Ci sono sequenze di caratteri non separati da spazi
che corrispondono a 2 token:
l 
apostrofo
l 
l 
l 
dell’uomo
c’è
parole composte con il trattino (“-”) o con il “/”:
l 
la linea Firenze-Pisa …
26
Punteggiatura e ambiguità
l 
La punteggiatura deve essere considerata come
tokens separati
ma …
l 
l 
La punteggiatura è ambigua!!!
Il carattere ' (apice) ha vari usi:
l 
apostrofo
l 
l 
(2 token)
accento
l 
l 
dell’uomo
c’e’
(2 token)
virgoletta
l 
‘token’
(3 token)
27
Punteggiatura e ambiguità
l 
Il carattere . (punto) ha vari usi:
l 
punto di fine frase
l 
Questa è una frase.
§ 
l 
abbreviazioni
l 
l 
9.70
data
l 
l 
U.S.A.
separatore di cifre decimali
l 
l 
Sig. Rossi
acronimi
l 
l 
in questo caso il punto deve essere considerato un token separato
25.02.2003
indirizzi WWW o e-mail
www.unipi.it
Correlato alla tokenizzazione è il sentence splitting
l 
l 
l 
segmentazione del testo in frasi
§ 
presuppone la disambiguazione dei diversi usi del “.”
28
Token graficamente complessi
l 
Sequenze di caratteri separate da spazi possono formare un solo
token:
l 
l 
l 
l 
nomi propri composti
l  New York
l  Los Angeles
l  Reggio Emilia
§  la città di La Spezia
(4 token)
§  la spezia che viene usata
(5 token)
espressioni polirematiche (multiword expressions)
l  al di là
(1 token)
l  ad hoc
(1 token)
date e ore
l  18 giugno 1815
(1 token)
prezzi
l  20 euro
(1 token)
l  20 euro e 30 centesimi
(1 token)
29
Tokenizzazione
criteri generali
l 
Per tokenizzare un testo è necessario stabilire i criteri di identificazione delle unità di
analisi
l 
l 
criteri linguistici, euristici, pratici, ecc.
l  es. le date sono token? gli indirizzi formano un token unico?
La tokenizzazione è strettamente dipendente da
l 
il linguaggio e sistema grafico del testo
l  diversi modi di scrivere i numeri
§ 
§ 
§ 
l 
§ 
§ 
l 
ihmisoikeussopimukseen (finlandese) -> convention for human rights (inglese)
dinamiche linguistiche
§ 
l 
italiano
inglese
francese
diverse strategie per la creazione dei composti
§ 
l 
123.725,43
123,725.43
123 725,43
l’uomo => l’ + uomo
doesn’t => does + n’t
they’re => they + ‘re
po’ (elisione) => po’
‘ndrangheta (aferesi) => ‘ndrangheta
gli scopi di elaborazione computazionali
Uno dei problemi maggiori è rappresentato dallo spazio di variabilità delle convenzioni
ortografiche
l 
cf. database, data base, data-base
30
Tokenizzazione
L’aereo per gli U.S.A. atterra a New York.
L’aereo
per
gli
U.S.A
.
atterra
a
New
York.
NO!!
SÌ!!
L’
aereo
per
gli
U.S.A.
atterra
a
New York
.
31
Tokenizzatori
l 
Moduli software per la preparazione e tokenizzazione del
testo tramite
l 
mini-grammatiche, che specificano le forme in cui possono
comparire i token
l 
es. le date:
25/02/1993
25-02-1993
25 febbraio 1993
febbraio 1993
25 febbraio
25 feb. 1993
l 
repertori e glossari
l 
l 
acronimi, nomi propri, abbreviazioni, ecc.
Generalmente basati su espressioni regolari
l 
implementati in Perl, Python, ecc.
32
Tokenizzatori
l 
Output in formato testo
l 
aggiungere separatori
l 
l 
l 
l 
La Spezia > La_Spezia
25 febbraio 2003 > 25_febbraio_2003
normalizzare le maiuscole
l 
l 
> dell’ uomo
> ‘ uomo ’
unire token separati
l 
l 
dell’uomo
‘uomo’
La macchina è guasta > la macchina è guasta
Output XML
l 
i token sono delimitati da elementi XML
l 
<t n=“1”>dopo</t><t n=“2”>essere</t><t n=“3”>sceso</
t><t n=“4”>,</t><t n=“5”>l’</t><t n=“6”>uomo</t><t
n=“7”>si</t><t n=“8”>allontanò</t><t n=“9”>.</t>
33
Tokenizzatori
http://tanl.di.unipi.it/it/tanl
Gli infortuni sul lavoro e le morti bianche costituiscono un
"fenomeno sempre inaccettabile".
ID !FORM!
1 !Gli!
2 !infortuni!
3 !sul!
4 !lavoro!
5 !e!
6 !le!
7 !morti!
8 !bianche!
9 !costituiscono!
10 !un!
11 !"!
12 !fenomeno!
13 !sempre!
14 !inaccettabile!
15 !"!
16 !.
!!
34