1.06k likes | 1.29k Views
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
E N D
Linguistica ComputazionaleMetodi 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
Strumenti e risorse per l’analisi computazionale dei dati linguistici • 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 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
Ricerche avanzate nei corporaEspressioni Regolari • Linguaggio standard per caratterizzare stringhe di testo (regular expressions, regex, re) • definite da Kleene nel 1956 • Strumento ideale per • ricercare testo • sostituire testo • Molti programmi supportano le RE: • Trova e Sostituisci in Word • grep in Unix • Emacs e altri editors di testo • Perl è un linguaggio di programmazione che permette un trattamento estremamente avanzato e duttile delle RE
RE e Pattern Matching • Il pattern matching è la forma più elementare di elaborazione di un testo: • dato un testo T vengono cercate le stringhe in T che corrispondono ad un pattern p • un pattern è uno schema di stringhe, ovvero definisce un insieme di stringhe di testo che soddisfano particolari criteri • “le parole che iniziano con la lettera maiuscola” • “le stringhe di numeri la cui seconda cifra è 2” • “le linee di testo che terminano con un punto esclamativo” • le RE sono il linguaggio standard per specificare pattern di testo da ricercare • Stringa di testo • qualsiasi sequenza di caratteri alfanumerici • lettere, numeri, spazi, punteggiatura, caratteri speciali, ecc. • Attenzione!!! • per il pattern matching, anche gli spazi, tabulazioni, ecc. contano come caratteri
RE e Pattern Matching • In Perl una RE è un’espressione della forma /<pattern>/ • Uso delle espressioni regolari in Perl • Si definisce un pattern tramite una RE • La RE viene verificata su un testo e produce come risultato un valore booleano (true-false): • true = il testo contiene una stringa che corrisponde (match) al pattern • false = il testo non contiene una stringa che corrisponda al patttern • Altri possibili output • documenti in cui viene trovata la stringa(stringhe) corrispondente(i) al pattern • linee di testo che contengono il pattern (es. grep)
Caratteri e sequenze di caratteri • Un qualsiasi carattere o sequenza di caratteri (lettere, numeri, punteggiatura, spazi, ritorno-a-capo, caratteri speciali) è una RE • le RE sono “case sensitive”
Classe di caratteri • Un insieme di caratteri tra parentesi quadre è una RE che definisce una classe di caratteridisgiunti 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”
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 • Sono solo abbreviazioni: • /[2-5]/ è equivalente a /[2345]/ • /[a-z]/ è equivalente a /[abcdefghijklmnopqrstuvwxyz]/
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 ATTENZIONE! • ‘^’ ha valore negativo solo quando compare subito dopo la ‘[‘ • /[2^]/ il carattere ‘2’ o ‘^’ “3^5”
Classe di caratteri • Alcune utili abbreviazioni per classi di caratteri • Caratteri particolari: • \t tabulazione • \n a capo
Alternativa • L’operatore “|” esprime la disgiunzione tra due RE (operatore di alternativa) ATTENZIONE! • /[..]/ esprime solo la disgiunzione tra caratteri singoli • /[abc]/ il carattere ‘a’ o ‘b’ o ‘c’ • La disgiunzione tra stringhe deve essere espressa con l’operatore di alternativa • /ab|c/ la stringa ‘ab’ o il carattere ‘c’
Moltiplicatori • I seguenti simboli sono usati in una RE per specificare quante volte deve comparire il carattere che li precede immediatamente: /<carattere>?/ “il carattere precedente è opzionale (occorre 0 o 1 volta)” /<carattere>*/ “il carattere precedente occorre 0 o n volte” (Kleene Star) /<carattere>+/ “il carattere precedente occorre 1 o n volte”
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
Sostituzione di stringhe in Perl • s/<espressione regolare>/<nuova stringa>/ • compie la sostituzione solo sul primo match effettuato • s/…/…/g sostituzione globale
Wildcard • La RE /./ corrisponde a qualsiasi carattere (eccetto il ritorno-a-capo)
Ingordigia e pigrizia • I moltiplicatori in Perl sono ingordi (greedy) • fanno sempre matching con la stringa più lunga possibile /x+/ “axxxxxxxb” “axxxxxxxb” /a.*c.*/ “a xxx c xxx c xxx d” “a xxx c xxx c xxx d” • E’ possibile rendere i moltiplicatori “pigri” (lazy) facendoli seguire dal carattere “?” • fanno matching con la stringa più corta possibile /a.*?c.*/ “a xxx c xxx c xxx d” “a xxx c xxx c xxx d”
Raggruppamento e memoria • Le parentesi tonde servono per raggruppare stringhe di caratteri da moltiplicare: • 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.)
Caratteri speciali • Alcuni caratteri hanno un significato speciale nel linguaggio delle RE • [ ] ? * . ( ) + - / { } • Se questi caratteri fanno parte del pattern di testo da cercare, devono comparire in una RE con davanti il carattere ‘\’ (carattere di escape) • /[a/ ERRORE! ‘[‘ è interpretato come operatore di disgiunzione e manca la parentesi ‘]’ • /\[a/ la stringa “[a” • /a./ qualsiasi stringa di due caratteri che inizia con ‘a’ “ab” “au” as” “a1” “a?” … • /a\./ la stringa di testo “a.” • /cane?/ le stringhe “cane” e “can” • /cane\?/ la stringa “cane?”
Ancore • Le ancore sono caratteri speciali che specificano dove deve comparire il pattern di testo da cercare • /^<pattern>/ il <pattern> deve comparire all’inizio di una linea • /<pattern>$/ il <pattern> deve comparire alla fine di una linea
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
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)+/
La codifica digitale del testo • 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 Rappresentazione del testo su supporto digitale in un formato “leggibile” da un computer Machine Readable Form (MRF)
La codifica digitale del testoIl testo e la sua organizzazione intestazione capitolo titolo testo
La codifica digitale del testoIl testo e la sua struttura linguistica sintagma nominale V andare pass. rem. 3 sing. frase relativa articolo indefinito femminile singolare stanza come luogo tutti = soggetto
La codifica digitale del testo Il testo come sequenza di caratteri Ciascun carattere alfanumerico, di punteggiatura o di controllo che compone il testo deve essere rappresentato nei termini di un codice binario Le avventure di Pinocchio Capitolo I Come andò che Maestro Ciliegia, falegname, trovò un pezzo di legno, che piangeva e rideva come un bambino. C'era una volta... - Un re! - diranno subito i miei piccoli lettori. - No, ragazzi, avete sbagliato. C'era una volta un pezzo di legno. Non era un legno di lusso, ma un semplice pezzo da catasta, di quelli che d'inverno si mettono nelle stufe e nei caminetti per accendere il fuoco e per riscaldare le stanze. Non so come andasse, ma il fatto gli è che un bel giorno questo pezzo di legno capitò nella bottega di un vecchio falegname, il quale aveva nome mastr'Antonio, se non che tutti lo chiamavano maestro Ciliegia, per via della punta del suo naso, che era sempre lustra e paonazza, come una ciliegia matura.
La codifica digitale del testoIl testo come sequenza di caratteri • “Surrogato” parziale del testo originario • completa equivalenza solo dal punto di vista dei caratteri che lo compongono • perdita di informazione • l’informazione implicitamente veicolata dalla formattazione del testo relativa a: • le coordinate meta-testuali • il nome dell’autore, il titolo, ecc. • la struttura e organizzazione testuale • la suddivisione logica in sezioni, capitoli, paragrafi, ecc. • nessun guadagno di informazione • l’informazione sulla struttura linguistica rimane implicita e nascosta (come nel testo originale)
La codifica digitale del testo • Due livelli di codifica del testo digitale • codifica di basso livello (codifica di livello 0) • riguarda la rappresentazione binaria della sequenza ordinata dei caratteri • codifica di alto livello • arricchisce il testo codificato al livello zero con informazione relativa a dimensioni strutturali • organizzazione del testo in strutture macrotestuali • articolazione del testo in strutture linguistiche La codifica di alto livello permette di rendere esplicita qualsiasi interpretazione, anche di tipo linguistico, si voglia associareal testo
Codifica di alto livelloInterpretazione e codifica • Interpretazione del testo • informazioni che caratterizzano la struttura, contenuto, presentazione, natura linguistica, ecc. di un testo e del suo contenuto informativo • metadati • “informazione sull’informazione” • esistono vari livelli e gradi di interpretazione • tipografica, extratestuale, linguistica, ecc. • Codifica di alto livello • processo attraverso cui viene resa esplicita un’interpretazione del testo • la codifica permette di rendere machine readable informazioni sul testo e tratti del testo che altrimenti non sarebbero elaborabili dal computer
Perché codificare?I motivi della codifica di alto livello • Un testo come flusso di caratteri e parole è una fonte di dati linguistici • Il testo è un’entità altamente strutturata, nella quale i dati linguistici sono correlati secondo piani di organizzazione multipli • struttura del testo • l’ articolazione in sezioni, capitoli, titoli, ecc. • struttura del contesto • l’autore, la data di produzione, la finalità del testo, ecc. • struttura linguistica (implicita nel testo!!) • informazioni morfologiche, sintattiche, semantiche
Perché codificare?La gerarchia dell’informazione I dati non hanno un significato intrinseco a meno di non inserirli in uno schema o struttura che li organizza e li trasforma in informazione La gerarchia dell’informazione Conoscenza Informazione Dati Dati = contenuto grezzo dell’informazione Informazione = dati + interpretazione (struttura) Conoscenza = informazione + teoria
La gerarchia dell’informazione benzina, 4 cil. in linea1.997 cc130 kW (180 CV)02 Nm (20,6 kgm)manuale a 5 rapportianteriore205/50 R 174,35/1,76/1,42 m dati di un auto Motori: benzina, 4 cil. in lineaCilindrata: 1.997 ccPotenza max: 130 kW (180 CV)Coppia max: 02 Nm (20,6 kgm)Cambio: manuale a 5 rapportiTrazione: anteriorePneumatici: 205/50 R 17Dimensioni: 4,35/1,76/1,42 m informazione su un auto conoscenza sulle auto (struttura, funzionamento, tipologie, ecc.)
Perché codificare?La gerarchia dell’informazione linguistica modelli della lingua conoscenza linguistica la conoscenza della lingua l’organizzazione strutturale e linguistica di un testo informazione linguistica dati linguistici le parole di un testo La codifica di alto livello permette di rendere espliciti e accessibili al computer i livelli di organizzazione strutturale di un testo e lo trasforma in una fonte di informazione linguistica
Cosa codificare?I contenuti della codifica di alto livello • Individuare il livello di informazione da codificare • strutturale, linguistica, ecc. • la codifica esplicita di informazione linguistica viene detta annotazione del testo • morfologica, semantica, sintattica, ecc. • Definire il repertorio dei tratti giudicati rilevanti per la codifica • un esempio: la codifica morfo-sintattica • oggetto: codificare esplicitamente la categoria grammaticale e le proprietà morfologiche delle parole di un testo • da definire: • quali attributi codificare (cat. grammaticale, persona, genere, numero, caso, ecc.) • quali valori possono avere i diversi attributi (numero = SING, PLUR; caso = NOM, GEN, ecc.)
Come codificare?I formati digitali del testo • Formato solo testo (plain text o txt) • un file solo testo è costituito da una sequenza di bytes dove ciascun byte rappresenta un carattere secondo un particolare codice • gli editori di testo sono programmi in grado di creare e leggere files di tipo solo testo • Emacs, Blocco Note, Word Pad, ecc. • quando un editore di testo legge un file cerca di associare ogni sequenza di bits a un carattere secondo un particolare codice • Vantaggi • formato “aperto”, indipendente dal sistema operativo e dal programma che lo ha creato • massima portabilità e interscambiabilità dei testi • Svantaggi • non può rappresentare aspetti relativi alla codifica di alto livello • minima espressività
Come codificare?I formati digitali del testo • Formati proprietari (doc, pdf, ecc.) • possono essere creati, letti e interpretati solo da uno specifico programma (es. Word, Adobe) • oltre a sequenze di bits codificano caratteri, il file contiene sequenze binarie che corrispondono a istruzioni di formattazione, codificate secondo le convenzioni di un certo programma • Vantaggi • massima capacità espressiva e fruibilità per l’utente umano • rappresenta aspetti relativi alla codifica di alto livello • ma solo per quanto riguarda la struttura testuale!! • Svantaggi • formato “chiuso”, con minima portabilità e interscambiabilità • codifica non per categorie testuali “astratte”, ma per modalità di visualizzazione • le informazioni linguistiche rimangono comunque implicite nel testo
Come codificare?I linguaggi di marcatura • Codifica di alto livello con linguaggi di mark-up (linguaggi di marcatura) come XML • dal punto di vista del formato digitale un testo codificato in XML è in formato solo testo • l’informazione strutturale è rappresentata attraverso l’aggiunta al testo di etichette (o tag) di marcatura • sequenze di caratteri visibili secondo una convenzione standard, intercalati nel testo seguendo precise regole di combinazione • “marcano” blocchi di testo a cui viene assegnata una determinata interpretazione • Vantaggi • portabilità e interscambiabilità dei testi codificati • massimo grado di espressività • è possibile esprimere tuttti gli aspetti della codifica di alto livello, compresa l’informazione linguistica
Come codificare?I linguaggi di marcatura mark-up per la codifica di informazione strutturale <libro> <titolo>Le avventure di Pinocchio <sottotitolo>Storia di un burattino</sottotitolo> </titolo> <autore>Carlo Collodi</autore> <parte p_id=”1”> <titolo>Parte prima</titolo> <capitolo c_id=”I”> <titolo> Come andò che maestro Ciliegia, falegname, trovò un pezzo di legno, che piangeva e rideva come un bambino.</titolo> <capoverso num=”p1c1c1”>C'era una volta...</capoverso> <capoverso num=”p1c1c2”>- Un re! - diranno subito i miei piccoli lettori.</capoverso> <capoverso num=”p1c1c3”>No, ragazzi, avete sbagliato. C'era una volta un pezzo di legno.</capoverso> <capoverso num=”p1c1c4”>Non era un legno di lusso, ma un semplice pezzo da catasta, di quelli che d'inverno si mettono nelle stufe e nei caminetti per accendere il fuoco e per riscaldare le stanze.</capoverso></capitolo></parte> </libro>
Come codificare?I linguaggi di marcatura mark-up per la codifica di informazione strutturale • + mark-up per la codifica di informazione linguistica <libro> … <parte> <capitolo c_id=”I”> <titolo>Come <parola cat=“V” tempo=“passRem”>andò</parola> che <parola cat=“N” genere=“m” num=“s”>maestro</parola> Ciliegia, falegname, trovò <sintagma tipo=”nominale”><parola cat=“artInd” genere=m” num=“s”>un</parola> pezzo di legno</sintagma>, che piangeva e rideva come un bambino.</titolo> </capitolo></parte> </libro>
Come codificare?XML • XML (eXtensible Mark-up Language) • (meta)linguaggiodi marcatura • attraverso le DTD (Document Type Definition) consente di definire linguaggi di marcatura per la codifica del testo e di altri tipi di dato • con i linguaggi di marcatura, in linea di principio, non vi è limite alla tipologia di informazioni codificabili: infatti la tipologia di etichette di marcatura può essere definita in funzione delle finalità della codifica • standard affermato e diffuso • facilmente elaborabile dal computer • chiara distinzione tra testo e markup • ampia disponibilità di software per il trattamento di file XML • parser, estrattori di tag, editor specializzati, ecc. • facilmente interfacciabile con database per l’importazione dei dati codificati • XML è la base di un’intera tecnologia di linguaggi e applicazioni per il trattamento del mark-up
Linguaggi di marcatura • Un linguaggio di marcatura è un insieme di convenzioni per la marcatura di testi • Marcatura di documenti • la marcatura (o etichettatura) permette di rendere esplicita un'interpretazione di un testo. • storicamente • annotazioni in un testo che descrivono al tipografo come stampare o comporre una parte del testo • oggi • qualsiasi tipo di codice inserito in un testo in forma elettronica
HTML - HyperText Markup Language • È un linguaggio di marcatura (non un metalinguaggio!) • definito in termini di SGML • Insieme di etichette prefissato • La marcatura non denota il “significato” ovvero la struttura “logica” di un documento • che insieme di informazioni rappresenta un documento? • come faccio a selezionare le informazioni rilevanti? • Studiato espressamente per il Web • collegamenti ipertestuali • immagini • marcatura finalizzata alla presentazione del documento come pagina Web • diversi tipi di titoli, tabelle, ecc. • non c’è un legame tra marcatura e tipi di informazione nel documento
Una pagina HTML <html> <head> <title>Le avventure di Pinocchio</title> </head> <body> <h2>Carlo Collodi</h2> <h1>Le avventure di Pinocchio</h1> <p> <p>Capitolo I</p> <p><i>Come andò che Maestro Ciliegia, falegname, trovò un pezzo di legno, che piangeva e rideva come un bambino.</i><p> </body> </html>
XML eXtensible Mark-up Language • La marcatura è dettata dalla struttura logicadel documento • L’insieme di etichette può cambiare in base l'applicazione • Viene usato il concetto di tipo di documento • specificato attraverso una Document Type Definition o DTD (è parte dello standard XML) • permette di imporre al documento una certa struttura (ovvero come si compongono le sue parti) • Naturale successore di HTML come linguaggio per il Web • più espressivo e flessibile • per la visualizzazione è necessario una descrizione a parte con un altro linguaggio (XSL) • ma per lo stesso documento XML è possibile definire più visualizzazione
Esempio di Documento XML <libro> <intestazione> Le avventure di Pinocchio </intestazione> <autore>Carlo Collodi</autore> <titolo>Le avventure di Pinocchio</titolo> <capitolo> <intestazioneCapitolo>Capitolo I</intestazioneCapitolo> <titolo>Come andò che Maestro Ciliegia, falegname, trovò un pezzo di legno, che piangeva e rideva come un bambino.</titolo> </capitolo> </libro>
Le origini di XML • 1969 • Charles Goldfarb (IBM) dirige lo sviluppo di GML • 1974 • Charles Goldfarb inventa SGML, il padre dei linguaggi di marcatura • 1986 • SGML diventa uno standard ISO(ISO 8879 ``Information Processing - Text and Office Systems - Standard Generalized Markup Language'') • 1989 • Tim-Berners Lee (CERN di Ginevra) inventa HTML • 1995 • Fondazione del World Wide Web Consortium (W3C)