Sistemi basati su conoscenza
Linguaggio naturale: grammatiche
Prof. M.T. PAZIENZA
a.a. 2001-2002
Linguaggio Naturale
Necessità di definire una grammatica formale
• Dinamicità della lingua
• Non grammaticalità di alcune espressioni
• Comprensibilità del messaggio anche se
scorretto formalmente
I linguaggi formali sono assunti essere adatti a
gestire i linguaggi naturali, ma con molti
limiti e problemi
Linguaggio Naturale
• Definiamo lessico l’insieme delle parole
ammissibili del vocabolario della lingua
• Le parole sono raggruppate in categorie o
parti del discorso (nome, articolo,
pronome,verbo,…)
• Classi aperte (nomi, verbi, aggettivi)
• Classi chiuse (pronomi, avverbi, articoli,
preposizioni, congiunzioni)
Grammatica del linguaggio
• S-> NP VP S congiunzione S
• NP -> Pronome Sostantivo Articolo
Sostantivo Cifra Cifra NP PP NP
RelClause
• VP-> Verbo VP NP VP Aggettivo VP PP
VP Avverbio
• PP -> Preposizione NP
• RelClause -> that VP
Analisi sintattica
• Ricostruzione della struttura della frase di
un enunciato, data una grammatica
• Foresta di analisi: lista ordinata di Alberi
di analisi
• Algoritmi di parsing: approccio top-down e
bottom-up
Analisi di un enunciato
Descrivere grammatiche
BNF (problemi)
• Descrive stringhe (senza significato)
• Descrive grammatiche libere da contesto
S->NP VP
Sostantivo-> odore … … …
Grammatica logica
Logica del primo ordine
• Gestisce “stringhe con significato”
• Ogni nonterminale diventa predicato unario
vero per stringhe che sono sintagmi di
quella categoria
NP( s1 )  VP( s2 )  S (Concatena( s1 , s2 ))
( s " odore"...)  Sos tan tivo( s )
Grammatiche a clausole definite DCG
Una grammatica logica permette inferenze non
limitate (quindi approccio risolutivo costoso,
necessaria una limitazione)
Nelle grammatiche a clausole definite (DCG) ogni
formula deve essere una clausola definita (in
forma di Horn ha un solo atomo come
conseguente e un atomo o una congiunzione di
zero o più atomi come antecedente)
Con il formalismo DCG una grammatica è definita
in termini di logica del primo ordine
Grammatiche a clausole definite DCG
Sul lato sinistro un singolo nonterminale
(aumentato o meno)
Sul lato destro di una regola:
• I simboli nonterminali possono essere aumentati
con argomenti (semantica) in più NP(s,sem)
• Una variabile può apparire sul lato destro di una
regola DCG
• Un test logico tra graffe può apparire sul lato
destro di una regola.
Grammatiche a clausole definite DCG
Sul lato destro di una regola:
• …….
• Un test logico tra graffe può apparire sul lato
destro di una regola
Cifra(sem)->sem [ 0  sem  9]
Numero(sem)->Cifra(sem)
Numero(sem)->
Numero(sem1)Cifra(sem2)
[sem=10*sem1+sem2]
Grammatiche
Se non si distinguono i casi (ruoli sintat. e concord.) le
grammatiche possono generare anche frasi
sgrammaticate (overgenerazione)
Es. Io dare te la penne
Non è vero che qualunque NP si combina con
qualunque VP e questo con qualunque PP in
qualsiasi ordine
L’introduzione di nuove regole che considerino i casi
farebbe esplodere (nel numero) le grammatiche
Grammatiche aumentate
1. Parametrizzare le regole ed aggiungere delle
variabili permette di mantenere cost. il num. di
regole di una grammatica (costo computazionale)
e risolve anche il problema delle concordanze.
Esempio (in inglese)
S->NP(nominativo) VP ….
2. Sottogategorizzare i verbi
Esempio (in inglese)
PP->Preposizione NP(accusativo)
Sottocategorizzazione verbale
Analisi dei complementi (sintagmi obbligatori che
seguono un verbo all’interno del sintagma verbale)
• Lista di sottocategorizzazione (lista di categorie che il
verbo accetta prioritariamente e che lo caratterizzano)
• Aggiunti (sintagmi non dominati del verbo: spazio e
tempo)
E’ possibile che un verbo abbia più di una lista di
sottocategorizzazione / E’ possibile che un sostantivo
abbia più di una categoria
Sottocategorizzazioni verbali
Sottocategorizzazioni verbali
Aumentare la catergoria VP con un appropriato
argomento di sottocategorizzazione (complementi
necessari a formare un VP completo)
VP(sottocat)-> VP([NP!sottocat]) NP(accusativo)
!VP([Aggettivo!sottocat])Aggettivo
!VP([PP!sottocat]) PP
!Verbo(sottocat)[]
Sottocategorizzazioni verbali