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