Apprendimento Automatico: Elaborazione del Linguaggio Naturale Roberto Navigli
Elaborazione del Linguaggio Naturale Un campo dell’informatica e un’area dell’Intelligenza Artificiale che studia le interazioni tra i calcolatori e il linguaggio umano (linguaggio naturale) Alcune sottoaree: Morfologia Analisi grammaticale (part-of-speech tagging) Sintassi (parsing) Semantica (semantica lessicale, word sense disambiguation, ecc.) Pragmatica (discorso, dialogo, ecc.) Generazione del linguaggio … Riferimenti bibliografici: C. D. Manning, H. Schutze. Foundations of Statistical Natural Language Processing. MIT Press, 1999. D. Jurafsky, J. H. Martin. Speech and Language Processing. Prentice Hall, 2000 (nuova edizione: 2009).
Che cosa distingue l’uomo dagli animali? La parola! Parole e corpus Che cosa distingue l’uomo dagli animali? La parola! Il conteggio di parole è alla base di qualsiasi statistica relativa alle stesse e al contesto in cui appaiono Un corpus è una collezione di testi in formato elettronico e, tipicamente, preelaborati in qualche senso Un corpus può essere grezzo (non annotato) oppure annotato Al ristorante, abbiamo preso un rombo con patate. Disegniamo un rombo sul piano bidimensionale... Il rombo è un quadrilatero a 4 lati uguali e paralleli a due a due. Un rombo, un pesce piatto, libero nell’oceano.
Che cosa distingue l’uomo dagli animali? La parola! Parole e corpus Che cosa distingue l’uomo dagli animali? La parola! Il conteggio di parole è alla base di qualsiasi statistica relativa alle stesse e al contesto in cui appaiono Un corpus è una collezione di testi in formato elettronico e, tipicamente, preelaborati in qualche senso Un corpus può essere grezzo (non annotato) oppure annotato Al ristorante, abbiamo preso un rombo con patate. Disegniamo un rombo sul piano bidimensionale... Il rombo è un quadrilatero a 4 lati uguali e paralleli a due a due. Un rombo , un pesce piatto, libero nell’oceano.
Che cosa distingue l’uomo dagli animali? La parola! Parole e corpus Che cosa distingue l’uomo dagli animali? La parola! Il conteggio di parole è alla base di qualsiasi statistica relativa alle stesse e al contesto in cui appaiono Un corpus è una collezione di testi in formato elettronico e, tipicamente, preelaborati in qualche senso Un corpus può essere grezzo (non annotato) oppure annotato Al/P ristorante/N, abbiamo/V preso/V un/A rombo/N con/P patate/N. Disegniamo/V un/A rombo/N sul/P piano/N bidimensionale/J... Il/A rombo/N è/V un/A quadrilatero/N a/P 4/J lati/N uguali/J e/C paralleli/J a/P due/N a/P due/N. Un/A rombo/N, un/A pesce/N piatto/J, libero/J nell’/P oceano/N.
La legge di Zipf La legge di Zipf afferma che, dato un corpus in linguaggio naturale, la frequenza di qualsiasi parola è inversamente proporzionale alla sua posizione (rank) nella tabella delle frequenze
Cooccorrenze e collocazioni Dato un corpus, è possibile studiare le correlazioni tra coppie di parole (cooccorrenze) Coppie di parole che cooccorrono più spesso che a caso sono dette collocazioni Es. mangiare la polvere, lavare i vetri, sedersi a tavola E’ possibile identificare le cooccorrenze da un corpus utilizzando delle misure di rilevanza statistica
Preelaborazione di una frase
Part-of-speech tagging L’obiettivo è, data una parola, associare la categoria grammaticale più appropriate rispetto al contesto in cui essa appare E’ di capitale/J importanza Abbiamo speso un capitale/N. Tipicamente fa uso di informazioni di frequenza delle parole e dei tag precedenti (spesso, “a memoria 2”, ovvero w-1, w-2, tag-1, tag-2) Es. TreeTagger
Trasformazione in una Bag of Words (BoW) Dato un testo, si procede alla preelaborazione (non necessariamente tutti i passi) Le feature sono tipicamente le parole (es. was) o i lemmi (es. be) Ciascuna feature è valorizzata con il numero di occorrenze nel testo d o, laddove abbia senso, con la TF*IDF: dove w è il termine/feature in esame, d è il documento che si sta rappresentando e D è l’insieme di documenti del dataset
Esempio (Sentiment Analysis) “His love was penetrating” (love=1, penetrate=1, time=0, husband=0, drink=0, suffer=0) “Every time her husband gets drunk, she suffers” (love=0, penetrate=0, time=1, husband=1, drink=1, suffer=1) Tuttavia, non vogliamo un semplice approccio BoW Utilizziamo feature per codificare l’affettività, es.: (love=1, penetrate=1, …, suffer=0, positive-emotion=1, negative-emotion=0, intensity=1) (love=0, penetrate=0, …, suffer=1, positive-emotion=0, negative-emotion=2, intensity=0) Abbiamo bisogno di risorse che permettano di espandere il vettore (es. WordNet oppure WordNet Affect)
Esempio (Question Typing) Anche in questo caso ho bisogno di espandere il vettore in modo da generalizzare il più possibile Es. supponiamo che nel training set ci sia questa sola domanda riguardante le città: What is Athens? WHAT_CITY Se nel test set ci viene chiesto: What is the capital of Italy? Con un modello bag of words, le due domande in comune hanno solo la wh-question (What). Se invece espandiamo il vettore con gli iperonimi di WordNet: (what=1, Athens=1, capital=1, city=1, …) (what=1, Athens=0, capital=1, city=1, …, Italy=1, country=1)
Word Sense Induction: Context-group discrimination (Schutze, 1998) Obiettivo: apprendere le classi di significato di una parola obiettivo I vettori (word vector) indicano le cooccorrenze (nella stessa frase) con la parola obiettivo all’interno di tutto il corpus E’ necessario un passo di feature selection che riduca l’insieme delle feature a quelle più significative
Word Sense Induction: Context-group discrimination (Schutze, 1998) Obiettivo: apprendere le classi di significato di una parola obiettivo I vettori (word vector) indicano le cooccorrenze (nella stessa frase) con la parola obiettivo all’interno di tutto il corpus E’ necessario un passo di feature selection che riduca l’insieme delle feature a quelle più significative I vettori di contesto (context vector) riguardano invece un singolo contesto di occorrenza della parola obiettivo E’ il centroide dei vettori delle parole che appaiono nella frase Rappresenta la summa dei significati delle singole parole nel contesto
Word Sense Induction: Context-group discrimination (Schutze, 1998) Obiettivo: apprendere le classi di significato di una parola obiettivo I vettori (word vector) indicano le cooccorrenze (nella stessa frase) con la parola obiettivo all’interno di tutto il corpus E’ necessario un passo di feature selection che riduca l’insieme delle feature a quelle più significative I vettori di contesto (context vector) riguardano invece un singolo contesto di occorrenza della parola obiettivo E’ il centroide dei vettori delle parole che appaiono nella frase Rappresenta la summa dei significati delle singole parole nel contesto I vettori di senso (sense vector) vengono creati raggruppando i vettori di contesto in cluster e calcolando il centroide del cluster