Logica e Linguaggio Naturale Definite Clause Grammar
Transcript
Logica e Linguaggio Naturale Definite Clause Grammar
Logica e Linguaggio Naturale L’uso della logica nel trattamento del linguaggio naturale si articola in tre punti fondamentali: - il linguaggio Prolog è stato utilizzato nella costruzione di analizzatori sintattici dando luogo alla definizione di una classe specifica di grammatiche, detta Definite Clause Grammars (DCG) - tra i diversi modi di rappresentare il significato di una frase, la logica costituisce il più importante e, in ultima analisi, quello che sussume tutti gli altri - gran parte della “pragmatica computazionale” si fonda sulla pianificazione, un metodo di rappresentazione delle azioni che si può descrivere in termine di logiche del secondo ordine (epistemica, temporale). Definite Clause Grammar Il linguaggio Prolog è un linguaggio tipicamente dichiarativo, fondato su una versione ridotta di logica del primo ordine, detta, appunto, definite clauses (), Il principio fondamentale è che i dati ed il programma hanno lo stesso formato e lo stesso funzionamento. La base del Prolog è costituito da un data-base di dichiarazioni (fatti) come, ad es.: madre(Giovanna,Piero). madre(Giovanna,Luigi). madre(Giulia,Giovanna). madre(Anna, Luciano). madre(Lucia,Giuseppe). Questi fatti possono essere immessi come asserzioni (modalità consult). Se, poi, si formula un’interrogazione come ?-madre(Giovanna,x). il motore inferenziale del Prolog ricerca nel data-base la sequenza indicata. I termini che iniziano con maiuscola indicano delle costanti, mentre quelli che iniziano con minuscola sono variabili, che possono essere istanziate (unificate) con qualunque termine costante. Così la ricerca unifica madre con madre, Giovanna con Giovanna, mentre la x funziona come una ricerca delle costanti che possono istanziare lavariabile. Nel nostro caso avremo, quindi, x=Piero, x=Luigi. Se, invece, richiederò ?-madre(x,Luciano). avrò x = Anna. La regola, espressa come un’implicazione, nonna(x,y):-mamma(x,z),mamma(z,y). significa che il predicato “x è nonna di y” se è vero che “x è mamma di z” e “z è mamma di y”. L’interrogazione ?-nonna(Giulia,x). attiva per prima cosa la ricerca del predicato specifico nel data-base. Poiché non è presente esplicitamente, il motore inferenziale passa alla parte destra della regola e ricerca tutte le istanze di mamma(x,z). Questo provoca l’attivazione di tutte le asserzioni del nostro data-base, per cui avremo z = Piero (x = Giovanna), z = Luigi (x = Giovanna), z = Giovanna (x = Giulia), z = Luciano (x = Anna), z = Giuseppe (x = Lucia). Si passa, poi, alla seconda parte della regola; la ricerca mostra che l’unico predicato che si realizza è madre(Giovanna,y), per x = Giulia , y = Piero e y=Luigi; possiamo, quindi, presentare la tabella di istanziazioni, e cioè x = Giulia y = Piero y = Luigi Le regole del Prolog possono essere utilizzate al posto di ordinarie regole Context Free, a patto che se ne dia una lettura non generativa, ma dichiarativa. Diremo, quindi, non più “Sintagma nominale si riscrive articolo nome”, ma “ è vero il predicato sintagma nominale di una certa stringa, se è vero il predicato articolo della prima sottostringa e nome della seconda sottostringa”. In termini Prolog diremo sn(s0,s):-art(s0,s1),nome(s1,s). dove s0, s1 ed s sono gli indicatori delle sottostringhe. Questo tipo di grammatiche, dovute a Colmerauer e Pereira, sono dette Definite Clause Grammars, ed hanno avuto un notevole successo negli anni 80 e 90, soprattutto in Europa. --------------------------------------Bibliografia di riferimento: F.C.N.Pereira & D.H.D.Warren, Definite clause grammars for language analysis - A survey of the formalism and a comparison with augmented transition networks., in Artificial Intelligence, 13, 3 1980, pp. 231-278. -------------------------------------- Forma logica della frase Il primo obiettivo che l’interpretazione semantica mira a soddisfare è il reperimento dell'informazione testuale o documentaria seguendo le parole che la portano; a questo scopo occorre assegnare ad ogni parola isolata una rappresentazione del suo significato e istituire relazioni tra le parole stesse (sinonimia, iperonimia, meronimia, ecc.). Le relazioni lessicali tra le singole parole sono, tradizionalmente, espresse secondo i formalismi proposti dagli psicologi cognitivi, come le reti semantiche i frames o le semplici relazioni lessicali. Per fornire l’interpretazione semantica di una frase, invece, occorre disporre di una descrizione del significato delle singole parole tale che si possa combinare con le parole circonvicine in un significato composito, secondo la gerarchia dei sintagmi. La logica e' la disciplina che fornisce la base piu' credibile alla rappresentazione del significato di una frase, soprattutto considerando che ci fornisce lo strumento automatico per ragionare sul contenuto delle frasi prima di avviarle ad una qualche forma di esecuzione. Inoltre, la logica costituisce uno strumento adeguato anche per la rappresentazione delle relazioni tra parole. La logica in quanto tale ha per obiettivo la trasduzione delle frasi del linguaggio in formule che possono essere trattate da un sistema di ragionamento e per le quali è possibile calcolare una semantica, in termini di un valore di verità (vero/falso). Nel campo della linguistica computazionale, la verita' o falsita' della formula non e' rilevante; acquisisce maggiore rilievo la rappresentazione in termini logici solo per lo schema formale. Una frase introduce un certo numero di oggetti, tra i quali stabilisce una relazione o dei quali predica qualcosa. In termini di rappresentazione, il verbo funge da predicato e i suoi complementi sono gli argomenti. Dunque, un prerequisito essenziale per la costruzione della struttura predicativa di una frase e' la definizione della cosiddetta reggenza stretta del verbo, cioè quanti e quali elementi sono suoi argomenti obbligatori o inerenti (agente, oggetto, ricevente ecc.). La frase Giovanni regala a Maria una penna può essere tradotta come regala (Giovanni, penna, Maria) che corrisponde alla struttura astratta regala (x, y, z) con x = sogg., y = ogg., z = ogg. indiretto I tipi di oggetti che entrano a far parte di questa rappresentazione sono due costanti, cioè elementi unici e non generici, (Giovanni e Maria) ed un elemento generico, cioè un’istanza dell’insieme delle "penne". In termini di relazioni lessicali, questo significa che le costanti possono essere connesse solo con se stesse, mentre la variabile riferita a "penna" è in relazione di dipendenza gerarchica rispetto al concetto generico "penna". Questa relazione, espressa anche in termini di strutture di conoscenza equivale , a sua volta, ad una predicazione del tipo penna (y) che si interpreta "quell’oggetto x di cui si può predicare che è una penna". Un modo alternativo di rappresentazione è y:penna che si interpreta "quell’oggetto y di tipo penna". La rappresentazione della frase può divenire, così regala (Giovanni, y, Maria) penna (y) Un certo ordine in questo tipo di rappresentazione è introdotto dalla Discourse Representation Theory di H.Kamp. In DRT, l’esempio apparirebbe Naturalmente il nostro esempio non esaurisce tutte le possibilità di espressione. Se, ad esempio, si volesse rappresentare la frase: Tutti gli amici regalarono una penna a Maria secondo i criteri introdotti precedentemente, avremmo regala (x, y, Maria) amico (x) penna (y) dove, però, si perde l'informazione che gli amici è plurale. Assegnando ad amico la variabile x, la corretta interpretazione è che tutti i valori di x rispondenti alla caratteristica di essere amici di Maria soddisfano al predicato "regalare una penna a Maria". Ci troviamo di fronte ad un’espressione che enumera le istanze di una variabile, cioè le quantifica. Il linguaggio naturale conosce molte sfumature (un po', pochi, qualche, ecc.), mentre la logica conosce solamente "tutti" (∀ per ogni) e "uno" ∃ (esiste almeno uno). Alla luce di questo, la frase precedente diventa: x: amico (x) regala (x, y, Maria) penna (y) da intendersi "per tutte le istanze x essere amico implica che regala a Maria un oggetto di cui posso predicare che è una penna". Una frase che, come quella introdotta sopra, sia riducibile ad una variabile quantificata associata ad una predicazione, si dice che è nella "portata" del quantificatore. Se una frase contiene più di un quantificatore, si producono dei fenomeni di ambiguità di "portata". Ad esempio, la frase Ogni uomo ama una donna può le seguenti due rappresentazioni ∀x | uomo(x)⊃ ∃y | donna(y); ama(x,y) che formalizza la lettura per cui "ad ogni uomo corrisponde una donna che lui ama", oppure ∃y | donna(y)⊃ ∀x | uomo(x); ama(x, y) Con questo si esaurisce la struttura principale della frase. Il linguaggio naturale, però, dispone di una maggior ricchezza di espressione, che pone dei problemi di rappresentazione logica, talora non facilmente risolvibili. Se, ad esempio, si ha la frase Giovanni regala a Maria una penna rossa dovremo completare la rappresentazione data sopra con un riferimento al colore della penna, ciò che può essere ottenuto in due modi, o considerando "rosso" un attributo qualunque di penna, per cui avrò ..... penna(y) rosso(y) considerando "rosso" come il valore di proprietà definita "colore" dell’oggetto penna, come segue ..... penna(y) colore(y, rosso) I sintagmi preposizionali costituiscono, anch’essi, un problema, quando oppure non sono retti direttamente dal verbo. Una soluzione piuttosto frequente consiste nel considerare la preposizione come un predicato i cui argomenti sono il sintagma nominale dominante e quello che costituisce il PP stesso, come segue la penna di Maria --> penna(y) di (y, Maria) Se, poi, la frase includesse un riferimento temporale, come in Ieri Giovanni regalò una penna a Maria la rappresentazione sarebbe complicata dal fatto che l’indice temporale debba essere indicato in qualche modo. La soluzione più spesso praticata è quella di considerare anche il verbo, cioè il predicato, come un’istanza di una qualche azione o evento, cui riferire il tempo o qualunque altra determinazione riferita nella frase ad esso, ottenendo, così regala (Giovanni, y, Maria, e) penna (y) ieri (e) Altri tipi di elementi sarebbero trattabili solo con la logica del secondo ordine, impossibile pero' da manipolare in computazione. -----------------------------------------------------------------------Un trattato completo di logica è D.Gabbay, F.Guenther(eds.), Handbook of Philosophical Logic, Reidel, 1983 mentre per quanto concerne l'applicazione della logica al trattamento del linguaggio naturale sono rilevanti i due volumi L.T.F.Gamut, Logic, Language, and Meaning, Chicago University Press, 1991 – H.Kamp & U. Reyle, From Discourse to Logic, Kluwer, 1993. ------------------------------------------------------------------------ Logica e rappresentazione della conoscenza La rappresentazione della conoscenza è una disciplina che trae origine da alcuni problemi emersi nell’ambito della linguistica computazionale e ben evidenziati da T.Winograd. Successivamente è divenuta una tematica fondamentale connessa con l’adeguatezza espressiva dei linguaggi necessari a rappresentare una qualunque forma di conoscenza nell’ambito di sistemi informatici come i sistemi esperti e i sistemi di supporto alla decisione. L’interpretazione semantica di una frase può assumere due forme: - trasduzione diretta dal linguaggio naturale ad un’espressione di un qualunque linguaggio formale che ne permetta l’esecuzione immediata o mediata - integrazione del contenuto della frase, espresso in un linguaggio formale, nelle conoscenze generali dell’interlocutore/sistema informatico, espresse nello stesso linguaggio. Questo secondo approccio ha radici psicologiche e cognitive e ha dato luogo a diverse forme di rappresentazione. RETI SEMANTICHE Le reti semantiche sono state introdotte da Ross Quillian nel …..con l’intento di rappresentare gerarchie concettuali. Termini come “casa, catapecchia, palazzo, villa…” possono essere ricondotte tutte ad un iperonimo “edificio abitativo”, in forma grafica Edificio abitativo IS_A IS_A casa palazzo catapecchia villa Il connettore IS_A significa “is a (kind of)” ed indica che il concetto sottostante indica un sottoinsieme del concetto sovrastante. Secondo le teorie cognitive, questo modello realizza il modello di economia della memoria (semantica) umana, per cui le proprietà comuni a tutti gli iponimi vengono memorizzate in corrispondenza dall’iperonimo. I connettori IS_A veicolano una relazione di eredità, per cui gli iponimi ereditano le proprietà dell’iperonimo. Se si introduce, a questo punto, il sintagma la mia casa la casa questo identificherà un’istanza del concetto casa, per cui potrò rappresentarlo modificando il diagramma come segue Edificio abitativo IS_A IS_A casa catapecchia palazzo villa istanza X1 che indica che si è introdotta un’istanza x1 del concetto di “casa”. FRAME Il frame è un linguaggio di rappresentazione ideato da Minsky …. per render conto dei processi di apprendimento e per ovviare a certi inconvenienti delle reti semantiche. Il principale problema delle reti semantiche è la linea di eredità delle proprietà IS_A non può, così come è definita, render conto di eventuali deviazioni di certi oggetti dalle loro tipicità. Il caso più rappresentativo è quello del “pinguino” che, pur essendo un uccello, non vola. Se abbiamo definito il volo come proprietà principale dell’”essere uccello”, il pinguino dovrebbe ereditarla, cessando quindi di essere caratterizzato dal non volare; in alternativa non definiremo il volo come caratteristica degli uccelli, mancando così di compiere un’importante generalizzazione. I frame rappresentano concetti in termini di loro proprietà, espresse come liste associate al singolo nome di concetto. Ogni elemento della lista è detto slot e può contenere: - il nome del concetto che soddisfa quella proprietà; ad esempio, la “locomozione” tipica degli uccelli è il “volo” - l’iperonimo del concetto stesso; ad esempio, l’iperonimo di “uccello” è “animale” - una procedura di soddisfazione; ad esempio, “se non è il concetto default (volo), adotta il concetto specifico della categoria (nuoto per il pinguino)” - una procedura di apprendimento; se non c’è specificazione di proprietà, adotta quella delle istanze. Il nostro esempio risulterebbe descritto come segue: CONCEPT_NAME: edificio_abitativo HAS_PART: pareti, tetto HAS_GOAL: abitare (if_added: new) ……… che significa che un edificio abitativo ha delle pareti ed un tetto, serve per abitarci, ma se emerge qualche destinazione nuova (if_added), accettarla tra le proprietà come nuova. Quindi avremo CONCEPT_NAME: casa SUPERSET: edificio_abitativo che basta per poter asserire che una casa ha un tetto, delle pareti e serve per abitarci. Il processo di comprensione della frase come istanziazione non cambia rispetto alle reti semantiche. Avremo quindi “la casa……” INSTANCE_NAME : x1 ELEMENT_OF: casa L’interpretazione di una frase in termini di frame è facilitata dal fatto che il quadro della reggenza verbale (vedi Sintassi nel corso di Fondamenti di Linguistica) si rappresenta quasi direttamente in termini di frame. LINGUAGGI DI RAPPRESENTAZIONE DELLA CONOSCENZA Le capacità espressive acquisite con l’uso delle reti semantiche e con i frame hanno trovato una loro sistemazione organica nelle teorie della rappresentazione della conoscenza e, in particolare, nei linguaggi cosiddetti “ibridi”. Il principio basilare è che la nostra conoscenza si articola in due grandi categorie, conoscenze terminologiche e conoscenze asserzionali. Le prime si riferiscono alle conoscenze generiche sul mondo, mentre le seconde si riferiscono all’interpretazione delle singole asserzioni (frasi). Sono conoscenze generiche, o terminologiche, l’affermazione del fatto che gli uccelli hanno penne, due zampe, ali, che in genere volano, a meno che non si tratti di pinguini, che, invece, camminano e nuotano. Sono conoscenze asserzionali l’affermazione del fatto che Twitty è un uccellino, che sa volare ma è spesso insidiato da gatto Silvestro. La base di rappresentazione di tutti questi fatti è dato dalla logica del primo ordine, mentre i meccanismi di ragionamento sono diversi per la conoscenza terminologica e quella asserzionale. Così possiamo rappresentare il grafo del nostro esempio come isa(casa,edifico_abitativo) isa(villa,edificio_abiativo) …. e inoltre has_part(uccello, ali) has_part(uccello,zampe) has_part(X,ali) vola(X) “avere le ali implica volare” (il che non sempre è vero) Il fatto “Twitty è un uccellino che viene sempre inseguito da un gatto che si chiama Silvestro”, si può tradurre come instance (uccello, Twitty) insegue(twitty, silvestro) gatto(silvestro) comporta da un lato l’acquisizione di due fatti asserzionali, ma anche la capacità di derivare terminologicamente che Twitty ha ali e zampe. Dunque un sistema di questo tipo richiede due diversi motori inferenziali, uno di tipo terminologico, capace di derivare fatti ignoti per istanze che vengono introdotte asserzionalmente, ed uno di tipo asserzionale. L’inferenza di tipo asserzionale permette di rispondere a domande del tipo “chi insegue Twitty?”. In questo caso si procede all’incirca come nel caso del Prolog. Infatti la domanda posta può essere tradotta in una forma Prolog ?-insegue(twitty,X). Che provoca una ricerca nel data-base di una formula che corrisponda. Nel nostro caso la formula è insegue(twitty,silvestro), che assegna ad X il valore =silvestro. Se però chiedo “Può volare via Twitty?”, la domanda può essere resa come ?- vola(twitty). La cui ricerca nel data-base provoca un fallimento (il predicato non è presente) e un passaggio alla parte terminologica, sapendo che Twitty è un uccellino (instance(uccello, twitty)). A questo punto si ricercano le proprietà di uccello, cioè che ha ali e zampe. Posso quindi costruire l’asserzione has_part(twitty, ali) (X=Twitty), da cui si deriva, per l’implicazione terminologica, vola(twitty) (sempre X = Twitty). I linguaggi di rappresentazione della conoscenza sono stati utilizzati all’inizio per rappresentare la semantica del linguaggio naturale, ma oggi hanno una più vasta utilizzazione nei sistemi di ragionamento automatico e supporto alle decisioni.