Dispensa TACALN

Transcript

Dispensa TACALN
Tecnologie per il trattamento automatico e la comprensione automatica del linguaggio naturale Prof. Domenico Cotroneo con la collaborazione Ing. Christian Esposito Dispensa del corso Introduzione al corso 1. Concetti generali In un famoso film di Stanley Kubrick, intitolato “2001: Odissea nello spazio”, uno dei ruoli principali era ricoperto da HAL 9000. Esso è il computer senziente di bordo, che impartisce e controlla tutte le funzioni della navicella spaziale Discovery, capace di avanzati comportamenti linguistici, come dialogo e comprensione del linguaggio, fin anche alla lettura delle labbra. Sfortunatamente, nella realtà, siamo abbastanza lontani dal realizzare una macchina con le prestazioni di HAL 9000. Quali sono le principali problematiche sottese alla realizzazione di una simile macchina? In linea generale, un tale agente deve essere dotato di capacità di interazione con esseri umani attraverso il linguaggio, includendo comprensione attraverso speech recognition (riconoscimento della lingua parlata) e natural language understanding (comprensione del linguagguio naturale), e comunicazione attraverso il natural language generation (generazione del linguaggio naturale) e speech synthesis (sintesi della lingua parlata). Dovrebbe anche essere capace di effettuare information retrieval (individuare dove risiedono le risorse testuali), information extraction (estrazione del contenuto informativo pertinente da un testo o un discorso) e inference (elaborazione delle conclusioni sulla base di elementi noti). Sebbene tali problematiche siano lontane dall’essere completamente risolte, alcune tecnologie di linguistica computazionale necessarie per la realizzazione di HAL 9000, sono presenti in disparati prodotti commerciali. La branca dell’intelligenza artificiale (Artificial Intelligence, AI), che studia queste tematiche prende il nome di Speech and Language Processing, e lo scopo del presente corso è quello di fornire uno stato dell’arte di tale materia. Cosa distingue un’applicazione di elaborazione del linguaggio da una di elaborazione dati? Consideriamo il programma Unix wc: quando viene impiegato per contare il numero di byte o bit in un file, realizza una semplice elaborazioni dati. Quando, invece, è usato per contare il numero di parole, realizza un’elaborazione del linguaggio, dal momento che deve disporre della conoscenza di cosa è una parola. Da questo semplice esempio si evince che un programma di elaborazione del linguaggio richiede una considerevole mole di informazioni di natura linguistica per poter svolgere il proprio compito. Il bagaglio di conoscenza necessario a un programma informatico per sostenere complessi comportamenti linguistici può essere raggruppato in sei distinte categorie: I.
Fonetica e Fonologia, aiuta a modellare come le parole vengono pronunciate; II.
Morfologia, apporta informazioni per lo studio della struttura grammaticale delle parole e la relativa classificazione e appartenenza a determinate categorie; III.
Sintassi, analizza le relazioni modulari che stabiliscono il posto delle parole in una frase, come i sintagmi si compongano nelle frasi, e come le frasi si dispongano a formare un periodo; IV.
Semantica, studia il significato delle parole e di insiemi di parole; V.
Pragmatica, si occupa di come il contesto influisca sull´interpretazione dei significati delle parole; VI.
Discorso, si interessa delle unità linguistiche maggiori di una frase e la loro correlazione. Una componente sorprendente di queste sei categorie è che tutti i task di elaborazione linguistica possono essere visti come compiti di risoluzione di ambiguità ad uno di questi livelli. Prendiamo ad esempio la frase in inglese “I made her duck”, questa può significare: a) Ho cucinato un’anatra per lei. b) Ho cucinato la sua anatra. c) Ho realizzato (forse un modello in plastica?) la sua anatra. d) Le mie azioni hanno causato il repentino abbassamento della sua testa o del suo corpo. e) L’ho magicamente trasformata in un’anatra. Questi differenti significati sono causati da un certo numero di ambiguità, ovvero dato un ingresso linguistico al programma, esistono delle multiple strutture linguistiche alternativamente applicabili ad esso. Nel corso del presente corso saranno introdotti modelli e algoritmi per risolvere questi elementi di ambiguità. Ad esempio decidere se ‘duck’ è un verbo o un nome può essere risolto con part of speech tagging, mentre determinare se ‘make’ assume il significato di ‘creare’ o di ‘cucinare’, è possibile con la word sense disambiguation. Figura 1 Snapshot del programma ELIZA Per molti, l’abilità di elaborazioni linguistiche analoghe agli essere umani sarà possibile solo con l’arrivo di macchine intelligenti come gli esseri umani. Il primo sostenitore di questa intima connessione tra capacità linguistiche e cognitive fu Alan Turing, che in suo famoso scritto introdusse ciò che prese il nome di Test di Turing. Questo è un test empirico in cui l’uso del linguaggio da parte di un computer consente di comprendere se è in grado di pensare. Esso fondamentalmente coinvolge due persone e un computer, e il gioco consiste che una persona dialogando con l’altra persona e il computer, debba stabilire quale dei due interlocutore è il computer. Se la macchina è in grado di vincere il gioco (ovvero non si ha l’individuazione corretta di chi sia la macchina), allora è intelligente. Senza soffermarci troppo sulla rigorosità di tale metodo, l’argomentazione di Turing è che se una macchina è in grado di usare il linguaggio come farebbe un essere umano, è sufficiente per un test operativo di intelligenza. Sorprendentemente, molti dei problemi sollevati da Turing divennero rilevanti nel contesto di un programma chiamato ELIZA. Eliza è un primo esempio di programma di elaborazione automatica del linguaggio, capace di condurre una limitata conversazione con un utente, imitando le risposte di uno psicoterapista. Quest’applicazione adopera tecniche di pattern‐matching (in ambito informatico, si intende una corrispondenza tra stringhe, quindi senza alcun elemento di intelligenza): lavora analizzando e sostituendo delle semplici parole chiavi in frasi preconfezionate. A seconda delle parole che l'utente immetteva nel programma, l'illusione di uno scrittore umano veniva chiaramente svelata o poteva continuare per parecchio tempo. Alcune volte era talmente convincente che i suoi interlocutori credevano che esso potesse capire realmente loro e i loro problemi, come se dietro la macchina ci fosse davvero un essere umano. Tale risultato non dipende dalla presenza o meno nella macchina di forme di intelligenza o comprensione, smentendo così il fondamento del Test di Turing. 2. La gerarchia di Chomsky Un linguaggio è definito come un insieme (anche infinito) di stringhe, ognuna costituita da una concatenazione di simboli terminali, chiamati talvolta parole. I linguaggi formali hanno definizioni matematiche rigorose, in questo si differenziano dai linguaggi naturali, come l’italiano e l’inglese, che non hanno ne una precisa definizione, ma sono caratterizzati da una vasta comunità di parlanti. Una grammatica è un insieme finito di regole che specificano il linguaggio. I linguaggi formali, per definizione, sono sempre dotati di una chiara grammatica, mentre per quelli naturali non è così. I linguisti, però, si sforzano di scoprire le loro proprietà attraverso un processo di indagine scientifica, per poi codificarne i risultati in una grammatica. Il modo più comune per rappresentare la struttura grammaticale di una frase, ad esempio “Mary loves that person”, è di adoperare un albero, come illustrato in Figura 2. Il nodo S è quello radice dei nodi NP e VP, rispettivamente per la parte nominale e verbale della frase. VP è nodo padre dei nodi V e NP, rispettivamente verbo e nome. Ad ogni nodo foglia è associata una parola della frase da analizzare. Per realizzare l’albero di una frase, è necessario conoscere la struttura del linguaggio, così da servirsi di un insieme di regole per determinare quali strutture ad albero sono consentite. Tali regole, alla destra della Figura 2, determinano che un certo simbolo può essere espanso in un albero di una sequenza di altri simboli (ad esempio, S ‐> NP VP significa che il nodo S può generare a sua volta due nodi NP e VP). La struttura grammaticale aiuta a determinare il significato di una frase. Nella teoria dei linguaggi formali, le grammatiche sono rappresentate dalla quadrupla G = <V, T, P, S>, dove V e T sono un insieme finito di simboli, P sono le regole grammaticali di generazione e S è il carattere del nodo radice. Rispettivamente V contiene tutti i simboli non terminali, in Figura 2 sono ad esempio S, NP, VP e simili, mentre T contiene i simboli terminali, ad esempio “Mary”, “loves” e simili. Figura 2 Rappresentazione ad albero di una frase e relativa grammatica I formalismi grammaticali possono essere classificati in base alla loro capacità generativa, ovvero l’insieme dei linguaggi che possono rappresentare. Il linguista Chomsky descrive quattro classi di formalismi grammaticali, che differiscono solo per il formato delle regole di riscrittura. Le classi possono essere organizzate in una gerarchia, in cui ogni classe può essere utilizzata per descrivere tutti i linguaggi che appartengono ad una classe meno potente e alcuni linguaggi aggiuntivi. Salendo lungo la gerarchia aumenta il potere espressivo delle grammatiche, ma naturalmente gli algoritmi che le gestiscono sono meno efficienti. La gerarchia di Chomsky è composta dai seguenti livelli, vedi in Figura 3: •
Grammatiche di tipo 0 (illimitate o ricorsivamente enumerabili) include tutte le grammatiche dei linguaggi formali, e non hanno alcun tipo di restrizione nell’impostazione delle regole, ad eccezione che il termine a destra non sia nullo; • Grammatiche di tipo 1 (dipendenti dal contesto) hanno regole della forma αAβ ‐> αγβ, con A simbolo non terminale e α, β e γ stringhe di simboli terminali e non. Le stringhe α e β possono essere vuote, ma la γ non deve essere vuota. • Grammatiche di tipo 2 (libere dal contesto) sono definite da regole nella forma A ‐> γ, con A simbolo non terminale e γ una stringa di simboli terminali e non terminali. • Grammatiche di tipo 3 (regolari) restringe le sue regole ad un singolo simbolo non terminale nel lato sinistro della produzione e nel lato destro un singolo simbolo terminale, possibilmente seguito (o preceduto, ma non entrambe le forme nella stessa grammatica) da un singolo simbolo non terminale. L’appartenenza di una classe di grammatica di tipo superiore in quella di tipo inferiore è un’inclusione propria, nel senso che esistono, ad esempio, linguaggi sensibili al contesto che sono non liberi dal contesto e linguaggi liberi dal contesto che sono non regolari. Si dimostra che le lingue naturali non sono regolari, e per la maggior parte delle lingue e delle costruzioni sia sufficiente una grammatica libera dal contesto. Tuttavia, esistono rari casi (un caso famoso è contenuto nel tedesco svizzero) che richiedono una grammatica dipendente dal contesto. Figura 3 Diagramma di Venn dei linguaggi sulla base della gerarchia di Chomsky 3. Espressioni regolari Le espressioni regolari sono una sintassi attraverso cui si possono rappresentare insiemi di stringhe. Gli insiemi caratterizzabili con espressioni regolari sono anche detti linguaggi regolari (e coincidono quelli generabili dalle grammatiche regolari e riconoscibili dagli automi a stati finiti). Le espressioni regolari sono composte da costanti e operatori che denotano insiemi di stringhe, e da operatori tra questi insiemi. Dato un alfabeto finito Σ, sono definite le seguenti costanti: • insieme vuoto, indicato con oppure Λ; • stringa vuota, indicata con ε; • carattere, ad esempio a in Σ indica l'insieme {"a"} e le operazioni: • concatenazione, RS o R°S indica l'insieme { αβ | α in R e β in S }; • unione, R S indica l'unione dei due insiemi; • stella di Kleene, R* indica l'insieme con tutte le possibili iterazioni ottenibili dagli elementi di R; • intersezione, R ∩ S indica l'intersezione tra i due insiemi di stringhe; • complementazione di R, indica l'insieme delle stringhe appartenenti a Σ*‐R. Ad esempio dati R = { "a","b" } e S = { "7","8" } ho che RS = { "a7", "b7", "a8", "b8" }, mentre S* = { ε, "7", "8", "77", "78", "87", "88", "777", "778", ... }. Le espressioni regolari hanno anche dei caratteri speciali che sono il carattere jolly ‘.’, che può rappresentare un numero indefinito di simboli dell’alfabeto, e le àncore, che fissano l’applicazione dell’espressione a particolari posizioni del testo, ad esempio ‘^’ impone la verifica dell’espressione per i simboli a inizio del testo da analizzare. Le espressioni regolari possono essere impiegate sia per una formalizzazione precisa di un linguaggio, ma anche per la definizione di operazioni di ricerca in stringhe. Una ricerca con espressioni regolari richiede un pattern di corrispondenza e un corpus, all’interno del quale realizzare la ricerca. L’espressione ritornerà l’insieme di stringhe che soddisfano la corrispondenza con il pattern di ricerca. Il pattern di ricerca viene rappresentato con un’espressione regolare compresa tra due caratteri ‘/’. Ad esempio se io ho un pattern /song/, la ricerca su un testo mi restituirà tutte le frasi che contengono la parola “song”, ad esempio “She loves all our songs”. Un altro importante uso delle espressioni regolari è nella sostituzione di caratteri all’interno di una stringa. Nel linguaggio di programmazione Perl esiste un operatore di sostituzione, chiamato s, che ha due argomenti: l’espressione regolare della stringa da sostituire, e l’espressione regolare della stringa di sostituzione. Se vogliamo correggere un errore di battitura “squola” con il corretto “scuola”, basterà quindi scrivere il comando s/squola/scuola/. Le sostituzioni sono un utile mezzo per implementare programmi di comprensione del linguaggio, come ELIZA. ELIZA, infatti, opera con una cascata di sostituzioni per espressioni regolari, che date alcune frasi in ingresso, può realizzare quelle di uscita per sostituzione., Consideriamo il seguente dialogo con ELIZA: User:
ELIZA
User:
ELIZA
Well, my boyfriend made me come here
YOUR BOYFRIEND MADE YOU CAME HERE
He says I’m depressed much of the time
I AM SORRY TO HEAR YOU ARE DEPRESSED
Le risposte di ELIZA sono ottenute a partire dalle frasi inserite dall’utente: s/.* YOU ARE (depressed|sad) .*/I AM SORRY TO HEAR YOU ARE \1/
4. Automi a stati finiti Un automa a stati finiti è un sistema con le seguenti caratteristiche: • dinamico, perché evolve nel tempo passando da uno stato all'altro; • invariante, poiché a parità di condizioni iniziali, il comportamento del sistema è sempre lo stesso; • discreto, dal momento che le variabili d'ingresso, di stato, d'uscita, possono assumere solo valori discreti. L' automa a stati finiti è un modello di calcolo semplice, rappresentabile come un piccolo dispositivo, che mediante una testina legge una stringa di input su un nastro e la elabora usando un apposito algoritmo, e di una memoria limitata. In sostanza è un caso particolare di macchina di Turing, utilizzato per l'elaborazione di quei linguaggi che nella gerarchia di Chomsky sono definiti di Tipo 3 o Regolari. Gli automi a stati finiti possono essere rappresentati mediante un grafo, in cui i nodi rappresentano gli stati e gli archi le transizioni, o in una versione tabellata, sulle righe lo stato corrente e sulle colonne l’ingresso, e l’elemento della tabella rappresenta la transizione verso il prossimo stato e l’uscita dell’automa. Gli automi a stati finiti possono essere impiegati in un ampio spettro di applicazioni, come ad esempio il riconoscimento (e anche l’accettazione), di stringhe di caratteri. Figura 4 Esempio di automa a stati finiti per il linguaggio L = {anbm | m,n>0} La linguistica dei corpora 1. Definizione e costruzione di corpus La linguistica dei corpora può considerarsi come un approccio di indagine linguistica. Dopo un periodo di latenza dovuta alla critica chomskyana, si è avuta un’esplosione del ricorso a tale metodo, con l’elaborazione di numerosi progetti nazionali e internazionali, grazie alle tecnologie informatiche, che hanno incrementato enormemente il potere di trattamento dei dati testuali. Corpus indica una qualiasi raccolta completa ed ordinata di scritti, di uno o più autori, riguardanti una certa materia, oppure un campione di una lingua preso in esame nella descrizione della lingua. I corpora contengono testi reali, e non sezioni ridotte o alterate; inoltre sono un campione linguistico e non possono mai contenere tutte le possibili occorrenze testuali di una data lingua. Una popolazione è un insieme di tutte le possibili osservazioni di una lingua su un dato campo. Un campione, invece, è una sezione della popolazione, che ingloba solo alcune possibili osservazioni. Il momento più delicato della costruzione di un campione risiede proprio nella scelta del materiale, in modo che rappresenti adeguatamente la popolazione. Un campione deve essere rappresentativo, per essere utile e significativo, ossia deve presentare alcune caratteristiche simili a quelle che avrebbe l’intera popolazione ed esibire lo stesso tipo di informazione (caratteristica qualitativa) con la stessa probabilità di occorrenza (caratteristica quantitativa) della popolazione. Un’altra caratteristica del corpus è la sua estensione, ovvero la sua ampiezza, che è anche un fattore che influenza il grado di rappresentatività di un campione testuale. Esistono vari metodi per valutare la rappresentatività di un campione, ma va detto che un campione non è mai completamente rappresentativo in generale, ma solo limitativamente rispetto a uno specifico punto di vista. La maggior parte delle valutazioni più accurate, comunque, si basano sulla ricchezza del vocabolario, misurata come numero di parole diverse presenti nel campione. Rispetto all’estensione, i corpora vengono classificati in statici (quelli con dimensione fissa) e in dinamici (con estensione variabile e una raccolta periodica di nuovo materiale). Avere un corpus statico ha i suoi vantaggi: le analisi sono condotte una sola volta, in un lasso di tempo limitato, può essere facilmente distribuito, usato in maniera standardizzata per diverse analisi e comparato con altri corpora statici, costruiti in maniera simile, e tutte le analisi sono ripetibili. Un corpus dinamico, invece, permette di condurre anche analisi di tipo diacronico, ma ovviamente richiede di un lavoro continuo e una maggiore difficoltà di distribuzione, trattamento e comparazione. Al corpus dinamico viene spesso affiancato un corpus monitor, per la raccolta e l’analisi di nuovo materiale da aggiungere. Figura 5 Rappresentatività tra campione e popolazione Nella costruzione di un corpus, il primo passo è la pianificazione della sua struttura in modo che possa essere rappresentativa della varietà linguistica che si intende rappresentare. Il secondo passo sarà la concreta acquisizione del materiale per il corpus. Sia che si adoperi materiale già preparato da oltri, o che si sia provveduto da soli all’acquisizione, è necessario tenere presente che il testo elettronico contiene sempre una certa quantità di errori, la cui eliminazione deve sempre avvenire in maniera manuale o semiautomatico (terzo passo). Prima di procedere al passo successivo dell’etichettatura, si devono stabilire delle regole su come vanno trattati i caratteri del corpus, individuando un insieme di simboli per l’alfabeto e un altro per i separatori. È necessario che nessun simbolo risulti ambiguo, ossia non impiegato in maniera diversa all’interno del corpus. La procedura di segmentazione dei confini delle unità linguistiche fa emergere il problema della individuazione di che cosa si debba considerare parola. Dal punto di vista del trattamento automatico dei corpora, è emersa la definizione di parola come ogni insieme di simboli deliminatato da una coppia di separatori (parola grafica). Al fine del trattamento linguistico vanno, inoltre, distinti i lessemi, i tipi di parola (types) e le occorrenze di parole grafiche (tokens). Il rapporto tra i tipi di parole e le occorrenze testuali (type/token ratio) ci dà un’approssimazione della ricchezza del vocabolario del testo esaminato: maggiore è tale valore e maggiore è la varietà del vocabolario presente nel testo. Esiste anche un’altra definizione di questa misura, che non tiene conto dei types, ma dei lessemi. Per fare ciò, però, è necessario svolgere un trattamento molto complesso sui testi, che prende il nome di lemmatizzazione. Il vantaggio è la sua immediata praticità e la possibilità di ottenerla in modo automatico, senza un particolare trattamento per lingue diverse, anche sconosciute. Figura 6 Le tappe dell'analisi testuale su corpus Il world wide web può essere considerato un corpus, un enorme deposito di materiale testuale, facilmente accessibile, gratuito, vario negli stili, nelle tipologie e nei contenuti linguistici rappresentati. Dal punto di vista dell’estensione certamente il web è uno dei corpora più grandi mai raccolti, anche se l’esatta composizione in termini quantitativi è ancora indeterminata. Il web non presenta le diverse varietà di una lingua: vi sono privilegiati (quantitativamente) alcuni particolari domini, come quelli delle stesse nuove tecnologie, congiuntamente a materiale vicino al parlato come forum e chat. L’accesso alle informazioni avviene attraverso motori di ricerca che adoperano algoritmi di selezione che privilegiano determinati tratti per ordinare e selezionare i documenti. Nel web, inoltre, il tasso di errori è significativamente più alto rispetto ad altri testi, che possono essere raccolti e controllati. Gli errori non si limitano a soli sbagli di trascrizione o scannerizzazione, ma la forte presenza di pagine amatoriali, scritte da utenti che non padroneggiano completamente la specifica lingua, finisce per costituire una rappresentazione sbilanciata delle caratteristiche linguistiche dei testi. Si verifica non solo che l’interrogazione scorretta consente di ottenere risultati forvianti, ma anche che l’interrogazione corretta può non ritornare la piena quantità dei dati utilizzabili. Dal punto di vista metodologico, il web pone il problema connesso con la sua dinamicità incontrollata: la dimensione del web è indeterminabile. Attualmente, il dibattito sulla costruzione di architetture che permettono l’uso del web nella ricerca linguistica è molto acceso. In particolare sono allo studio soluzioni per migliorare i sistemi di selezione dei risultati, in modo che siano bilanciati, con buoni livelli di accuratezza e validità dei risultati ottenuti. Al momento l’impiego del web come corpus in senso tecnico è una realtà, ma che deve essere trattata con molta cautela. 2. Codifica e Annotazione dei corpora ‐ Standard di codifica e annotazione Raccolto il corpus, per poterne sfruttare la ricchezza come fonte di dati linguistici, può essere necessario dotarlo di un insieme di informazioni aggiuntive, secondo un processo che prende il nome di annotazione o echitettatura linguistica, e che rappresenta una forma di codifica del corpus. Essa consiste nell’associazione di un’etichetta (detta anche tag o markup) a una porzione specifica e ben delimitata di testo. Il sistema usato per costruire e attribuire le etichette si dice linguaggio di marcatura, e un esempio è l’SGML oppura i più recenti XML o HTML. L’etichettatira linguistica può riguardare qualunque aspetto del testo, e serve principalmente per poter estrarre successivamente in maniera agevole e veloce una gran quantità di dati linguistici e non dal testo. Un esempio tipico di annotazione è il grammatical tagging, in cui ad ogni parola viene associata la relativa categoria grammaticale. Parallelo all’annotazione, esiste un ulteriore livello di astrazione che prende il nome di metalinguaggio di annotazione, che stabilisce la forma sintattica delle etichette e fornisce la base per la validazione della correttezza di annotazione. L’annotazione linguistica può essere condotta in modo automatico, semi‐automatico o manuale. Quest’ultima tradizionalmente viene svolta da persone che appongono le specifiche etichette alle porzioni di testo sulla base di valutazioni più o meno condivise e standardizzate. L’annotazione automatica avviene, invece, senza l’intervento umano, attraverso applicazioni del Natural Laguage Processing, basate su regole oppure su approcci probabilistici. È noto che entrambi gli approcci producono una serie significativa di errori nell’accuratezza dell’annotazione. Per questo motivo, in genere, l’annotazione combina i due metodi, dando luogo ad un’annotazione semi‐automatica, e procede attraverso una scrematura automatica, seguita da una fase di controllo manuale. A lungo, chi realizzava e progettava grandi corpora, definiva indipendentemente un proprio schema di annotazione. Tuttavia l’uso dei corpora in ambito scientifico e commerciale ha imposto negli anni l’esigenza della definizione di uno standard di annotazione. I requisiti di un tale standard sono: a) Separazione e autonomia del materiale grezzo da quello di codifica; b) Esplicitazione delle fasi di annotazione in un file, esterno al corpus, liberamente accessibile; c) Forma standard e omnicomprensiva di codifica; d) Indicazione esplicita dei criteri di annotazione; e) Possibilità di condurre ricerche specifiche sulle annotazioni; f) Indipendenza di fruizione di corpora e relative annotazioni dalle specifiche piattaforme software in uso. La principale organizzazione di standardizzazione mondiale, l'International Organization for Standardization (ISO), ha iniziato un lavoro mirato alla definizione di requisiti standard delle annotazioni e sta mettendo in campo sforzi per trovarne una proposta comune, che renda i sistemi esistenti interoperabili tra loro. Di seguito è riportata una brave carrellata delle principali implementazioni di annotazione di corpora. Tra le implementazioni di codifica, la più nota e diffusa è quella elaborata dalla Text Encoding Initiative (TEI). Le TEI Guidelines sono delle linee guida che definiscono le norme per la produzione di documeti per scopi diversi. Suggerisce il formato di marcatura SGML o XML, e una codifca di caratteri ISO 646 e Unicode. L’approccio usato da TEI nell’annotazione linguistica è di tipo strutturale/semantico, ossia mira a specificare il ruolo delle frasi di un testo, per organizzarlo strutturalmente. L’idea è di fornire un’ontologia d’annotazione comune ad ogni tipo di testo, insieme alle specificazioni necessarie per contenuti particolari. La TEI ha definito diversi insiemi di etichette standard, da usare per le concrete fasi di annotazione, raggruppati per i settori di ricerca più vari. Oltre alle etichette, la TEI predispone diversi livelli di codifica, secondo una gerarchia che va da un’etichettatura obbligatoria, ad una raccomandata, fino a giungere ad una opzionale. La creazione di documenti TEI è fatta in conformità ad un set di DTD XML, divisi in: core, base e set addizionali. Il set core definisce gli elementi comuni a tutti i testi, e l’header, contenente informazioni bibliografiche, di codifica, sul contenuto e sulla versione. Il set base contiene i DTD specifici per le sei categorie di un testo, con i tag necessari a garantire la fedeltà nella riproduzione del documento. I set addizionali permettono l’inserimento di elementi speciali, come nomi e date, grafi ed alberi, tabelle e grafici, header speciali aventi il ruolo di corpo del documento. Figura 7 Esempio di annotazione secondo le TEI Guidelines: annotazione testuale (a sinistra) e header (a destra) Architecture and Tools for Linguistic Analysis Systems (ATLAS) è un’architettura e un insieme di strumenti per l’analisi di risorse linguistiche “lineari”, ovvero testo, clip audio e video. Permette di segmentare il materiale linguistico, tipizzare le annotazioni, e comprende un set di metainformazioni basato su Dublin Core. Il suo punto di forza è un modello delle annotazioni molto astratto, che lascia ampio spazio all’adattamento ad esigenze specifiche. ATLAS si compone, essenzialmente, di quattro parti: • Un’ontologia d’annotazione • Un’interfaccia di programmazione (API) • Un formato d’interscambio dati (AIF) • Un’infrastruttura di definizione tipi (MAIA). L’ontologia d’annotazione si basa sui seguenti elementi: • Segnale, un dato sorgente da annotare in tutto o in parte; • Àncora, una coordinata che individua parti specifiche all’interno di un segnale; • Regione, la parte di un segnale individuata da un’àncora; • Contenuto, un’informazione generica associata ad una regione; • Annotazione, l’associazione di un contenuto ad una regione. Figura 8 Ontologia di base di ATLAS Dalla Figura 8, risulta che un segnale può essere diviso in più regioni da parte delle àncore; un’annotazione può essere priva di contenuto ed è legata ad una sola regione, ma questa, a sua volta, può riferirsi a più annotazioni; si possono, infine, costruire gerarchie di annotazioni: l’annotazione è il concetto base di ATLAS. Si nota che l’architettura di annotazione è relativamente generale, con pochi vincoli, soprattutto sul contenuto: l’informazione fornita da una regione, in effetti, può essere di qualsiasi tipo. Lo strato di API permette la connessione delle ontologie di base con le applicazioni di gestione, la definizione dei tipi (MAIA) ed un linguaggio di interrogazione (AQL). MAIA è il sistema per la tipizzazione degli elementi usato da ATLAS, e permette di qualificare tutte le ontologie di base. Oltre alle ontologie di base, ATLAS fornisce servizi di input/output di annotazioni e di accesso ai segnali. Questi servizi sono collegati alle ontologie di base e, tramite API, ai segnali d’origine (audio, video, testo ecc.) e a formati di I/O delle annotazioni (XML, JDBC, reti ecc.). Figura 9 Esempio di annotazione con CES di un testo in francese Mentre TEI e ATLAS si occupano soprattutto di norme generali per la codifica di qualunque tipo di testo, esistono altre iniziative che hanno incominciato a trattare più specificamente le annotazioni linguistiche. Uno di questi progetti è il Corpus Encoding Standard (CES), un progetto di codifica dei corpora ideato per le applicazioni di ingegneria linguistica. Si tratta di una specifica conforme alle specifiche TEI, che utilizza SGML e anche XML. CES è uno strumento per la codifica basato su un tipo di annotazione essenzialmente strutturale e grammaticale, con la particolarità di dividere in blocchi distinti la gestione del testo, delle annotazioni e dei collegamenti. Il formato sviluppato è meno complesso ed espanso di TEI, ma il campo di applicazione è più vasto, permettendo annotazioni grammaticali su qualsiasi tipo di testo. Il campo di annotazione è, invece, limitato, adatto solo ad informazioni grammaticali e ad allineamenti di testi in lingue diverse. CES comprende note d’uso del metalinguaggio, set di elementi per la documentazione delle risorse codificate, per la codifica dei “dati primari”, ossia il testo sorgente, e per la codifica delle annotazioni, che riguardano tre ambiti: • Divisione del testo in frasi e parole; • Descrizione morfosintattica (grammaticale) delle parole; • Allineamento e collegamento di testi. 3. Analisi di un corpus Una tecnica per evidenziare le caratteristiche linguistiche di un testo è l’osservazione della natura statistica del suo lessico. Una prima forma di analisi sui corpora, infatti, è la realizzazione di una lista di frequenza, ossia una lista di tutte le forme che compaiono nel corpus, ciascuna con l’indicazione del numero di occorrenze. A tali informazioni solitamente è aggiunto un valore, che prende il nome di frequenza relativa (Fw/N), che corrisponde al rapporto tra le occorrenze di una singola parola (Fw) e il numero di parole testuali del corpus (N). Consideriamo, ad esempio, il primo capitolo dei Promessi Sposi, e produciamo un lista di frequenza, si ha il risultato in Figura 10. In genere, l’osservazione di una lista di frequenza ordinata per tipi di parole, detta anche formario, è solo un primo passo, cui naturalmente segue il processo di lemmatizzazione. Figura 10 Lista di frequenza del primo capitolo dei Promessi Sposi Nel corso dell’analisi di un testo, è utile ridurre le forme flesse di uno stesso lessema a un singolo lemma, tale operazione prende il nome di lemmatizzazione. Per svolgere questo task, un software deve disporre di tutte le possibili forme in cui un lemma si può presentare all’interno di un testo, saperle riconoscere e sostituirle con il lemma appropriato. Per realizzare una lista lemmata, è doveroso essere in grado di risolvere un particolare problema, detto disambiguazione degli omografi, ad esempio nella frase “La porta si chiuse” è necessario poter distinguere se il termine “porta” si riferisce al lemma sostantivo <<porta>> o a quello verbale <<portare>>. Il risultato dell’operazione è una lista lemmata, ad esempio come quella in Figura 11, del testo in esame, a cui si può produrre una lista delle frequenze lemmatizzata, detta anche lessici di frequenza,, che al posto delle occorrenze delle forme flesse, ha quelle dei lemmi. La linguistica computazionale ha sviluppato diversi strumenti per condurre in maniera automatica almeno una parte della lemmatizzazione, con diverse tecniche, ereditate dal Natural Language Processing, per distinguere le forme omografe e riconoscere la struttura sintattica della frase. L’utilità dei lessici di frequenza, basati su corpora rappresentativi di una lingua, o anche detti di riferimento, risiede nella possibilità di fornire un quadro delle principali modalità d’uso ei lessemi e della loro copertura testuale. Hanno diversi impieghi: sviluppo di supporti per l’insegnamento delle lingue, ricerche di lessicografia statistuca, produzione di dizionari‐macchina per il Natural Language Processing, e in generale l’integrazione di dati lessicali per diverse applicazioni linguistiche. Figura 11 Lista lemmatizzata della frase in italiano "Il dottore mi raccomandò di non ostinarmi a guardare tanto lontano" Oltre a quanto descritto, sono possibili ulteriori analisi avanzate dei corpora, tra cui l’analisi degli usi con le concordanze. Le parole non figurano isolate in un periodo, ma accompagnate da altre, formando così quello che comunemente viene chiamato cotesto. Il cotesto che precede e segue una parole, fornisce informazioni sul suo uso e iuta ad individuare i relativi casi d’uso più requenti. Per estrarre da un corpus le parole e i rispettivi cotesti, si usa uno specifico strumento, la concordanza. Essa costituisce la presentazione delle parole di un testo, con l’indicazione della frequenza con cui la parola occorre e il cotesto. Lo scopo è osservare i diversi usi di una parola, esaminare i diversi cotesti in cui occorre e analizzare la relativa regolarità con cui si accompagna ad altre parole nel suo cotesto. La prassi più tipica di esibizione del cotesto è nella forma KWIC (keyword‐in‐context), in cui il numero delle parole precedenti e successive alla parola in esame (detta nodo e si trova nella colonna centrale) può variare. Figura 12 Snapshot di un software di concordanza 4. Interrogazione avanzata e analisi dei dati testuali I corpora etichettati danno la possibilità di condurre ricerche avanzate, ovvero realizzare un sistema di estrazione dati che sfrutta la capacità di combinare diversi criteri, in modo da rispondere a interrogazioni su aspetti multipli delle unità di analisi. Altre possibilità di esplorazione dei corpora sono offerte dalla statistica testuale, che annovera tra le sue nozioni di base la dispersione e l’uso dei lessemi. Mentre la frequenza indica globalmente il numero di occorrenze di una specifica unità linguistica, la dispersione indica se e dove si presentano concentrazioni di occorrenze nel corpus e/o in diverse tipologie testuali. Per individuare la dispersione è necessario suddividere il corpus in parti, e successivamente calcolare le frequenze relative di ogni unità linguistica nelle lingole parti di suddivisione del corpus. La scelta di ripartizione del corpus è un momento delicato del calcolo della dispersione, dal momento che ne influisce il valore. Esistono diverse misure di dispersione, ma quella più accettata è la seguente: 1
1
√
dove ν indica il coefficiente di variazione (rapporto tra la deviazione standard e la media della frequenza nelle singole unita di suddivisione), mentre n indica il numero di partizioni del corpus. La dispersione è sempre un numero inferiore a uno, ed è tanto maggiore, quanto maggiore è il numero di partizioni in cui compare la parola. Una volta determinata la frequenza e la dispersione di una unità linguistica, è possibile avere una stima dell’uso. L’uso specifica il modo con cui l’unità occorre nel corpus e viene calcolato moltiplicando la frequenza per la dispersione: La nozione di uso è centrale nella statistica lessicale, poiché fornisce una rappresentazione quantitativa della effettiva presenza dell’unità lessicale nelle diverse parti del corpus. I risultati dell’analisi delle distribuzioni di frequenza lessicali in corpora di grandi dimensioni ha l’utilità pratica di individuare le fasce d’uso dei lemmi di un dizionario. Il tasso d’uso sarà sempre di valore inferiore o al massimo pari a quello della frequenza, tanto inferiore quanto più la parola si trova in un numero basso di partizioni diverse del corpus. 5. Le applicazioni dello studio dei corpora Oltre agli evindenti benefici dell’uso dei corporra in ambiti di ricerca linguistica e letteraria, vi sono applicazione di varia natura che possono godere di significativi vantaggi dall’uso dei corpora. I dizionari si servono oggigiorno dei dati dei corpora e della loro analisi per la scelta delle voci lessicografiche da inserire, per l’individuazione delle diverse accezioni di una parola, della loro incidenza statistica e per la definizione della casistica d’uso. La costruzione di grammatiche ricorre sovente alla linguistica dei corpora, da un lato per avere maggiore aderenza alla realtà linguistica, dall’altro per l’individuazione delle categorie descrittive da adoperare (corpus‐driven grammar). Il trattamento automatico del linguagio ha impiegato dati tratti da corpora per la realizzazione di parser, tagger e lemmatizzatoi che includessero moduli di natura statistica, traendone notevole beneficio in termini di accuratezza. Nel campo della traduzione automatica, tecniche corpus‐based, example‐based e statistiche sono allo studio per la realizzazione di software di traduzione automatica di altre prestazioni. Nel campo della didattica delle lingue, i corpora danno la possibilità di predisporre testi autentici, adeguabili alle diverse esigenze comunicative. L’accesso ai corpora consente di pianificare e programmare meglio l’ordine con cui proporre le diverse strutture linguistiche, preferendo quelle maggiormente impiegate nell’ambito di interesse dello studente. L’elaborazione del linguaggio naturale L’elaborazione automatica del linguaggio naturale ha lo scopo di implementare strumenti informatici per analizzare, comprendere e generare testi che gli uomini possano comprendere in maniera naturale, come se stessero comunicando con un altro interlocutore umano e non un computer. È caratterizzato da due prospettive diverse, che mirano l’una all’analisi del materiale testuale, l’altra alla generazione di testi linguistici: Natural Language Analysis (NLA) o Natural Language Understanding (NLU): data una frase ha l’obiettivo di darne una rappresentazione della sua analisi, ossia del processo di comprensione della frase; Natural Language Generation (NLG): data una grammatica di una lingua naturale, ha lo scopo di produrne frasi di senso compiuto. Semplificando, il primo filone vuol far <<comprendere>> (analizzare la struttura della frase al fine di darne una rappresentazione astratta) le frasi di una lingua ad una macchina, il secondo vuol far <<parlare>> (produrre frasi grammaticalmente corrette) la macchina. I due processi sono l’uno l’inverso dell’altro. Le distinzioni tra le due diverse fasi del trattamento automatico delle lingue naturali sono fondamentalmente su due fronti: La natura dell’ingresso di un processo di generazione varia fortemente dal tipo di applicazione. Sebbene un input linguistico può variare da una tipologia di testo ad un altro, generalmente è regolato da una grammatica comune. Questo non si verifica nel processo di generazione, dal momento che ogni sistema di generazione si rivolge a una specifica tipologia di applicazione, con una particolare specifica dell’input. Mentre sia NLA che NLG devono essere in grado di rappresentare un intervallo di forme lessicali e grammaticali proprie del dominio applicativo, il loro uso d rappresentazione è diverso. Il primo è stato caratterizzato come un processo di gestione delle ipotesi (hypothesis management), in cui l’input linguistico viene analizzato sequenzialmente non appena il sistema considera interpretazioni alternative. La sua principale preoccupazione riguarda un ingresso ambiguo, fuori dalle specifiche e mal formato. Tali problematiche non sono avvertite nel caso di NLG: l’ingresso non linguistico di tale processo tende ad essere relativamente disambiguo, ben specificato e valido. Natural Language Processing 1. Concetti Introduttivi I differenti due approcci al Natural Language Analysis possono essere raggruppati in due principali classi: Knowledge Engineering: codifica manuale di grammatiche e lessici da parte di esperti Machine Learning: addestramento di modelli statistici su grandi quantità di dati, rappresentati da corpora annotati o meno Un modo di vedere questa dicotomia è nella metodologia: il primo approccio tende a lavorare secondo una modalità top‐down, imponendo al testo dei pattern grammaticali e relazioni semantiche ben noti, mentre il secondo ha un modus operandi bottom‐up, ricercando pattern e associazioni da modellare, alcuni dei quali possono non corrispondere a delle proprie relazioni sintattiche e semantiche. Un altro modo di vedere tale distinzione è sulla base della gestione della complessità delle lingue, in particolare in merito al problema dell’ambiguità. Un approccio puramente simbolico, come il primo, deve risolvere l’ambiguità imponendo delle regole addizionali o fattori contestuali, che possono essere in qualche modo formalizzati. Questa è una metodologie basata sulla conoscenza, da momento che si affida a degli esperti per identificare e descrivere le regolarità del dominio. L’approccio empirico è più quantitativo, siccome tende ad associare delle probabilità alle diverse analisi testuali, e decide tra queste usando dei metodi statistici. 2. Architettura di un sistema NLA Figura 13 Schema a blocchi di un sistema per l'analisi del linguaggio naturale Un sistema per l’analisi di input linguistici ha un’architettura, rappresentata secondo uno schema a blocchi in Figura 13, e si compone dei seguenti elementi: Due sistemi di riconoscimento, l’input può essere sia una produzione scritta sia orale, ma i sistemi che operano l’analisi possono lavorare indistintamente su ognuno di essi, a condizione che siano in una rappresentazione macchina interna che il calcolatore è in grado di manipolare. Il sistema che opera il riconoscimento dei fonemi prende il nome di Speech‐to‐Text System, e sarà oggetto di un paragrafo nel capitolo delle tecnologie del parlato. Il sistema per la conversione dei grafemi in una rappresentazione macchina interna realizza uno scanning del documento cartaceo generando un file. Tale sistema è detto Optical Character Recognitioner (OCR). L’OCR può basare la sua azione su una base di conoscenza che contiene tutti i possibili elementi tipografici per ogni simbolo della lingua naturale. Tale approccio diventa impraticabile nel caso del riconoscimento della grafia, in tal caso si passa ad un particolare metodologia di Pattern Recognition, detta a riconoscimento strutturale. Si considerare una prospettiva gerarchica, dove gli elementi da riconoscere vengono visti come composti da componenti più semplici, detti primitivi. Il riconoscimento di un campione è dato da tipo di primitivi che lo costituiscono e dalla relazione di composizione intercorrente. Analisi lessicale, ha il compito di riconoscere gli elementi lessicali, e assegnarvi informazioni in merito alla loro categoria grammaticale, risolvendo le ambiguità. Si compone di due sottosistemi: Riconoscitore di forme, ha il compito di riconoscere le forme atomiche oggetto delle future elaborazioni. Si compone di un Tokenizer che compone la successione di caratteri in ingresso in unità linguistiche, ad esempio parole; e di uno Stemmer, che riconosce le possibili forme flesse di una unità linguistica e ne associa la forma radicale e le meta‐
informazioni di flessione; Categorizzazione, o Tagger, associa ad ogni unità linguistica una delle possibili classi mofolofico‐sintattiche. Gli ostacoli che si possono riscontrare in un’analisi lessicale sono vari. Nella Tokenizzazione, il problema è dato dalla non determinatezza dei delimitatori: essi dipendono fortemente dalla lingua adoperata nel testo e sono presenti irregolarità (unità atomiche composte da un insieme di parole, i.e Polirematiche). Inoltre, è possibile che un carattere di delimitazione non sia adoperato per delimitare parole (ad esempio il punto nelle sigle). Per lo stemmer è possibile che una forma flessa possa appatternere a varie posibili forme radicali. Nella classificazione, non è univoca l’appartenenza di una unità linguistica ad una classe morfologico‐sintattica. I due sottosistemi sono rappresentati in figura collegati in serie, ma spesso è necessario un loro lavoro sinergico, dal momento che l’uno può aiutare a risolvere le ambiguità che ostacolano il lavoro dell’altro. Ad esempio l’ambiguità nell’appartenenza ad una forma flessa è risolvibile conoscendo la classificazione morfologica dell’unità. Ad esempio “porta” può essere sia la flessione del lemma sostantivo “porta”, che di quello verbale “portare”. Senza ulteriori informazioni il processo di disambiguazione sarebbe impossibile, ma con la conoscenza dell’appartenenza dell’unità al predicato verbale, è semplice operare l’associazione al lemma “portare”. Analisi sintattica, o Parser, ha il compito di assegnare una caratterizzazione sintattica alla frase. Dato in ingresso una frase ed una grammatica, il compito del parser è determinare se la frase può essere generata dalla grammatica e, in caso affermativo, assegnare alla frase un’adeguata rappresentazione, detto albero di parsing. Un albero di parsing è un grafo aciclico etichettato, caratterizzato da: un nodo radice, detto Sentence (S), dei nodi foglia con le parole della frase e dei nodi intermedi, che rappresentano la struttura sintattica assegnata alla frase. Analisi semantica, Ha il compito di eseguire un’analisi semantica del testo in ingresso, generando meaning rapresentations. Si assegna a pezzi di struttura pezzi di significato. La struttura è composta da simboli e relazioni tra simboli che rappresentano stati del mondo. 3. Stemmer Gli stemmer sono analizzatori morfologici, che associano le forme flesse di un termine la sua forma radicale. La forma radicale può essere pensata come il lemma che si trova normalmente sui dizionari. Esistono due tipi di analizzatori morfologici: Inflectional morphology, esprime relazioni sintattiche tra le parole tra le parole della stessa parte del discorso. Nello specifico, studia la flessione nella forma delle parole, necessaria per esprimere delle caratteristiche grammaticali, come singolare/plurale o passato/presente. Derivational Morphology, esprime la creazione di nuove parole da partire da quelle conosciute, e cerca di collegare le differenti parole con la forma radicale. La derivazione solitamente coinvolge un cambiamento nella categoria grammaticale della parola, e può implicare un cambiamento del suo significato. Ad esempio “unkind” è fatto a partire da “kind”, ma ha un significato del tutto opposto. Gli analizzatori morfologici fanno un intenso uso di regole e dizionari lessicali, che possono essere efficientemente codificati in automi a stati finiti. Realizzare un dizionario per un analizzatore morfologico è un compito temporalmente dispendioso. Molte applicazioni non richiedono analizzatori linguisticamente corretti, in tali casi si ha analizzatori euristici, che usano regola empirica approssimativa. Un algoritmo di stemming molto adoperato è detto Algoritmo di Potter, costituito da una serie in cascata di regole di riscrittura delle parole. Le regole hanno una forma del tipo: (condizione) S1 ‐> S2 ovvero, se la forma flessa finisce con il suffisso S1 e la forma radicale soddisfa la condizione, allora S1 è sostituito da S2. Un esempio di tali regole per parole in inglese sono: (m > 0) ATIONAL ‐> ATE | relational ‐> relate (m > 0) FUL ‐> ε | hopeful ‐> hope Se la forma flessa ha parte radicale di misura positiva, il suffisso ATIONAL o FUL sono sostituiti da ATE o la stringa vuota, cosicché il termine “relational” diventa “relate” e “hopeful”, invece, è “hope”. 4. Tagger Le parole appartenenti ad una lingua naturale possono essere classificati in base ad un insieme di classi morfologiche, che costituiscono un insieme che prende il nome di Tagset di Tagging. Le parti del disocrso possono essere categorizzate come classi chiuse, ovvero quelle in cui la condizione di appartenenza è relativamente fissa, ad esempio le proposizioni, e classi aperte, in cui è possibile di volta in volta trovare nuovi elementi, dovute a parole di recente conio. Un esempio di tagset è quello del Penn Treebank, adottato anche per l’annotazione di diversi importanti corpora. Figura 14 Penn Treebank Part‐of‐Speech Tags Gli algoritmi di tagging ricadono in tre gruppi differenti: Rule‐based tagger, generalmente posseggono un grande database di regole di determinazione della parte del discorso di una unità linguistica, ad esempio una unità che segue un articolo è un nome. Un esempio è il tagger ENGTWOL, un analizzatore morfologico a due livelli: 1. Per primo viene consultato un dizionario dei termini, con la parte radicale delle unità linguistiche, il POS tag e alcune informazioni aggiuntive, e a tutte le unità della frase da analizzare vengono associate una o più etichette sulla base delle entry del dizionario; Figura 15 Esempio di dizionario lessicale di ENGTWOL 2. Un insieme di regole sono applicate per risolvere le ambiguità morfologiche, ovvero unità che presentano più di una etichetta. Figura 16 Esempio di una regola di vincolo per ENGTWOL Stochastic tagger, adoperano un corpus per determinare la probabilità che una data unità linguistica abbia un preciso tag morfologico in un preciso cotesto: minimizza {P(unità | tag) * P(tag | precedenti n tag)} Trasformation‐based tagger, è un approccio ibrido, e come gli algoritmi rule‐based ha un insieme di regole per l’assegnazione dei tag alle unità linguistiche, ma ha anche una componente statistica: le regole non sono inserite da un esperto, ma computate a partire da un corpus appositamente annotato. Un esempio è il Brill tagger, che opera seguendo questi passi: 1. Ad ogni unità linguistica si applica il tag più probabile, con tale probabilità costruita a partire da un corpus di training annotato considerando solo le singole unità linguistiche; 2. Successivamente si applicano delle regole di trasformazione, apprese dall’osservazione del training e considerando il cotesto all’interno di una frase, per correggere i tag erroneamente assegnati alle unità. 5. Parser Un processo di parsing può essere visto con un algoritmo di ricerca del corretto albero sintattico per una data frase, all’interno dello spazio di tutti i possibili alberi sintattici generabili a partire delle regole di una grammatica. I parametri che vanno dati al processo di definizione dell’albero sono: 1. le regole grammaticali, che predicono come da un nodo radice S ci siano solo alcune vie di scomposizione possibili per ottenere i nodi terminali; 2. le parole della frase, che ricordano come la (s)composizione di S debba terminare I due principali approcci al parsing sono: Top‐down o goal‐driven approach, cerca il corretto albero applicando le regole grammaticali a partire dal nodo radice S, provando a raggiungere i nodi foglia; Bottom‐up o data‐driven approach, si inizia con le parole che compongono la frase di input, da cui si inizia ad applicare le regole grammaticali fino a poter arrivare al nodo radice S. La strategia top‐down non perde tempo esplorando alberi che non portino a S come nodo radice, cosa che invece si verifica con la strategia bottom.up. Il top‐down, però, genera un grande indieme di alberi S‐rooted che sono inconsistenti con l’ingresso fornito, dal momento che gli alberi sono generati senza esaminare l’input linguistico. Bottom‐up non produce mai alberi inconsistenti con l’input linguistico. Quando in un nodo dell’albero sintattico si applicano delle regole grammaticali, si possono generare un insieme di percorsi alternativi verso uno o più nodi. Tale ramificazione non è espandibile in parallelo, ma va considerato un percorso per volta. Per questo l’esplorazione è fatta secondo due distinte strategie: Depth‐first, la ricerca procede espandendo sempre il primo nodo generato, e operando un backtracking nel caso il percorso non fosse giusto; Breadth‐first, la ricerca procede espandendo prima tutti nodi di un livello, per poi scendere al livello successivo. Ci sono molti modi di combinare previsioni top‐down con dati bottom‐up per ottenere ricerche più efficienti. La maggior parte usano un tipo come meccanismo di controllo per la generazione degli alberi, e l’altro come filtro per scartare a priori alberi che certamente non sono corretti, un esempio è l’algoritmo del Left Corner. L’idea alla base di quest’algoritmo è di combinare una strategia di generazione degli alberi di tipo Top‐down, con il filtraggio con considerazioni di natura Bottom‐up. L’algoritmo si memorizza la prima parola dell’input (left corner), e non si devono considerare le regole grammaticali in cui sul ramo sinistro dellla derivazion
ne si ha inco
ongruenza co
on il left corn
ner. Il filragggio può essere realizzato
o con tabellee che elencan
no tutte le caategorie valid
de per il left corner per o
ogni nodo no
on terminale. Figura 17 Ese
empio di tabella
a del filtraggio
Queesti approccci di parsing,, soprattutto
o se si conssidera una strategia del tipo Depth‐first, posso
o incorrere in
n situazioni d
di stallo, senza mai giunggere ad un rrisultato. Ciò si verifica q
quando la graammatica in
n ingresso al parser è di tiipo left‐recursive. Una grrammatica si dice ricorsiva a sinistra,, se ammette
e una regolaa → Aα (es. NP → NP PP), ovvero se contiene un u simbolo non terminaale che è siaa parte dellaa del tipo A →* condizione di innesco che c prodotto di una reggola grammaticale. Esisttono due modi per pote
er ovviare a a
onveniente: questo inco
Risccrivere una nuova gram
mmatica con lo stesso po
otere espresssivo della p
precedente, cercando dii rifo
ormulare le reegole che prresentano riccorsione a sinistra, ottenendo così qu
uella che pre
ende il nomee di w
weakly equivvalent gramm
mar; Gesstire esplicitaamente il pro
ocesso di esp
plorazione, e
evitando situazioni di stallo. Nell’ottica d
del secondo approccio ssi inserisce laa programmazione dinam
mica, una m
metodologia d
di parsing in
n cui si memo
orizzano i rissultati interm
medi con l’intendo di non
n ripetere il lavoro già faatto che si può evitare ee non cadere nella ricorsione a sinistrra. I risultati intermedi ve
engono mem
morizzati in u
una strutturaa che prendee o aciclico eticchettato, dove un arco contiene l’ind
dicazione dei nodi inizialii il nome di cchart. Un chaart è un grafo
e terminali e della regolla che deve vvenir applicata. Figuraa 18 Esempio d
di chart L’algoritmo di Earley è un esempio
o di program
mmazione din
namica che opera su un
n chart per realizzare r
un
n task di parssing. L’algorittmo inizia co
on una fase di inizializzazione applicando la rego
ola γ ‐> S. Ad
d ogni passo
o dell’algoritm
mo, uno dei seguenti tree operatori vviene applicaato ad ogni nodo del ch
hart, in funziione del suo
o stato: Previsione (Preedictor): creea nuovi sttati nell’enttrata corren
nte del chaart, rappressentando lee asp
pettative top
p‐down della grammatiica; verrà quindi q
creato
o un numeero di stati uguale allee posssibilità di espansione di ogni nodo no
on terminale
e nella gramm
matica; Sca
ansione (Scanner): verifiica se nell’input esiste,, nella posizzione adegu
uata, una parola la cuii cateegoria comb
bacia con queella prevista dallo stato aa cui la regolla si trova. See il confronto è positivo,, la scansione s
prroduce un nuovo n
stato in cui l’indiice di posizione viene sspostato dop
po la parolaa rico
onosciuta. Taale stato verrrà aggiunto aall’entrata su
uccessiva dell chart. Com
mpletamento
o (Completeer): quando l’indicatore di posizione raggiungee l’estrema destra dellaa regola, questa p
procedura riconosce chee un sintagma significativvo è stato ricconosciuto e verifica se l’’ avvvenuto riconoscimento è è utile per completare c
qualche q
altraa regola rim
masta in atte
esa di quellaa cateegoria. Una volta ccostruito il ch
hart, è possiibile ottenerre un albero di parsing, eestraendo l’aarco o l’insie
eme di archii che dal prim
mo nodo portano all’ultim
mo. Anche per il parsing esistono degli approcci statistici, dove si scelgono le regole da espandere in base a probabilità calcolate a partire da un corpus, per arrivare il prima possibile ad un’analisi e restituirla come “più probabile”. Dato un insieme di regole, fornite sia da esperti che definite a partire da un analisi empirica di un insieme di testi, si definisce la probabilità di applicazione della regola come: | ovvero, la probabilità nota la parte di innesto è pari al numero di volte in cui la regola è applicata nel corpus, diviso il numero di occorrenze della parte di innesco. 5. Un Applicazione: il correttore ortografico Una delle applicazioni elementari del NLA è l’implementazione degli strumenti di correzione ortografica o spell checkers. Tali tool devono realizzare due compiti: 1. Controllare la correttezza di una forma linguistica; 2. Suggerimento della forma linguistica più corretta a fronte di un errore. La maggior parte dei corretto ortografici funziona mediante la comparazione con un dizionario di riferimento, ovvero un repertorio lessicale in cui compaiono tutte le possibili flessioni di ogni parola. Dal momento che andare a memorizzate tutte le forme di flessioni impone una non trascurabile complessità spaziale, si preferisce memorizzare solo la parte radicale delle parole, e corredare il dizionario di un insieme di regole di scomposizione morfologica o di flessione. A fronte dell’immissione di alcune parole, lo strumento opera per prima cosa lo stemming con le regole di scomposizione, ottenendo la forma radicale, e successivamente controlla la presenza di quest’ultima nel dizionario. Il problema più complesso, è però legato all’individuazione dei suggerimenti per una correzione. In una lingua solo alcune successioni di lettere sono consentite, ad esempio in italiano non è consentito la successione “stb”. A tale scopo, oltre alla consultazione del dizionario, un correttore è corredato da un algoritmo di controllo delle sequenze alfabetiche all’interno di una parola. Lo strumento informatico usato per indicare tali sequenze è detto n‐gramma, dove n è la lunghezza della sequenza. L’algoritmo ha un insieme di n‐grammi plausibili, e quando in un testo si riscontra una sequenza non consentita, la si segnala come errore. Un latro metodo è quello della distanza minima, dove i candidati per la correzione sono ottenuti applicando alla parola erronea gli operazioni di cancellazione, inserimento e alterazione di una lettera, secondo il principio della minimizzazione della distanza della nuova parola con quella erronea. Per distanza tra due parole, si intende il numero di lettere difformi tra le parole, a parità di lunghezza. Se due parole sono di lunghezza differente, a quella più breve si aggiungono in coda tanti caratteri nulli, quanti ne bastano per arrivare alla lunghezza dell’altra parola del confronto. Ad esempio, data la parola “fonia” che non viene riconosciuta dal correttore di Microsoft Word, posso ottenere i seguenti suggerimenti: “fonda” (alterazione di un carattere), “fonica” (inserimento di un carattere), “conia” (alterazione di un carattere), “fobia” (sostituzione di un carattere) e “afonia” (inserimento di un carattere). Natural Language Generation 1. Introduzione Il Generazione di Linguaggio Naturale (NLG) si occupa della costruzione di sistemi che producano un testo comprensibile, in un qualsiasi linguaggio umano (Italiano, Inglese, etc.), a partire da una rappresentazione non linguistica della conoscenza. Si tratta di un “problem solving linguistico”, cioè un tentativo di risolvere un goal di tipo comunicativo attraverso l’uso del linguaggio, in tutte le sue forme. Il processo di generazione linguistica è uno dei più vecchi nel campo dell’elaborazione linguistica. Ad esempio, il più vecchio e famoso programma C, detto “hello word”, è un primo esempio di programma di generazione linguistica. Il suo compito è di visualizzare a video la stringa “Hello, world”, ed applica un approccio alla generazione che prende il come di canned test (testo inscatolato). Quest’approccio è semplice da implementare, ma mal si adatta a nuove situazioni. Si lascia, infatti, l’onere della produzione linguistica al programmatore e non al programma stesso,pertanto ogni variazione di applicazione impone l’intervento dell’autore. Un approccio più elastico in cui viene scritto in chiaro nel programma la parte invariante del testo da generare, lasciando all’utente l’onere di immissione in corso di esecuzione del programma la parte variante. Tale approccio viene detto template filling (compilazione modulo), ed è certamente più flessibile e maggiorente usato, ma ha ancora delle limitazioni. Ad esempio, il suo uso da parte di Weizenbaum in ELIZA ha avuto successo in alcune situazioni, mentre in altre ho generato frasi senza senso. User:
ELIZA:
User:
ELIZA:
Let’s talk just about you – not me. Can you think?
YOU LIKE TO THINK I – NOT YOU – DON’T YOU
I think you are an extremely stupid program
PERHAPS YOU WOULD LIKE TO BE AN EXTREMELY STUPID PROGRAM
Il successo di semplici meccanismi di generazione linguistici ha indicato che, ad una prima approssimazione, la generazione linguistica è più semplice della comprensione linguistica. Per questo motivo, gli sforzi degli studiosi si sono concentrati sulla comprensione, considerando i precedenti approcci sufficienti per la generazione. Quando le esigenze sono varie e complesse, si rendono necessarie tecniche più sofisticate, capaci di generare un appropriato range di frasi, e scegliere tra le frasi candidate sulla base del contesto e del senso voluto. Un sistema che si pone come obbiettivo la generazione di testo in linguaggio naturale si trova la necessità di compiere una serie di scelte: Selezione del contenuto: ovvero di scegliere appropriatamente il contenuto della frase in base allo specifico intento comunicativo e alla natura delle destinazione della frase; Selezione lessicale: il sistema deve scegliere il lessico più adeguato per esprimere i particolari concetti del contenuto informativo; Struttura della frase: • Aggregazione: il sistema deve ripartire il contenuto selezionato in frasi, clausole e parole; • Espressioni di riferimento: si deve determinare come riferirsi agli oggetti in discussione; Struttura del discorso: il sistema solitamente deve trattare con discorsi formati da più frasi, che devono essere caratterizzate da una struttura coerente e discernibile. Queste scelte, congiuntamente alla problematica di predisporre delle frasi lineari come insieme di parole, costituisco il cuore del NLG. 2. Architettura di un sistema NLG Figura 19 Architettura di un sistema per il NLG L’architettura per un sistema di NLG è illustrata in Figura 19, ed è costituita da due componenti in serie: Discourse Planner, questo componente lavora a partire da uno scopo comunicativo e intraprende l’insieme delle scelte che sono oggetto del NLG. Seleziona il contenuto dalla base di conoscenza e successivamente struttura tale contenuto in maniera appropriata. Il risultate piano del discorso specificherà tutte le scelte operare per l’intera comunicazione. Surface realizer, questo componente riceve la specifica del Discourse Planner, e genera delle singole frasi in funzione delle sue risorse lessicali e grammaticali. Tali risorse definiscono le potenzialità di generazione in uscita del componente. Se la specifica è costituita da più frasi, il Realizer viene invocato tante volte quante sono le frasi della specifica. 3. Surface Realizer Esistono due possibili approcci alla realizzazione del Realizer: Systemic Grammar, Functional Unification Grammar. o
Systemic Grammar Nel Systemic Grammar le frasi sono rappresentate come collezioni di funzioni, e si adoperano delle regole per il mapping di tali funzioni in esplicite forme grammaticali. Un sistema di analisi sistematica delle frasi organizza le funzioni su livelli multipli, come in figura per l’analisi della frase “The system will save the document”. Figura 20 Analisi sistematica di una frase in inglese Questi livelli gestiscono diversi insiemi di funzioni, dette meta‐funzioni, che rappresentano i vari aspetti alla base di un task di generazione linguistica: • Le meta‐funzioni interpersonali raggruppano quelle funzioni, che stabiliscono e mantengono l’interazione tra lo scrittore e il lettore. In Figura 20, è rappresentato dal mood layer, che determina se la frase ha un carattere imperativo, affermativo o interrogativo. • Le meta‐funzioni concettuali si riferiscono a quello che è comunemente definito il “propositional content” dell’espressione, solitamente espresso come semantica della frase. In Figura 20, il transitivity layer determina la natura dell’informazione espressa. • Le meta funzioni testuali si riferiscono al modo con cui le espressioni si adattano al discorso corrente. Ciò include le problematiche di thematization e reference. Il theme layer rappresenta la marcatura del tema della frase. Molte delle scelte che il processo di generazione deve compiere dipendono dal contesto della comunicazione, che è formalizzato dalle meta funzioni interpersonali e testuali. La grammatica viene rappresentata usando un grafo and/or aciclico etichettato, detto system network, di cui un semplice esempio è rappresentato in Figura 21. Figura 21 Un semplice esempio di System Network Nel system network, una parentesi graffa indica sistemi collegati con un operatore di “and” (ovvero in parallelo), mentre la linea retta verticale sono i sistemi interconnessi con una “or” (ovvero in serie). Il formalismo del system network non richiede l’uso di una teoria sistematica, ma è possibile basare il tutto su una categorizzazione sistematica. Una systemic grammar utilizza dei realization statements per mappare le caratteristiche specificate della grammatica nella forma sistematica. Ogni caratteristica nella rete può avere un insieme di asserzioni realizzative, che specificano dei limiti sulla forma finale dell’espressione. Ciò è illustrato in Figura 21, come un insieme di asserzioni in corsivo al di sotto di ogni caratteristica. Le asserzioni realizzative sono ottenute impiegando i seguenti operatori: +X: inserire la funzione X, ad esempio si specifica che tutte le frasi devono avere un predicato X/Y: combinare le funzioni X e Y. Ciò consente alla grammatica di avere una struttura di funzione a strati, assegnando differenti funzioni alla stessa porzione dell’espressione. Ad esempio clausole attive combinano l’attore con il soggetto, mentre quelle passive lo scopo con il soggetto X^Y: ordinare la funzione X in un certo punto prima di Y. Ad esempio frasi indicative pongono il soggetto prima del predicato X:A: classificare la funzione X con la caratteristica lessicale o grammaticale A. Tali classificazioni segnalano a un basso livello un passo ricorsivo attraverso la grammatica, da applicare alla frase, all’elemento lessicale o morfologico. Le caratteristiche indicative inseriscono la funzione soggetto, che deve essere un nome. Tale elemento verrà ulteriormente specificato da un’altra porzione della grammatica stessa. X!L: assegna alla funzione X l’elemento lessicale L. All’elemento finito del passivo è assegnato l’elemento lessicale “be”. Dato un sysytem network pienamente specificato, la procedura di generazione da applicare è la seguente: 1. Si attraversa la rete da sinistra verso destra, scegliendo la caratteristica appropriata e collezionando le associate asserzioni realizzative; 2. Si costruisce un’espressione intermedia che riconcilia l’insieme delle limitazioni imposte dagli statement realizzativi collezionati al passo precedente; 3. Si ripercorre la grammatica dal basso per ogni funzione che non è stata pienamente specificata. Consideriamo la seguente specifica di ingresso: L’ingresso specifica l’entità processo, attore e scopo, ma anche che la frase è affermativa e che è un’azione rivolta nel futuro. Il processo generativo inizia con la grammatica in Figura 21, andando ad analizzare i tre elementi del primo livello. Si parte dalla caratteristica mood, e si sceglie le caratteristiche indicative e declarative, dal momento che nell’input è indicato che la frase è un’asserzione. In base alle relative asserzioni realizzative ottengo la seguente strutturazione funzionale: La presenza di “save” come processo, impone la scelta di una caratteristica transitiva, e dal momento non viene indicato l’uso del passivo, si adotta uno schema attivo: si inserisce l’attore e lo si combina col soggetto si inserisce l’oggetto, combinandolo con lo scopo e ordinando dopo il predicativo. Si ottiene il seguente schema: Infine, dal momento che non c’è in ingresso alcuna specifica tematica, si sceglie uno schema di default, che inserisce theme e rheme, combinando theme con il soggetto e rheme con il restante dello schema, ottenendo: A questo punto, il processo generativo ricorsivamente adopera la grammatica per specificare pienamente la frase e gli elementi lessicali e morfologici. o Functional Unification Grammar L’approccio Functional Unification Grammar usa l’unificazione per manipolare e valutare le strutture caratteristiche. L’operazione di unione o merge prende in ingresso due strutture e ne restituisce una in uscita fusione delle due in ingresso. Una grammatica ad unificazione è un insieme di tratti la cui unione costituisce la corretta struttura grammaticale di una frase. Una struttura di tratti, detta anche feature structure o FS, è un insieme di coppie del tipo “tratto” e particolare valore assunto dal tratto, il tutto organizzato in una matrice di attributi e valori, detta Attribute‐Value Matrix o AVM. Un AVM può essere rappresentato anche da un grafo, detto Direct Acyclic Graph o DAG, in cui i nodi sono i valori dei tratti e gli archi sono la tipologia di tratto, la direzione è data dalla strutturazione a livelli dei tratti. Questa grammatica ha nel suo livello più alto una serie di alternative per le frasi (categoria, o cat, s), parte nominale (cat np) e parte verbale (car vp). L’operatore di alternativa o “or” è data da una coppia di parentesi graffe. Al livello di frase, tale grammatica supporta le caratteristiche di attore, processo e scopo, e un pattern che descrive la disposizione dei costituenti la caratteristica. Le regole di unione sono quelle che regolano le caratteristiche di un elemento rispetto a quello precedente (ad esempio la persona del verbo deve essere legata a quello del soggetto di una frase). Nella Figura 22, l’entità S si compone di una parte NP, di una VP e di una NP, dove la prima NP e la VP si uniscono in base al tratto NUMBER, che deve essere pari a quella dell’attore. Questa grammatica è simile a quella sistematica dal momento che supporta una strutturazione a più livelli, che sono acceduti in maniera ricorsiva durante il processo di generazione: la definizione degli elementi di S si trovano ripercorrendo dall’inizio la grammatica. Ovvero l’attore dell’elemento S, non è altro che un elemento NP, che si lega al primo in base al NUMBER dell’attore ({↑↑ NUMBER } sta ad indicare il NUMBER dell’elemento di livello superiore, ovvero ACTOR). Figura 22 Semplice esempio di grammatica ad unificazione La struttura di input specifica i dettagli della particolare frase da generare, e viene rappresentata in una forma affine a quello della grammatica, che prende il nome di Functional Description o FD, e un suo esempio è illustrato in Figura 23. Figura 23 Un esempio di descrizione funzionale Nella figura, c’è la specifica di una frase con un particolare attore, “system” e un particolare scopo, “document”. Il processo è il futuro salvataggio del documento da parte del sistema. La struttura di ingresso specifica i particolari verbi e nomi da usare e anche l’accezione temporale della parte verbale. Per generare l’uscita del componente, questo ingresso viene unificato con la grammatica della Figura 22, attraverso degli esami multipli della grammatica. L’unione preliminare fa corrispondere all’input, il livello S della grammatica, ovvero la prima alternativa del top level, dando luogo a quanto illustrato in Figura 24. Ad esempio, la caratteristica associata ad ACTOR include anche l’elemento lessicale “system” proprio dell’FD di ingesso la categoria NP della grammatica. Figura 24 Risultato dell'unione preliminare Si continua consultando la grammatica, ottenendo un FD pienamente unificato, illustrato in Figura 25. Figura 25 FD pienamente unificato, risultante del processo di generazione 4. Discourse Planning Il componente di realizzazione superficiale prende in ingresso uno specificato input e genera delle singole frasi. Di conseguenza, esso ha poco o nessun controllo sulla struttura del discorso o il contenuto delle frasi. Questo cose sono controllate dal discourse planner. I due predominanti meccanismi per il planning del discorso sono: Text Schemata Rhetorical Relations Tale componente deve anche approcciare il problema del content selection, ovvero il processo di scelta della semantica della frase a partire della case di conoscenza in input e sulla base dello scopo comunicativo. Dal momento che tale base di conoscenza non si presente in una forma standard, ma dipende fortemente dalle caratteristiche dell’applicativo, è difficile fare un discorso generale sul processo di selezione dei contenuti. Concretamente la base di conoscenza può essere vista nella forma KL‐ONE, un cui esempio è illustrato in . In questa rappresentazione si illustrano gli effetti e i passi, da compiersi in successione, che si devono compiere per effettuare l’azione di salvataggio. Figura 26 Una porzione della base di conoscenza della procedura di salvataggio o
Text Schemata Un approccio alla progettazione del discorso è quello di legarne la struttura del discorso con la struttura della base di conoscenza. Ad esempio, le direttive scritte che spiegano come svolgere una specifica azione, esprimono le azioni richieste ordinate sulla base della loro esecuzione. Ogni pre‐condizione di tali azioni viene specificata prima della relativa azione. Similarmente, gli effetti di queste azioni sono illustrati dopo le relative azioni. Sulla base di tali considerazioni, è possibile realizzare uno schema rappresentante tale struttura, come quello in Figura 27. Figura 27 Schema di strutturazione dello schema del discorso Lo schema viene rappresentato con un Augmented Transition Network o ATN, in cui ogni nodo è uno stato e ogni arco una transizione. Il controllo inizia nel piccolo nodo nero in alto a sinistra e procede seguendo gli archi fino a che l’esecuzione non si interrompe nel nodo terminale nell’angolo in basso a sinistra. Il nodo S0 consente l’espressione di tutte le precondizioni, la transizione allo stato S1 impone l’espressione dell’azione stessa. S1 consente la chiamata ricorsiva della rete per esprimere i passi sottesi all’esecuzione dell’azione. La transizione verso S2 non richiede alcuna azione, e S2 consente di esprimere i possibili effetti collaterali dovuti all’esecuzione dell’azione. Questo approccio sugli schemi consente di ottenere delle strutturazioni del discorso solo di alto livello. o Rhetorical Relations Gli schemi sono utili per la panifica del discorso fornendo un insieme discreto di pattern di espressioni, ma sono affetti da due principali problemi: Gli schemi sono impraticabili quando il testo da generare richiede una maggiore varietà strutturale e ricchezza di espressione. Talvolta si rendono necessarie delle variazioni nella strutturazione del discorso, e ciò appone notevoli difficoltà ad approcci basati su schemi. La struttura del discorso generata dagli approcci con schemi, è data da una semplice frase, senza includere alcuna struttura ad alto livello che pone in relazioni le frasi tra loro. Un utile approccio è di dare un’occhiata sotto al tetto dello schema in modo da scoprire le dinamiche retoriche al lavoro nel testo. Un sistema informato di tali dinamiche può successivamente sviluppare un proprio schema basato sulle situazioni incontrate. Una delle teorie che cercano di formalizzare tali dinamiche è detta Rhetorical Structure Theory o RST. È una teoria descrittiva dell’organizzazione del testo basato sulle relazioni che sussistono tra le parti del testo. Le relazioni che costituiscono tale teoria designano il segmento centrale di un discorso come nucleo, mentre il segmento periferico come satellite. È possibile interpretare il secondo nei termini del primo e non viceversa. Le relazioni RST sono definiti in termini di limitazioni che pongono sul nucleo, sul satellite o sulla loro combinazione: Elaboration: il satellite presenta dei dettagli aggiuntivi che si riferiscono al contenuto del nucleo; Contrast: i nuclei presentano elementi che, sebbene simili in alcuni aspetti, sono differenti in certi modi; Condition: il satellite presenta qualcosa che deve verificarsi prima della situazione espressa nel nucleo; Purpose: il satellite presenta lo scopo del verificarsi dell’azione espressa dal nucleo; Sequence: l’insieme dei nuclei sono realizzati in sequenza; Result: la situazione espressa dal nucleo deriva da quella presentata dal satellite. Le relazioni RST sono tipicamente rappresentate graficamente come in basso: Inoltre le varie relazioni possono essere espresse in maniera gerarchica: Sebbene RST è stato originariamente proposto come strumento descrittivo, può essere anche impiegato come tool per NLG. Per rendere ciò possibile, le relazioni sono tipicamente riproposti come operatori per un planner basato sull’Intelligenza Artificiale. Ogni nodo della base della conoscenza diventa di volta in volta nucleo e satellite, e si valuta l’applicabilità delle varie regole RST, fino a giungere alla base di un albero retorico, non ulteriormente espandibile. Figura 28 Piena strutturazione retorica del testo d'esempio 5. Microplanning Nelle sezioni precedenti non si è trattato il processo del mapping delle strutture del discorso in uscita al Discourse Planner e l’ingresso del Surface Realizer. Le strutture del discorso specificano la struttura ad altro livello del testo da generare, ma includono pochi dettagli utili al realizzatore superficiale. Il problema di operare una pianificazione più dettagliata prende il nome di Microplanning. Le maggiori aree di interesse sono: Referring expressions: si richiede di determinare quegli aspetti di un’entità che dovrebbero essere usati quando ci si riferisce all’entità in questione in un particolare contesto. Se un oggetto è il centro della discussione, ed è stato già menzionato, è possibile usare un semplice “esso”, mentre l’introduzione di una nuova entità richiede delle espressioni più elaborate. Aggregation: si deve ripartire il contenuto dalla base di conoscenza in frasi e parole. La frase “Hai appena compilato ed eseguito un semplice programma in C” è una forma aggregata e maggiormente leggibile di una forma non aggregata del tipo “Hai appena compilato un semplice programma in C. Hai appena eseguito un semplice programma in C”. Traduzione Automatica 1. Introduzione alla Traduzione Automatica Uno dei problemi di maggiore impatto pratico connessso all’elaborazione linguistica è quello della traduzione automatica di testi, o Machine Translation (MT). La traduzione automatica opera da un testo in un linguaggio naturale (la sorgente o Source Language) ad un altro (la destinazione o Destination Language). Questo processo si è dimostrato utile per vari compiti, tra cui: 1. Traduzione approssimativa, in cui l’obiettivo è avere una vaga idea del senso di un testo. Frasi sgrammaticate e poco eleganti sono consentite, purchè il senso sia ben chiaro. Durante la navigazione sul web, ad esempio, un utente è disposto ad accontentarsi della traduzione approssimativa di una pagina in lingua straniera. Talvolta un umano monolingua può perfezionare la resa dell’output, senza necessariamente conoscere il testo nella lingua originaria (fase di post‐
editing). In tal modo, lo strumento di traduzione automatica rappresenta un supporto per velocizzare il processo di traduzione operato da un umano (computer‐aided human translation). 2. Traduzione a sorgente ristretta, in cui l’argomento e il formato del testo sorgente sono severamente limitati. Uno degli esempi di maggior successo è il sistema TAUM‐METEO, che traduce bollettini metereologici dall’inglese al francese. Il suo funzionamento affidabile è dovuto al fatto che il linguaggio dei bolletini meteo è molto regolare e ha uno stile formalizzato. 3. Traduzione pre‐editata, in cui un essere umano edita il testo del documento sorgente per renderlo uniforme a un sottoinsieme ristretto rispetto al linguaggio originario, anche detto sublanguage, prima della traduzione automatica. Quest’approccio è molto efficace quando lo stesso documento va tradotto in molti linguagi diversi. Un esempio è rappresentato dalla manualistica di elettrodomestici e altro: società come Xerox hanno definito un linguaggio abbastanza semplice per scrivere i propri manuali di assistenza, tale da poter poi essere tradotto automaticamente con facilità e pochi errori in tutti i linguaggi dei paesi in cui opera l’azienda. 4. Traduzione letteraria, in cui si conservano tutte le sfumature del testo sorgente. Oggigiorno questo è un compito troppo difficile per i sistemi di traduzione automatica. La traduzione è un compito difficile, perchè richiede generalmente una conoscenza approfondita del testo, che a sua volta esige una comprensione completa della situazione che si considera comunicare. Questo è vero anche per testi molto semplici, addirittura composti da una sola parola. Consideriamo la scritta “Aperto” sulla porta di un negozio, esso sta ad indicare che il negozio è pronto ad accettare clienti. La stessa scritta su uno striscione davati a un centro commerciale appena innaugurato, invece, sta ad indicare che i negozi sono ora operativi, ma i lettori non si sentirebbero ingannati se il centro dovesse chiudere nella notte senza rimuovere lo scrizione. In tedesco, d’altra parte, la prima scritta avrebbe come traduzione “Offen”, mentre il secondo “Neu Eröffnet”. Il problema è che linguaggi diversi categorizzano il mondo in modo diverso, ad esempio il termine francese “doux” ha una vasta gamma di significati, che corrisponde approssimativamente alle parole italiane “morbido”, “dolce” e “gentile”. La traduzione automatica deve necessariamente operare delle distinzioni tra i vari significati di un termine, comprendendo la situazione cui fa riferimento il testo originale, e operare una scelta del giusto termine, al fine di avere una resa nel linguaggio destinazione, che descriva correttamente una situazione identica o molto similare a quella nella sorgente. 2. La complessità del Machine Translation Nelle lingue umane esistono alcune caratteristiche comuni, universali, dovute al ruolo funzionale di una lingua come sistema di comunicazione tra uomini. Ogni linguaggio, ad esempio, possiede nomi e verbi. Anche quando le lingue differiscono tra loro, tali differenze hanno spesso delle strutture sistematiche, il cui studio viene detto tipologia. Gli elementi tipologici tra lingue sono di diversa natura: 1. Morfologica, le lingue sono spesso caratterizzabili lungo due dimensioni di variazione: • Il numero di morfemi per parola, si può spaziare da lingue isolanti, come il cantonese, in cui ogni parola generalmente ha solo un morfema, a lingue polisintetiche, come l’Eskimo, in cui una singola parola può essere composta di più morfemi, corrispondente a un’intera frase in italiano; • Il grado di frammentazione dei morfemi, andando da lingue agglutinative, come il turco, dove i morfeni hanno dei confini precisi, a lingue a fusione, come il russo, in cui c’è la tendenza di fondere insieme i morfemi in modo tale da essere difficile segmentarli. 2. Sintattica, le lingue sono differenti anche sull’ordine di aggregazione degli elementi del discorso: • SVO (Subject‐Verb‐Object), il verbo tende a essere interposto tra soggetto e oggetto; • SOV (Subject‐Object‐Verb), il verbo tende ad assumere l’ultimo posto all’interno della frase; • VSO (Verb‐Subject‐Object), il verbo tende ad assumere la prima posizione all’interno della frase. Due lingue che condividono la loro tipologia di ordinamento spesso hanno anche altre similitudini: ad esempio le lingue SVO generalmente fanno uso di preposizioni, mentre le lingue SOV di postposizioni. 3. Struttura del discorso e collegamento dei predicati con i loro argomenti, in una relazione esiste un termine principale e altri dipendenti da esso, ad esempio nella relazione di specificazione “la casa dell’uomo”, “casa” è la testa , mentre “uomo” è la dipendente. alcune lingue, dette Head‐marking, tendono a marcare una relazionesulla testa, invece, e quelli detti Dependent‐marking sul dipendente. Riprendiamo la precedente relazione di specificazione, in inglese avremo l’espressione “the man‐’s house”, dove il marker della relazione, ovvero “’s” è posto su “man” che è il termine dipendente, mentre in ungherese si direbbe “az ember hàz‐a”, mentre il marker, “a” è sulla testa. Lingue di tipo verb‐framed marcano la direzione del movimento sul verbo, come in Italiano per i termini “entrare” ed “uscire”, mentre le lingue dette satellite‐framed il marker è posto su un elemento detto satellite, come con i termini in inglese “go in” e “go out”. Infine, le lingue possono variare in base a quali elementi del discorso possono essere omessi. Molte lingue richiedono che si espliciti il pronome che si riferisce a un elemento precedentemente indicato nel discorso, mentre altre danno la libertà di ometterli. Tale differenza è illustrabile con il seguente esempio (in blue nel testo in inglese sono evidenziati i pronomi omessi nel testo in italiano): Stamattina mia madre è venuta in cucina con un libro. Me lo ha mostrato, dicendo di indicare il mio dolce preferito. This morning, my mother came in the kitchen with a book. She showed it to me, telling me to indicate my favourite cake. Lingue che possono omettere pronomi in questo modo sono chiamate pro‐drop. Lingue sparse, come il cinese e il giapponese, richiedono all’ascoltatore un maggiore impegno inferenziale per recuperare elementi antecedenti, e per questo sono definite cold languages. Lingue che sono più esplicite, rendono più facile il processo di comprensione, e sono dette hot languages. Ogni dimensione tipologica può causare problemi quando si opera una traduzione da una lingua ad un’altra. Ovviamente la traduzione da lingue SVO, come l’Italiano, a lingue SOV, come il giapponese, richiede un grande sforzo di ordinamento della struttura sintattica della frase, vedi Figura 29. La traduzione da una lingua satellite‐framed verso una verb‐framed, o da una head‐marking vero una dependent‐marking richiede cambiamenti della struttura della frase e vincoli sulla scelta delle parole. Lingue con intense omissioni di pronomi causano forti problemi di traduzione, dal momento che le omissioni devono essere identificare e le anafore ricostruite. Figura 29 Task di trasferimento da una lingua ad un altra, con evidenziato il processo di conversione della struttura sintattica Esistono altre caratteristiche che ostacolano il processo automatico di traduzione di una lingua naturale? Gli elementi di ostacolo per una MT si possono riassumere come derivanti dalla creatività costitutiva delle lingue naturali e dalla loro imprevedibilità. Di seguito è presente una breve lista: • Omografi testuali, possono essere risolti attraverso l’utilizzo di regole, in cui vi sia l’analisi sintattica della parola. Il termine “porta” in italiano corrisponde a due lessimi differenti, l’uno verbo e l’altro nome. Il parsing o un tagging riesce facilmente a disambiguare una tale situazione di indeterminatezza. • Omografi assoluti, possono essere difficilmente risolvibili da motori eslusivamente sintattici nella maggior parte dei casi, a meno che non rientrino in una polirematica o siano determinabili in base al contesto del testo in esame. Ad esempio il termine “calcio” può sia indicare il gioco sportivo che l’elemento chimico. Nel caso il termine compaia nella polirematica “campo di calcio” è facile ricondurre il segno grafico al concetto di gioco sportivo, oppure se il testo in esame è in ambito chimico, all’occorrenza del termine “grafico” c’è un’alta probabilità che ci si riferisca all’elemento chimico. In questi casi il ricorso a strumenti statistici può essere efficace. • Polirematiche e collocazioni, possono costituire un problema per tre ordini di motivi: 1. Sono più cristallizzate e spesso hanno traduzioni imprevedibili; 2. Sono in altissimo numero e spesso non censite; 3. Esistono usi “non idiomatici” delle parole che le formano. Un possibile metodo di approccio al problema è quello di operare un censimento di tali strutture, ricorrendo a corpora di grandi dimensioni e di varia natura, e di impiegare algoritmi statistici per il loro riconoscimento nei testi da tradurre. In primis il testo viene scandagliato alla ricerca di possibili collocazioni o polirematiche, in caso di rilevamento, vengono trattati a parte rispetto al resto del testo, andando a determinare la corrispondenza nella lingua di destinazione, e in caso di identificazione della parola (o una corrispondente corrispondenza o polirematica), si realizza la sostituzione. Il problema è che è possibile che non tutte le collocazioni e polirematiche siano state censite, in tal caso se sfuggono al modulo di detection, vengono erroneamente trattate come gli altri termini. Un serio problema è usare la stessa combinazione in una forma non cristallizzata, infatti in questo caso la traduzione è inapproppriata se la si considera come forma cristallizzata. Ad esempio la polirematica “tiro a segno”, indica generalmente un tipo di attività sportiva traducibile come shooting gallery, ma è anche possibile un uso come nella frase “ho mandato anche questo tiro a segno”, in cui la traduzione come polirematica è inesatta. In questi casi una macchina che impiega solamente delle tecniche formali si trova un ostacolo insormontabile, la stessa difficoltà riscontrabile nel caso di metafore e metonimie. • Uso di pronomi anaforici e cataforici, deittici e anafore, rappresentano un tipico problema computazionale. Ricostruire il riferimento linguistico di una tale espressione è, infatti, un’attività che chiama in causa fattori di tipo contestuale ed enciclopedico. Esistono, dunque, diversi sistemi, sia sintattici che probabilistici, che consentono la ricostruzione di riferimenti anaforici precedentemente presenti nel testo, e tale settore di ricerca prende il nome di Anaphora Resolution. Nella maggioranza dei sistemi di traduzione automatica di nuova generazione è sempre incluso un modello basato su corpora o example‐based, poiché sono in grado di superare vari elementi di ambiguazione nel testo, migliorando così notevolmente le prestazioni. 3. I modelli di Traduzione Automatica Figura 30 Principali modelli di Traduzione Automatica Diversi sono gli approcci alla traduzione automatica, che derivano da distinti modelli di funzionameto della lingua e dalle possibilità offerte dai mezzi sviluppati in seno al Natural Language Processing. I principali modelli adottati per programmare sistemi di traduzione automatica sono schematizzabili nel seguente modo, vedi Figura 30: • Sistemi basati su regole (rule‐based MT), in cui sono identificate alcune circoscritte regole formali di descrizione e trasformazione di unità linguistiche. Tali regole possono essere organizzate in moduli diversi che interagiscono tra loro, e rappresentati da diagrammi ad albero o da formalizzazioni equivalenti a gerarchie. • Traduzione diretta o per unità, in cui ogni unità testuale è analizzata e scomposta dal punto di vista morfologico fino a individuare il suo corrispondente diretto nella lingua di arrivo. Il sistema, dotato di un modulo morfologico che analizza le forme della parola da tradurre, individua le varie informazioni fornite dalla flessione, le scompone, e una volta ottenuta la forma traducente della base, applica un altro componente morfologico per produrre la corretta forma flessa nella lingua di arrivo. Il sistema riduce al minimo le informazioni linguistiche da analizzare, prendendo in considerazione solo le caratteristiche della specifica lingua di partenza e di quella di arrivo, necessarie per il procedimento della trasformazione. • Traduzione sintattica o T‐sistemi (transfer systems), sono sistemi ispirati all’approccio generativo fondanti su modelli di grammatica formale centrati sul livello sintattico. Tali sistemi abbandonano l’approccio lessicale, in favore della centralità di operazioni di trasformazione sintattica. Il modello è sostanzialmente composta di tre fasi: 1. Analisi morfosintattica; 2. Trasferimento della struttura sintattica della lingua di partenza in quella di arrivo; 3. Sintesi. I sistemi sintattici si servono di strumenti propri del Natural Language Processing, come il parsing sintattico per la prima fase, e il Natural Language Generation per la terza. Tra i sistemi basati sulle regole, quelli sintattici sono i maggiormente usati e i migliori in termini di performance. • Traduzione a interlingua, in cui il passaggio da una lingua ad un’altra è filtrato dalla presenza di una rappresentazione intermedia, l’interlingua. L’interlingua, in genere, non consiste in una vera e propria lingua, ma in una serie di livelli astratti di rappresentazione morfologica, sintattica e semantica, che si vuole considerare di base. L’inserimento dell’interlingua permette di costruire modelli plurilingui in cui il trasferimento delle strutture sintattiche ha sempre come elemento della coppia di lingue, l’interlingua stessa, riducendo così notevolmene l’elaborazione della fase cenrale della trasformazione sintattica. • Sistemi probabilistici o Statistical Machine Translation (SMT), si tratta di un approccio solitamente definito “empirico”, dal momento che si basa su dati disponibili sotto forma di corpora. Esso si fonda sull’accesso a corpora paralleli (ovvero costituiti da testi orginali in una lingua e da loro traduzioni in una o più lingue) cui attingere per rilevare, sulla base delle porzioni da tradurre, strutture già tradotte utilizzabili per fare una sorta di “calchi” sugli esempi presenti nel corpus (example‐based MT). I sistemi SMT fanno ricorso a parametri statistici per l’attribuzione dell’ordine delle parole e del migliore candidato per la traduzione. Questi sistemi sono spesso stati definiti non linguistici o “anti‐linguistici”, dal momento che fanno solo uso delle probabilità di co‐occorrenza e delle frequenze delle parole, piuttosto delle regole di tipo grammaticale o linguistico. Le probabilità di co‐occorenza sono basate principalmente su due tipi di dati: la presenza di candidati simili nei corpora paralleli usati come riferimento, e la posizione delle parole all’interno della frase confrontata con l’ordine delle parole all’interno del corpus. I risultati dei sistemi di impronta statistica si sono rilevati migliori rispetto a quelli che fanno ricorso a regole. Una maniera comoda per rappresentare i tre approcci dei sistemi basati sulle regole è di utilizzare il triangolo di Vauquois, illustrati in Figura 31. Il triangolo mostra come la profondità di analisi richiesta cresce se si parte dagli approcci diretti, e si arriva a quelli interlingua, passando per quelli di trasferimento. In aggiunta, illustra come la quantità di conoscenza richiesta decresca salendo verso il vertice del triangolo. Figura 31 Trangolo di Vauquois I sistemi attuali di traduzione automatica sono spesso ibridi, e tentano di arricchire le metodologie basate su regole con quelle adoperanti i corpora, introducento moduli che si integrano in forma componenziale e che permettono lo sviluppo di diverse strategie di risoluzione a seconda dello specifico problema traduttivo da affrontare. La flessibilità dei modelli ibridi è anch’essa un indicatore teorico non marginale che suggerisce una rappresentazione della produzione linguistica come insieme di strategie adoperabile in relazione a specifiche consizioni linguistiche ed extralinguistiche dell’utente. 4. Applicazioni commerciali di traduzione automatica Oggi il mercato offre una gran quantità di software per la traduzione automatica. Tra le applicazioni per personal computer i sistemi più noti e diffusi sono quelli prodotti da Globalink, Systran, Intergraph e Logos. Systran, in particolare, è un approccio multisorgente (sono presenti due sorgenti di conoscenza: dei dizionari elettronici e delle regole linguistiche), multitarget (a partire da una sola unità di analisi è possibile generate testi in varie lingue differenti) e con un modello operazionale che si compone di tre fasi: 1. Analisi delle parole: analisi morfologica e lookup nei dizionari; 2. Analisi delle frasi: le frasi che compongono il testo in esame viene analizzato attraverso tecniche di parsing; 3. Sintesi: si compone del trasferimento dei singoli termini nella lingua di destinazione e sistemazione delle frasi ottenute. La Commissione Europea traduce molti dei propri documenti con l’ausilio di versioni perfezionate di Systran, mentre diverse multinazionali (vedi la parte di supporto del sito della Microsoft, in Figura 32) hanno iniziato a tradurre manuali d’uso e documentazione interna con altri prodotti commerciali simili. Figura 32 Esempio di supporto della MIcrosoft in italiano disponibile per traduzione completamente automatica I sistemi di traduzione on‐line, spesso gratuiti, hanno registrato un certo successo negli ultimi anni. Il traduttore Babelfish del motore di ricerca Altavista o quello di Google è basato sulla tecnologia Systran. Con tali sistemi l’utente può ottenere una traduzione in tempo reale di un testo o di una qualunque pagina Web in una qualunque lingua, in una delle numerose lingue supportate con un semplice click. Il risultato, però, è il più delle volte una traduzione grezza più o meno imprecisa, a seconda delle caratteristiche del testo di partenza. Figura 33 Il servizio di traduzione automatica di Google Se i sistemi di largo consumo sono indicati per i non esperti, che hanno bisogno di traduzioni immediate, anche se di bassa qualità, i workbenches sono pensati per traduttori professionisti. Le workbenches sono pacchetti integrati per la gestione flessibile delle traduzioni, e contengono: • Word processors multilingue, • Controllori grammaticali e ortografici, • Dizionari e banche dati terminologiche (termbancks), • Corpora paralleli e programmi di allineamento dei testi, • Programmi di accesso e condivisione di traduzioni. Tra le funzionalità più efficaci vi sono le translation memories, che lavorano confrontando il materiale da tradurre con quello già tradotto, e mediante appositi algoritmi suggeriscono la traduzione più probabile, permettendo all’utente di confermare o rifiutare il suggerimento. Tali sistemi lasciano al traduttore la piena gestione del lavoro in completa autonomia, aumentandone la produttività e la velocità nel trattamento dei testi e permettendo a ciascuno di seguire la propria strategia di lavoro. I sistemi integrati più diffusi sono tutti di produzione europea, e tra questi il più diffuso è Trados Translation Workbench. Figura 34 Translation Work Flow nella suite Trados Tecnologie della lingua parlata 1. Introduzione L’elaborazione della lingua parlata, o spoken language processing, si riferisce all’insieme delle tecnologie relative al riconoscimento, generazione a partire da un testo elettronico e comprensione del parlato. Un sistema per la lingua parlata ha almeno i seguenti tre sottosistemi: • speech recognition subsystem, che converte un discorso parlato in grafemi, • text‐to‐speech subsystem, che genera fonemi a partire da un testo in formato elettronico • spoken language understanding subsystem, che mappa le parole in azioni e pianifica le azioni intraprese dal sistema. Esiste una considerevole sovrapposizione nelle tecnologie che stanno alla base di questi tre sistemi. Un insieme di regole vengono definite dai linguisti per i sistemi della lingua parlata, con un limitato successo. Negli ultimi anni, però, degli approcci statistici data‐driven hanno ottenuto dei risultati incoraggianti. Questi sono basati sulla modellazione dei segnali del parlato, usando dei ben definiti algoritmi statistici, che sono in grado di estrarre automaticamente un carico informativo dai dati. Ogni produzione linguistica individuale è a suo modo unica e irripetibile. Superare questa irriducibilità attraverso una macchina significa incontrare necessariamente una serie di difficoltà. Una delle caratteristiche che pongono delicate questioni teoriche ed applicative è la mancanza di invarianza dei suoni linguistici, soprattutto dal punto di vista acustico. Tale mancanza significa che quello che noi riconosciamo abitualmente come lo stesso suono (per esempio la [t] in “strada” e la [t] in “terra”), se osservato dal punto di vista acustico, ci appare nella maggioranza delle sue occorrenze tutt’altro che identico, tanto da essere in molti casi simile piuttosto ad altri suoni, oppure essere del tutto assente nella catena sonora. Tale variabilità è anche dipendente dall’interlocutore, che può non avere una corretta pronuncia a causa della sua età, di problemi all’apparato fonico, di ignoranza o di inflessioni dialettali. Figura 35 Diagramma della variabilità di pronuncia di alcune parole inglesi 2. Caratteristiche del parlato Per realizzare un sistema di elaborazione del parlato, bisogna comprendere le caratteristiche della lingua parlata. Allo scopo, è utile considerare le differenze che sussistono tra la lingua parlata e quella scritta. Molti attributi grammaticali e stilistici sono stati individuati per distinguere una comunicazione scritta da una orale. Da un’analisi dello studioso Biber, emerge che alcune tipiche caratteristiche di distinzione includono il numero di passivi e di pronomi impiegati, l’uso di contrazioni e di forme normalizzate (tecnica stilistica in cui il verbo principale è convertito in un nome: “Il giudice respinse l’ordinanza inaspettatamente” ‐> “Il rigetto dell’ordinanza da parte del giudice fu inaspettata”). Un esempio di tale distinzione è in Figura 36. Figura 36 Dimensioni delle differenze tra comunicazione scritta e orale Fortunatamente, la maggior parte di tali distinzioni nello stile grammaticale e nella scelta lessicale può essere gestita attraverso un addestramento, specifico per contesto applicativo e modalità, dei modelli nei sistemi di elaborazione del parlato. Un altro problema per l’elaborazione del parlato è la mancanza di fluidità. I dialoghi parlati mostrano un gran numero di problematiche, come interruzioni, correzioni, pause, frasi sgrammaticate, ellissi (omissione del soggetto ed altri elementi non indispensabili) e frasi sconnesse. Tali sfide sono proprie di input orali spontanei e rappresentano un ulteriore fattore di degradazione delle prestazioni di un sistema di elaborazione del parlato. Il motivo alla base di tale degradazione è che i modelli acustici costituenti alcuni sistemi sono allenati con la lettura di documenti scritti, mentre quelli linguistici con dei corpora di testi scritti. Anche in questo caso degli approcci statistici, ma soprattutto un addestramento mirato dei modelli, consente di ottenere migliori prestazioni. Spesso nelle conversazioni orali, molto del carico informativo non è presente propriamente nella parole, ma nelle caratteristiche prosodiche con cui si pronuncia la sequenza di parole. Consideriamo il semplice “Ok”, in base all’intonazione di pronuncia può assumere un insieme di significati che spazia da un’ affermazione di noia fino a un accordo di entusiasmo. L’interpretazione del parlato, quindi, non si deve limitare al solo significato semantico delle parole o dal contesto della conversazione, ma anche dalla prosodia. Questa proprietà del parlato è ancora un open issue della ricerca sulla spoken language processing. 3. Sistemi Text‐to‐Speech Una delle principali aree della ricerca sul parlato prende il nome di sintesi del parlato, o Text‐to‐
Speech (TTS). La tecnologia TTS si occupa della costruzione di programmi in grado di produrre frasi allo scopo di far interagire linguisticamente in modo naturale la macchina con l’uomo. L’operazione di conversione di un testo elettronico in una sequenza acustica paragonabile alla voce umana, non è tuttavia particolarmente agevole. La pronuncia di una parola non consiste nella pronuncia separata di foni presi da un inventario. Si tratta di un’attività ben più complessa, che richiede la capacità di programmare la sequenza fonica dotata di un adeguato profilo prosodico, in relazione a condizioni esterne e individuabili nel momento in cui l’atto viene in essere. Una macchina presenta una serie di limitazioni fisiche, come l’assenza di un adeguato apparato fono‐articolatorio, che impediscono la necessaria resa spontanea e continua del parlato con voce naturale. Se anche si ipotizzasse di superare l’ostacolo dell’articolazione vera e propria con sequenze registrate, rimarrebbe la questione difficilmente gestibile di memorizzare la pronuncia di tutte le parole del vocabolario in tutte le sue forme flesse, e soprattutto l’impossibilità di gestire la dimensione intonativa, con il risultato che la lettura di una frase sarebbe penosamente innaturale. Si rende dunque necessario disporre di un modello formale e integrato a più livelli con una serie di parametri acustici che superino tali difficoltà. Diversi sono i modelli di produzione del parlato assunti nel corso degli ultimi anni: 1. Modello articolatorio, secondo cui si procede ad una simulazione dell’apparato fono‐articolatorio umano; 2. Modello acustico, secondo cui si cerca di produrre un segnale che riproduca alcuni degli aspetti dell’onda sonora; 3. Modello concatenativo, secondo cui si tenta combinare porzioni di segnale di parlato umano in maniera da produrre un effetto quanto più naturale. I primi modelli TTS sono detti phoneme‐based, ossia basati sull’inventario fonologico di ciascuna lingua: con un ridotto inventario di unità si generava un segnale parlato che tuttavia non teneva conto dei fenomeni di coarticolazione, della transizione tra foni e della prosodia, e risultava del tutto innaturale, e a volte difficilmente comprensibile. Oggi le unità di analisi su cui si basano i sistemi TTS sono più ampie e possono essere costituite da coppie di foni e/o sillabe, in modo da garantire una resa migliore dei fenomeni di transizione. Schematicamente il TTS è un’applicazione che riceve in ingresso un testo in forma elettronica, lo elabora e in output produce un’onda sonora parlata corrispondente al testo inserito. Le odierne applicazioni TTS presentano solitamente un modello seriale, in cui vi sono una serie di livelli di trattamento dell’informazione linguistica che sono successivamente sottoposti a diverse fasi di lavorazione. Uno schema indicativo è quello presente in Figura 37. Figura 37 Schema di modello seriale TTS Il processo di generazione di un parlato sintetizzato può essere ridotto schematicamente a cinque fasi principali: • Pre‐trattamento, questa fase serve a trasformare il testo in una forma utilizzabile dal calcolatore. La normalizzazione del testo converte in forma standard “leggibile” le diverse parti del testo da sintetizzare, come numeri, sigle, acronimi, date e simboli (ad esempio trasformabile “29” in “ventinove” ed “€” in “euro”). A questa fase appartiene anche l’analisi della punteggiatura e la valutazione delle possibili ambiguità che influenzeranno il trattamento del testo, in particolare l’individuazione dei confini di una frase. Alla fine della fase sarà presente un testo trascritto ortograficamente in una forma omogenea utilizzabile nel prossimo step. • Analisi morfo‐sintattica, è un modulo di parsing che provvede alla segmentazione del testo in unità morfografiche e/o sintattiche. Questa tappa serve per individuare la categoria grammaticale di ogni unità lessicale e a individuare la struttura e le relazioni tra i sintagmi presenti nelle frasi del testo. Si tratta di una fase importante per trattare alcuni tipi di omografie, ma anche per fornire una base per le successive fasi di attribuzione della struttura prosodica. • Fonetizzazione, ha il compito di passare dalla rappresentazione fonologica ad una fonetica, che tenga presente gli allofoni e le tendenze alla coarticolazione della lingua. Dato che ogni lingua manifesta notevoli differenze nel rapporto tra grafia e concrete fonie, esistono diversi sistemi di fonetizzazione, categorizzabili in due raggruppamenti principali: 1. Rule‐based, operano su lingue in cui esiste un rapporto relativamente regolare tra fonemi e grafemi 2. Corpora‐based, operano su lingue in cui la pronuncia di una parola è maggiormente imprevedibile dalla sua trascrizione grafica. Per lingue come l’italiano, gran parte del lavoro per la fonetizzazione è realizzabile attraverso un convertitore grafema‐fonema, che applica un numero finito di regole definite per trasformare i caratteri scritti in sequenze fonetiche. Le parole che non rispettano tali regole, come quelle di origine straniera, sono trattate in maniera separata e inserite in un dizionario fonetico delle eccezioni, che contiene direttamente le pronunce delle parole che ne fanno parte. L’approccio, quindi, è ibrido, con un uso di un sistema rule‐based per trattare la maggior parte delle parole, e corpora‐based, invece, per le cose parole di eccezione alle regole di pronuncia. Nel caso di lingue molto irregolari, come l’inglese, la conversione basata su regole gioca un ruolo marginale. Si preferisce, invece, un fonetizzatore basato su un dizionario di riferimento, più o meno esteso a seconda del modello, che contiene le diverse forme delle parole (parole testuali) in una trascrizione fonetica standard, simile dunque ai dizionari delle eccezioni. Per le lingue con una morfologia flessionale molto ricca a volte la rappresentazione è fatta in modo da separare inizialmente la radice dalla desinenza flessiva in modo da velocizzare l’accesso al dizionario, per ricomporle in seguito alla sequenza fonetica. • Generazione prosodica, ha lo scopo di modulare l’intonazione del testo appena fonetizzato in modo che appaia naturale ed adeguata al tipo di enunciato da produrre. Si tratta di una fase complessa e delicata: si pensi a quante variazioni intonative aggiungano significato nella distinzione di frasi interrogative e affermative in italiano, o in modo ancora più sottile, nelle variazioni del focus dell’enunciato ossia delle porzioni che si desiderano mettere in rilievo. • Sintesi del segnale, consiste nella vera e propria generazione del segnale acustico, effettiva sintesi dell’onda sonora corrispondente al testo dato in input. Spesso per questa fase si usa uno speech database, ovvero una raccolta di segmenti di parlato registrato, che sono successivamente concatenati in modo da produrre una sequenza parlata continua. Figura 38 La testa parlante di Lucia Il parlato umano è caratterizzato da elementi fondamentali che non passano unicamente attraverso il sistema fonico‐acustico‐uditivo, e quindi non fruibili attraverso il solo segnale acustico. Il parlato è sempre accompagnato da differenti espressioni del viso. Da questa osservazione, nasce l’idea di realizzare macchine che possano simulare un parlato multimodale, ossia un parlato che non si avvalga solamente della modalità fonico‐acustica. In questa direzione si muove la nascita della sinesi audio‐visiva, ed esempi elettronici delle cosiddette teste paranti, di teste appunto che producono discorsi accompagnati dall’animazione del viso che simula i movimenti delle labbra, della mascella e della lingua durante il parlato. Le teste parlanti sono realizzate con animazioni in tre dimensioni che possono produrre movimenti fluidi, grazie ad una programmazione parametrizzata, in alcuni casi ulteriormente controllata con il confronto con dati reali registrati e indicizzati in modo ottico. 4. Sistemi di comprensione della lingua parlata Il riconoscimento del parlato, altrimenti detto Automatic Speech Recognition ASR, racchiude una serie di applicazioni in grado di identificare le sequenze linguistiche del parlato spontaneo, convertirle in formato elettronico, e permettere l’interazione con programmi e servizi usando la voce. Si tratta dell’operazione logicamente inversa a quella dei sistemi TTS, tanto da essere anche definita speech‐to‐text. I sistemi ASR servono per diversi scopi: dettare testi al computer, trascrivere relazioni e discorsi automaticamente, interagire linguisticamente con una macchina in sistemi di dialogo telefonici ed altro. Figura 39 Un modello sorgente‐canale per un sistema di speech recognition Come mostrato in Figura 39, una sorgente stabilisce una sequenza di parole, detta W, che intende comunicare per via orale. La sequenza viene trasmessa attraverso un canale di comunicazione disturbato verso il componente di elaborazione del segnale acustico del riconoscitore. Infine, un decodificatore opera una conversione del segnale acustico X, in una sequenza di parole Ŵ, che è visibilmente prossimo alla sequenza originale W. Un tipico riconoscitore del parlato consiste dei seguenti componenti: •
Adaptation, si tratta del modulo su cui le applicazioni, che intendono usare i risultati del riconoscitore, possono agire per calibrare i parametri del sistema in base alle proprie esigenze; • Acustic model, include la rappresentazione della conoscenza circa l’acustica, la fonetica, la variabilità dello strumento di acquisizione del segnale sonoro e del canale di comunicazione, le possibili differenze dei vari possibili interlocutori. Questa fase è quella che caratterizza i diversi sistemi, poiché per il riconoscimento si possono usare parametri estratti dall’analisi spettrografica delle singole unità fonetiche o di interi blocchi, oppure si possono usare sistemi generici di pattern matching, ossia di comparazione di schemi o modelli (templates). • Language model, si riferisce alla conoscenza linguistica del sistema come il concetto di parola, la possibile co‐occorrenza delle parole e il relativo cotesto. Le semantiche e le funzioni relative ad un’operazione che un utente potrebbe richiedere, possono anche essere necessarie per un modello linguistico. In genere, durante la fase di riconoscimento, vengono suggeriti diversi candidati possibili che presentano caratteristiche tali da essere compatibili con l’input vocale per la presenza di omofonie o quasi fonie più o meno estese, per risegmentazione, per ipoaticolazione. Si pensi ad un input in inglese che sia, per esempio, compatibili con diverse sequenze (come “ani ce cream”, “a nice cream” o “a nice scream”). • Signal processing, è il componente che recepisce il segnale acustico e ne estrae i vettori delle caratteristiche salienti, per poi passarli al decoder; • Decoder, è il cuore del sistema, deputato alla restituzione della sequenza di parole contenuta del segnale acustico. I due modelli presenti nel sistema possono essere caratterizzati da regole, ma molti sistemi ASR preferiscono far uso di corpora di parlato, sotto forma di training corpus, in modo da garantire un soddisfacente trattamento di diversi input linguistici. In tal caso si parla di un processo di corpus‐based speech recognition. Figura 40 Schema a blocchi di un sistema di riconoscimento del parlato I problemi di maggiore complessità nel riconoscimento del parato sono simili a quelli individuati per TTS: 1. L’estrema variabilità individuale delle caratteristiche vocali (legate al genere, alle caratteristiche dell’apparato fono‐articolatorio, ma anche e soprattutto alle peculiarità di pronuncia del singolo parlante; 2. I fattori di ipoarticolazione tipici del parlato spontaneo 3. La gestione di diverse tipologie testuali. Tali problemi possono essere in parte aggirati mediante la fase di addestramento, ma ciò rende poco flessibile il sistema, perché ogni nuovo utente dovrebbe svolgere una nuova sessione di training per la propria voce. Uno degli obiettivi principali dei sistemi di riconoscimento vocale è proprio la possibilità di essere indipendenti dal parlante. 5. Comprensione del linguaggio parlato (Acero) Un sistema di comprensione del parlato è fondamentale per interpretare gli enunciati degli interlocutori e intraprendere le azioni più appropriate. Una conoscenza lessicale, sintattica e semantica è necessaria per lo svolgimento di tale scopo. In è schematizzato un tipico sistema di comprensione del parlato: • Riconoscitore e sintetizzatore del parlato per effettuare operazioni di input output; • Sentence interpretation, si tratta di un componente per operare il parsing dei risultati di un riconoscimento del parlato in forme semantiche; • Response generation, è un modulo per formulare la più adatta risposta ad un input; • Dialog Manager, rappresenta il componente centrale del sistema, che comunica con le applicazioni e i moduli di comprensione del parlato. • Discourse Analysis, ha il compito di analizzare il discorso e risolvere ambiguità; • Dialog Strategy, memorizza lo stato corrente della conversazione e le possibili azioni future. Figura 41 Componenti di un sistema di comprensione del parlato 6. Applicazioni e interfacce utente (migliorare trovare applicazioni interessanti) Numerosi sono i settori in cui la sintesi del parlato è già una realtà operativa. Gli usi della sintesi del parlato sono principalmente rivolti allo sviluppo di sistemi di dialogo uomo‐macchina. In secondo luogo, tali tecnologie si indirizzano a utenti disabili che possono produrre parlato per mezzo di una tastiera o mouse, o ottenere versioni parlate di testi scritti nel caso di utenti non vedenti. Un terzo settore di applicazione del TTS è costituito dall’educazione linguistica per la predisposizione di strumenti per l’apprendimento delle lingue e altre applicazioni sono già presenti in videogiochi e nell’elaborazione di audio‐libri. Appendice Elenco di alcuni concetti presenti nella dispensa con la relativa spiegazione: 1. Fonetica è quella branca della linguistica o glottologia che si rivolge allo studio dei suoni linguistici nei loro aspetti concreti, secondo svariati punti di vista. I suoi principali temi di studio riguardano la produzione e la percezione dei suoni linguistici da parte dell’uomo, e le loro caratteristiche acustiche, viste sia dal lato dell’emittente, il parlante, che da quello del ricevente, l’ascoltatore. 2. Fonologia, detta anche fonematica o fonemica, è il ramo della linguistica che studia come i suoni linguistici funzionino all'interno d'una certa lingua, ovvero come si organizzino le unità distinte di suono, i fonemi. Essa fa parte della grammatica d'una qualsiasi lingua, a differenza della fonetica che è lo studio generale dei suoni linguistici (o, meglio, dei foni). 3. Morfologia è la parte della grammatica o della linguistica che ha per oggetto lo studio della struttura grammaticale delle parole, e che ne stabilisce la classificazione e l'appartenenza a determinate categorie come il nome, il pronome, il verbo, l'aggettivo e le forme della flessione, come la coniugazione per i verbi e la declinazione per i nomi distinguendosi dalla fonologia, dalla sintassi e dal lessico. Inoltre indaga i meccanismi secondo i quali le unità portatrici di significati semplici si organizzano in significati più complessi: le parole. 4. Sintassi è la branca della linguistica che studia le regole, o le relazioni modulari che stabiliscono il posto che le parole occupano in una frase, come i sintagmi si compongano in frasi e come le frasi si dispongano a formare un periodo. 5. Semantica è quella parte della linguistica che studia il significato delle parole (semantica lessicale), degli insiemi delle parole, delle frasi (semantica frasale) e dei testi. 6. Pragmatica è una disciplina della linguistica che si occupa dell´uso della lingua come azione. Non si occupa della lingua intesa come sistema di segni, ma osserva come e per quali scopi la lingua viene utilizzata. Più in specifico si occupa di come il contesto influisca sull´interpretazione dei significati. In questo caso il termine contesto è sinonimo della parola situazione in quanto potrebbe riferirsi a qualsiasi fattore extralinguistico, tra cui sociale, ambientale e psicologico. 7. Discorso ha come elementi fondamentali le frasi, e ne studia le correlazioni. 8. Morfema è la minima unità grammaticale isolabile di significato proprio. Esempio: nella parola "vanga", costituita dai morfemi vang + a, il morfema "a" indica che si tratta di un sostantivo femminile singolare. Se "a" lo si sostituisce con "are" si avrà "vangare" e in questo caso il morfema mi indica che si tratta di un verbo. Per formare il plurale invece userò il morfema "e" (vang(h) + e): in questo caso dunque il nuovo morfema non cambia la parte del discorso ma il numero. 9. Fono è una classe di suoni simili per modalità di articolazione e acusticamente, una serie di suoni che condividono un'onda sonora ben definita. Un fono considerato come membro di un fonema si chiama allofono. I foni sono distinti in due macroclassi: quella dei vocoidi (vocali), che comprende tutti quei foni acusticamente definibili come suoni, quindi quei foni nella cui fonazione l’aria non incontra alcun ostacolo; e quella dei contoidi (consonanti), che ospita tutti quei foni che sono acusticamente dei rumori, perché prodotti quando il flusso d’aria s'imbatte in uno o più ostacoli dopo la laringe. 10. Fonema è un'unità differenziante, indivisibile e astratta di un sistema linguistico 11. Lessema è una unità di analisi linguistica che appartiene a una determinata categoria sintattica (nome, verbo, aggettivo...), ha un particolare significato o funzione grammaticale, e modifica sistematicamente la sua forma secondo il contesto sintattico in cui è inserita. Ad esempio, il lessema CANTARE appartiene alla categoria Verbo, ha un significato particolare, e prende diverse forme (canto, canti, canterò...). 12. Lemma costituisce la forma canonica di una parola, la forma che si trova nel dizionario. 13. Sintagma è l'unità minima di questa catena sintattica e costituisce una stringa di suoni dotati della stessa funzione logica all'interno dell'enunciato. Per esempio, nelle frasi Pierino ha mangiato la mela e L'ha mangiata Pierino, la e mela hanno la stessa funzione logica di complemento oggetto. 14. Forme flesse indica l'insieme delle possibili variazioni di una delle parti del discorso per evidenziarne le diverse funzioni logiche nel contesto sintattico. Un esempio è la flessione nominale (riguardante sostantivi, aggettivi, pronomi) e verbale. 15. Sinonimia in semantica indica la relazione che c'è tra due lessemi che hanno lo stesso significato. 16. Omonimia in semantica indica un fenomeno per cui una stessa forma ortografica e fonologica esprime più significati. Ad esempio, in italiano le parole vite (plurale di vita) e vite (pianta) sono sia omofone (si pronunciano allo stesso modo) e omografe (si scrivono allo stesso modo), quindi si dicono omonime. 17. Polirematica è un'espressione composta da più parole, ma che viene usata come un tutto unico, come a ufo, capro espiatorio. Quando in esse compare un verbo, può apparire in forma inflessibile, in quanto cristallizzata nella frase, ad esempio "va e vieni"; oppure per le polirematiche a base verbale, simili alle espressioni idiomatiche inglesi, il significato del verbo è alterato dalle altre parole, e si coniuga normalmente: ad esempio "andare allo sbando" o "andare allo sbaraglio", in cui il significato del verbo andare è completamente trasformato. 18. Collocazione si intende una combinazione di parole relativamente più libera di una polirematica, ma accomunate da una particolare frequenza d’uso. Esempi in italiano sono compilare un modulo, obliterare il biglietto o delitto efferato. 19. Omografia indica una relazione di significato tra due parole che si presentano con la stessa grafia. 20. Omofonia è la relazione che c'è tra due parole che hanno lo stesso suono e diversi significati. 21. Cotesto è l’insieme delle parole che precede e segue una data parola. 22. Anafora è una figura retorica che consiste nella ripetizione di una parola o di gruppi di parole all'inizio di frasi o di versi successivi, per sottolineare un'immagine o un concetto. 23. Catafora è una figura retorica che consiste nella collocazione a fine frase di una parola che normalmente sarebbe posta all'inizio perché soggetto. 24. Deittico è un elemento linguistico che lega l’enunciato al contesto in cui avviene l’enunciazione, per es. i pronomi personali, gli aggettivi dimostrativi, alcuni avverbi. 25. Coarticolazione è il fenomeno per cui ogni suono e’ modificato dal suono che precede e segue. 26. Ellisse è l’omissione di parti di una frase che non sono fondamentali, e dalla presena facilmente desumibile.