Linguistica computazionale e approcci corpus-based
Cristina Bosco
Corso di Informatica applicata alla comunicazione multimediale
2016-2017
Per definire un sistema di NLP occorre conoscerne i seguenti aspetti:
- Input
- Algoritmi
- Conoscenza linguistica - Output
Sistemi di NLP
INPUT: modalità
Il sistema riceve in ingresso un input in linguaggio naturale
L’input può assumere diverse modalità: scritto,
parlato, gestuale o una mescolanza di queste tre modalità, che possono anche interagire tra loro.
Noi ci occuperemo specificamente di linguaggio scritto, ma non va dimenticata la complessità
derivante dalle altre modalità, come la sintesi del parlato e i problemi derivanti dal “rumore”, la
percezione ed interpretazione della gestualità.
Un esempio: l’input nelle lingue dei segni e nel parlato
Nel caso delle lingue dei segni, l’input è gestuale e si deve tenere conto della gestualità delle mani,
principale strumento per “segnare”, ma anche
delle espressioni del viso, della posizione del capo, delle spalle, braccia, ecc.
Queste stesso componenti possono entrare in gioco anche quando il linguaggio è parlato …
l’espressione del viso in molti casi è una
fondamentale chiave di interpretazione del significato del testo enunciato.
INPUT: lingua e genere
Il sistema riceve in ingresso un input in linguaggio naturale
L’input può contenere testi di natura molto diversa tra loro a seconda di:
- Lingua (francese, giapponese, swahili …)
- Genere testuale (prosa giornalistica, Twitter, poesia, romanzi, prosa scientifica, manualistica tecnica, previsioni meteo …)
Il sistema deve anche avere gli algoritmi adeguati a utilizzare la conoscenza e a produrre un determinato output.
Si deve pertanto assumere che la sequenza di semplici passi (=algoritmo) da fare sull’input sia ben definibile, e trovare un modo per
definirla.
ALGORITMI
Ma quale è l’algoritmo giusto?
Potrebbe includere le stesse operazioni che fanno gli esseri umani (AI forte) oppure no (AI debole).
Potrebbe esserci più di un modo per produrre
l’output e potrebbe essercene uno migliore e per vari motivi:
- più adatto all’input e la tipo di conoscenza - più veloce
ALGORITMI
I sistemi che traducono in modo automatico adottano approcci diversi, traducono
direttamente dalla lingua target alla lingua sorgente oppure tramite la mediazione di interlingue.
Essi utilizzano tipi di conoscenza diversa,
dizionari, ontologie ecc. (e non tutte queste
basi di conoscenza sono disponibili per tutte le lingue).
ALGORITMI: un esempio, la traduzione
Rispetto alla conoscenza necessaria al sistema per trattare il linguaggio occorre risolvere vari problemi:
- quale conoscenza?
- come rappresentarla?
- come fornirla al sistema?
- come usarla una volta acquisita?
CONOSCENZA LINGUISTICA
Assumiamo che una lingua sia trattabile da un sistema che ha a disposizione la conoscenza posseduta da un parlante di quella lingua.
La prima cosa da fare è dunque equipaggiare il sistema con tale conoscenza.
CONOSCENZA LINGUISTICA: quale?
Il primo problema consiste nel delimitare la
conoscenza necessaria alla comprensione del linguaggio.
Gli esseri umani non hanno che una molto parziale consapevolezza di quale e quanta conoscenza utilizzano per comunicare
tramite il linguaggio
CONOSCENZA LINGUISTICA: quale?
CONOSCENZA LINGUISTICA:
quale?
Esempio: che conoscenza occorre a un PoS tagger (analizzatore morfologico) per
prendere in input
“il cane dorme in giardino”
e restituire in output
“il ART, cane NOUN, dorme VERB, in PREP, giardino NOUN” ?
CONOSCENZA LINGUISTICA:
quale?
output = il ART, cane NOUN, dorme VERB, in PREP, giardino NOUN
conoscenza =
ART (il), NOUN (cane, giardino), VERB (dorme), PREP (in)
CONOSCENZA LINGUISTICA:
quale?
Esempio: che conoscenza occorre a un parser (analizzatore sintattico) per
prendere in input
“il cane dorme in giardino”
e restituire in output
“[S [NP (il – cane)]
[VP (dorme) [PP (in – giardino)]]]” ?
CONOSCENZA LINGUISTICA:
quale?
output = [S [NP (il – cane)] [VP (dorme) [PP (in – giardino)]]]
conoscenza = art + noun = NP verb + PP = VP
prep + noun = PP NP + VP = S
Il secondo problema è che la conoscenza del parlate deve essere rappresentata in modo adeguato ad essere usata dal sistema
(dizionari, ontologie, corpora, memorie di traduzione, basi terminologiche …).
La forma di tale conoscenza può essere molto diversa a seconda del task e del tipo di
informazione.
CONOSCENZA LINGUISTICA: come rappresentarla?
Un dizionario utilizzato da un sistema di MT ha una organizzazione molto diversa da un
dizionario usato dagli esseri umani.
I termini sono divisi in sezioni in base alla frequenza d’uso (alta, media, bassa) e al
dominio terminologico (generale, specifico), in modo da massimizzare la velocità con cui il sistema accede alle informazioni.
CONOSCENZA LINGUISTICA: un esempio, il dizionario per la MT
Una volta stabilito quale conoscenza si deve fornire al sistema ed in quale forma, occorre risolvere il problema di come fornirla al
sistema.
Questo è un problema che è stato molto discusso e che è determinante per chi progetta un sistema di NLP.
CONOSCENZA LINGUISTICA: come fornirla al sistema?
Acquisizione della conoscenza
Dove si trova la conoscenza?
Le soluzioni sono 2:
1)conoscenza dentro il sistema – rule- based
2)conoscenza dentro un corpus di dati linguistici – corpus-based
Corpus versus rule-based
grammatica grammatica
lessico lessico
…
SISTEMA
Corpus versus rule-based
grammatica grammatica
lessico lessico
…
CORPUS SISTEMA
apprendimento
Corpus versus rule-based
In entrambi i casi si presuppone che il linguaggio sia governato da regole (da conoscere per trattarlo)
MA:
• nei sistemi corpus-based le regole sono apprese, nei rule-based sono date
• nei sistemi corpus-based le regole sono probabilistiche, nei rule-based sono
deterministiche
Corpus versus rule-based
Se le regole variano, ad es. da una
lingua all’altra, da un genere testuale ad un altro, devono essere riscritte in un
sistema rule-based, ma non in uno corpus-based.
Approccio corpus-based
• Utilizzato dai linguisti dalla fine dell’800 e oggi molto diffuso
• Consiste nell’apprendere dal linguaggio le regole ed irregolarità del linguaggio
Approccio corpus-based
• A causa delle critiche di Chomsky
l’approccio corpus-based non è stato
adottato dalla linguistica computazionale che negli ultimi 20 anni.
Approccio corpus-based
• Il suo principale vantaggio è di offrire un concreto supporto alla soluzione del
problema dell’ambiguità.
• Se una frase è ambigua, il sistema che la tratta ne costruisce più strutture
alternative. Analizzando un corpus possiamo scoprire quale ordine di
preferenza dare alle alternative costruite.
Approccio corpus-based
• Si basa sull’idea che le co-occorrenze sono fonti importanti di informazioni sulla lingua
• Si ispira all’idea di apprendimento
linguistico umano, tramite esposizione a esempi e basato su criteri statistici
Approccio corpus-based:
come funziona?
Si assume che un CORPUS C di un
linguaggio L possa contenere (~tutta) la conoscenza necessaria a trattare L, e si acquisisce la conoscenza da esso.
L’acquisizione della conoscenza avviene tramite tecniche di apprendimento
automatico (machine learning).
Approccio corpus-based
Il processo di apprendimento offre come risultato:
• la conoscenza delle regole ed irregolarità del linguaggio (non-ristretto)
• MA SOPRATTUTTO la percezione della frequenza delle strutture linguistiche
Approccio corpus-based:
come funziona?
Si prende un campione di linguaggio, cioè un insieme di frasi (= CORPUS) che si considera rappresentativo della lingua
Si cercano nel corpus le strutture linguistiche e la frequenza con cui occorrono nel corpus,
arrivando a costruire una BASE di CONOSCENZA per il sistema
Si utilizza la base di conoscenza per trattare le frasi nuove
Approccio corpus-based
Prendiamo il corpus formato dalle 5 frasi seguenti:
Il cane dorme in giardino.
Mario ha un cane che dorme in giardino.
Il cane dorme spesso nel suo giardino.
Quando Mario dorme il cane va in giardino.
Il cane dorme in giardino.
Approccio corpus-based
Acquisiamo dal corpus preso la conoscenza circa la frequenza di strutture linguistiche:
avremo le seguenti frequenze di bi-grammi:
Il-cane: 80%, cane-dorme: 60%,
Mario-dorme:20%, in-giardino:80%, ...
e molte altre
Approccio corpus-based
Nell’esempio sono stati usati i bi-grammi, cioè le coppie di parole che si trovano vicine nella frase:
per ogni coppia <a,b> di parole possiamo estrarre dal corpus la probabilità che a e b siano associate sintatticamente
Approccio corpus-based
Perché usare i bi-grammi?
ovviamente il sistema non conosce a priori
quale è la struttura della frase (il suo obiettivo è proprio di costruirla!)
quindi procede per ipotesi e si interroga su quali parole della frase sarebbe corretto associare
e ipotizza che le parole che sovente sono vicine siano tra loro legate sintatticamente
Approccio corpus-based
Ma come funziona un sistema statistico?
ad ogni struttura S del linguaggio il sistema associa un valore di probabilità
il valore di probabilità di S è dato dalla
composizione delle probabilità delle parti di S
Approccio corpus-based
In pratica un sistema corpus-based:
se incontra una struttura ambigua cerca nella base di conoscenza l’informazione utile per costruire la rappresentazione più probabile della struttura
Approccio corpus-based
Esempio:
“il cane dorme in giardino”
P(il–cane: NP) = 95%
P(cane-dorme:?) = 3%
P(dorme-in: ?) = 5%
P(in-giardino: PP) = 95%
…
Approccio corpus-based
Ma come funziona un sistema statistico?
la probabilità di ogni parte di una frase analizzata dipende dalla sua frequenza in un CORPUS di riferimento e dal
modello statistico utilizzato
Approccio corpus-based
Ma come funziona un sistema statistico?
Cosa è un modello probabilistico ?
Serve a determinare come calcolare la probabilità di ogni risultato ottenuto dal sistema
Approccio corpus-based
i bi-grammi di “il cane dorme in giardino”:
1-il cane
2-cane dorme 3-dorme in
4-in giardino
La probabilità di 1 sarà maggiore di quella di 2, quindi il sistema propone la costruzione di 1 invece che di 2.
Approccio corpus-based
Nell’analisi sintattica (parsing), di fronte
all’ambiguità e quindi generazione di più strutture, per una singola frase, si
ricavano dai dati linguistici i CRITERI per scegliere la migliore delle strutture
generate
Approccio corpus-based
L’approccio corpus-based assume che
buona parte del successo del linguaggio umano nella comunicazione dipende
dall’abilità che gli esseri umani hanno nel gestire ambiguità ed imprecisione in
modo efficiente.
Approccio corpus-based
Gli esseri umani riescono infatti a cogliere la corretta interpretazione di un
messaggio da un insieme di stimoli di varia natura (ad es. contestuali ed
emotivi) oltre che dalle parole e
strutture che compongono il messaggio stesso.
Approccio corpus-based
L’approccio corpus-based offre inoltre la
possibilità di sfruttare la conoscenza che va al di là delle parole e delle strutture che
compongono il linguaggio.
È quindi un modo efficiente di acquisire la conoscenza sul linguaggio.
Approccio corpus-based
I primi sistemi corpus-based apprendevano tutta la conoscenza direttamente dai dati così come si presentavano (approccio non supervisionato).
Parte della conoscenza risultava però difficile da apprendere perché poco rappresentata o perché difficile da generalizzare.
Approccio corpus-based
A partire dagli anni ‘90 si sono sviluppati
sistemi che apprendono la conoscenza da
corpora di dati linguistici annotati (approccio supervisionato).
In questo modo si ha maggiore controllo sulla conoscenza che il sistema deve apprendere.
Approccio corpus-based
Attualmente i TREEBANK (la cui annotazione descrive i dati dal punto di vista
morfologico e sintattico) sono le risorse linguistiche più utilizzate nel NLP.
Altre risorse annotate sono i corpora per la sentiment analysis, lessici e lemmari
semantici e/o morfologici, corpora annotati con part of speech, ...