Linguagem Natural Computacional

Propaganda
INTELIGÊNCIA ARTIFICIAL
Capítulo 5
Linguagem Natural Computacional
MIEIC/ Linguagem Natural Computacional
Eugénio Oliveira / FEUP
Linguagem Natural Computacional
LINGUAGEM NATURAL
(Aproximação Computacional)
O quê ?
Compreensão de frases isoladas
Compreensão de texto (Ex:polaridade da opinião)
Geração de texto (Ex: construção de histórias)
Máquinas tradutoras
“Text Mining”
Aplicações mais Comuns
Interface para Q.&A. Systems
Acesso a Base de Dados
Sistemas Periciais
MIEIC/ Linguagem Natural Computacional
Page 1
Eugénio Oliveira / FEUP
Linguagem Natural Computacional
Processo:
Transformação
Representação
em LN
Representação
executável
1- Aproximação Estatística
2- Aproximação Linguística
ANÁLISE SINTÁTICA
Programa analisador faz corresponder a cada frase uma árvore de
interpretação de acordo com uma gramática definida.
Dificuldades
A - Complexidade da representação das frases
B - Tipo de mapeamento das frases em estruturas computáveis
C - Nível de interacção entre os componentes da
representação Fonte
Eugénio Oliveira / FEUP
MIEIC/ Linguagem Natural Computacional
Representação
A -Complexidade da Representação
Análise Superficial ex: ELIZA
Grau de dificuldade
Semântica restrita ex: SHRDLU
Compreensão profunda ex: CHAT-80
B -Tipo de mapeamento
1 --> 1 A:=B+C*D
:=
A
+
B
*
C
N1 ou
1 N
-
D
Diga-me tudo sobre a última eleição presidencial.
Quero conhecer todos os acontecimentos relacionados com a
última eleição do presidente.
(palavras chave: eleição presidente)
MIEIC/ Linguagem Natural Computacional
Page 2
Eugénio Oliveira / FEUP
Eliza
A Sample Dialogue with ELIZA
USER: Men are all alike.
ELIZA: In what way?
USER: They’re always bugging us about something or other.
ELIZA: Can you think of a specific example?
USER: Well, my boyfriend made me come here.
ELIZA: Your boyfriend made you come here.
USER: He says I’m depressed much of the time.
ELIZA: I am sorry to hear you are depressed.
USER: It’s true, I am unhappy.
ELIZA: Do you think coming here will help you not to be unhappy?
USER: I need some help; that much seems certain.
ELIZA: What would it mean to you if you got some help?
USER: Perhaps I could learn to get along with my mother.
ELIZA: Tell me more about your family.
Eugénio Oliveira / FEUP
MIEIC/ Linguagem Natural Computacional
•
•
•
•
•
•
•
•
•
•
•
•
•
•
lSHRDLU
•
•
•
•
•
•
•
•
•
•
.
Here is an extract from a famous demonstration of SHRDLU:
Person: PICK UP A BIG RED BLOCK.
Computer: OK.
Person: GRASP THE PYRAMID.
Computer: I DON'T UNDERSTAND WHICH PYRAMID YOU MEAN.
Person (changing their mind): FIND A BLOCK WHICH IS TALLER THAN THE
ONE YOU ARE HOLDING AND PUT IT INTO THE BOX.
Computer: BY "IT", I ASSUME YOU MEAN THE BLOCK WHICH IS TALLER
THAN THE ONE I AM HOLDING.
Computer: OK.
Person: WHAT DOES THE BOX CONTAIN? Computer: THE BLUE PYRAMID
AND THE BLUE BLOCK.
Person: WHAT IS THE PYRAMID SUPPORTED BY?
Computer: THE BOX.
MIEIC/ Linguagem Natural Computacional
Page 3
Eugénio Oliveira / FEUP
lSHRDLU
• Person: HOW MANY BLOCKS ARE NOT IN THE BOX?
• Computer: FOUR OF THEM.
• Person: IS AT LEAST ONE OF THEM NARROWER THAN THE ONE WHICH I
TOLD YOU TO PICK UP?
• Computer: YES, THE RED CUBE.
• etc.
MIEIC/ Linguagem Natural Computacional
Eugénio Oliveira / FEUP
CHAT-80
•
•
•
•
•
•
•
•
•
•
Some yes or no queries
Does America contain New_York?
Does Mexico border the United_States?
Is the population of China greater than 200 million?
Does the population of China exceed 1000 million?
Is the population of China 840 million?
Does the population of China exceed the population of India?
Is Spain bordered by the Pacific?
Does the Atlantic border Spain?
Is the Rhine in Switzerland?
Is the United_Kingdom in Europe?
MIEIC/ Linguagem Natural Computacional
Page 4
Eugénio Oliveira / FEUP
CHAT-80
Some more detailed queries
What rivers are there?
Does Afghanistan border China?
What is the capital of Upper_Volta?
Where is the largest country?
Which countries are European?
Which country's capital is London?
Which is the largest african country?
How large is the smallest american country?
What is the ocean that borders African countries and that borders Asian countries?
What are the capitals of the countries bordering the Baltic?
Which countries are bordered by two seas?
How many countries does the Danube flow through?
What is the total area of countries south of the Equator and not in Australasia?
•
•
•
•
•
•
•
•
•
•
•
•
•
MIEIC/ Linguagem Natural Computacional
Eugénio Oliveira / FEUP
CHAT-80
•
•
•
•
•
•
•
•
•
•
What is the average area of the countries in each continent?
Is there more than one country in each continent?
Is there some ocean that does not border any country?
What are the countries from which a river flows into the Black_Sea?
What are the continents no country in which contains more than two cities whose
population exceeds 1 million?
Which country bordering the Mediterranean borders a country that is bordered by a
country whose population exceeds the population of India?
Which countries have a population exceeding 10 million?
Which countries with a population exceeding 10 million border the Atlantic?
What percentage of countries border each ocean?
What countries are there in Europe?
MIEIC/ Linguagem Natural Computacional
Page 5
Eugénio Oliveira / FEUP
Representação
C- Interacção entre componentes na Representação da Linguagem Fonte:
S
SN
S
SN
SV
Ana
Ana
SV
V
viu
SN
Ar
o
SP
N
SP
esquilo
V
viu
com
um telescópio
SN
Ar
o
N
esquilo
no parque
SP
no parque com
uma estátua
MIEIC/ Linguagem Natural Computacional
Eugénio Oliveira / FEUP
Processamento
Processamento de Linguagem Natural Computacional:
1ª Etapa: definição do Léxico
Lista das Palavras do vocabulário agrupadas em categorias:
Nomes, Pronomes denotando objectos
Verbos denotando eventos
Adjectivos para modificar Nomes
Advérbios modificando Verbos
Artigos, Preposições, Conjunções
2ª Etapa: Combinação das Palavras em Frases
Análise Sintáctica usando algoritmos de Análise (parsing) e
recuperando a estrutura da frase dada uma gramática.
MIEIC/ Linguagem Natural Computacional
Page 6
Eugénio Oliveira / FEUP
Processamento
Compreensão de Frases isoladas
0) Análise lexicográfica
i) Sintaxe ii) Semântica iii) Pragmática
i) transformação da frase numa estrutura de relacionamento entre as palavras
ii) mapear a estrutura nos objectos do domínio e nos procedimentos requeridos
iii) inferência contextual ex: tem horas?
Identificação de Padrões
ex: ELIZA (programa simulando um Psiquiatra)
frases por defeito quando não entende a anterior
ex: ("Como?"; "Porquê?"; "Fala-me mais disso")
usa Esqueletos de frases com variáveis preenchidas com palavras da frase
anterior
ex:
P: "o meu livro é bom".
D: "porquê o seu livro é bom?")
Não há compreensão mas mapeamento directo
Eugénio Oliveira / FEUP
MIEIC/ Linguagem Natural Computacional
Processamento
PROCESSO DA COMPREENSÃO DA LINGUAGEM NATURAL
FRASE
LISTA DE PALAVRAS
Reconhece PALAVRAS
DICIONARIO
ANÁLISE
LEXICAL
categorias
morfológicas
ANÁLISE
SINTÁTICA
rejeição
REGRAS GRAMATICAIS
rejeição
ANÁLISE
SEMÂNTICA
FOCALIZAÇÃO (quantificadores)
conhecimento
rejeição
de senso comum
EXPRESSÃO LÓGICA
EXECUÇÃO
BASE DE DADOS
RESPOSTA
MIEIC/ Linguagem Natural Computacional
Page 7
Eugénio Oliveira / FEUP
Gramáticas
Gramáticas Livres de Contexto:
Cada regra gramatical BNF só tem um símbolo não terminal do lado esquerdo, implicando
que a expansão desse não terminal não pode ser influenciado por quaisquer símbolos que
lhe estejam adjacentes. Mas tal não acontece com as gramáticas das Linguagens
Naturais. Daí que precisemos de mais Regras para a análise.
Analisador Sintático implemanta a Gramática com a BNF:
MAIÚSCULAS = símbolos não terminais;
F SN SV
minúsculas = símbolos terminais
SN
a SN1
SN
SN SN1
SN1
SN1 FADJ N
FADJ [ ] | ADJ FADJ
N
SV V
SV V SN
pedro
N pedro | rapaz | bola
ADJ pequeno | grande
V chuta | corre
Mapeamento de frase correcta em uma estrutura
MIEIC/ Linguagem Natural Computacional
F
SV
V
chuta
SN
a
SN1
FADJ
N
ADJ
bola
pequena
Eugénio Oliveira / FEUP
Gramáticas
ANÁLISE SEMÂNTICA
Programas para extraír significado da estrutura computacional obtida pelo “Parser”.
Aproximações simplificadas:
Gramáticas Semânticas:
Combinam nas mesmas Regras Gramaticais
Conhecimento sintático e Conhecimento semântico
(i.e. o significado das palavras)
Gramáticas de Caso:
Aproveitam a funcionalidade do reconhecimento de “casos”
em certas línguas naturais
MIEIC/ Linguagem Natural Computacional
Page 8
Eugénio Oliveira / FEUP
Gramáticas
ANÁLISE SEMÂNTICA
Gramáticas SEMÂNTICAS: combinam nas regras gramaticais,
conhecimento sintático e conhecimento semântico (o significado das palavras)
ex: sistema LADDER que permite acesso a uma Base de Dados sobre a Marinha
LADDER
<FRASE> --> Qual é <PROPRIEDADE> do <NAVIO>?
<FRASE> --> Quem é <AGENTE> do <NAVIO>?
...
<PROPRIEDADE> --> o <PROP> | a <PROP>
<PROP> --> comprimento | tipo | largura | tonelagem
<AGENTE> --> o <AG> | <AG>
<AG> --> comandante | imediato | construtor | dono . . .
Vantagens deste processo restrito de interpretação de Linguagem Natural para
aplicações simples:
• feita a interpretação, o resultado pode ser usado sem mais processamento
• as ambiguidades sintáticas desaparecem por não fazerem sentido
semanticamente
Inconveniente: poderão ser necessárias muitíssimas regras, o que torna a
interpretação demorada.
MIEIC/ Linguagem Natural Computacional
Eugénio Oliveira / FEUP
Gramáticas
Gramáticas de “Casos” (Case Grammars)
As regras gramaticais descrevem a sintaxe da Linguagem mas as
Estruturas entretanto criadas correspondem a relações semânticas
Casos:
ao Verbo estão associadas Regras que são relevantes para a interpretação
Exs: (um Verbo terá associados)
Agente (A)
Instrumento (I)
Dativo (D) (o que é afectado pela Acção)
Objecto (O)
... ... ...
MIEIC/ Linguagem Natural Computacional
Page 9
Eugénio Oliveira / FEUP
Gramáticas
Duas Frases com a mesma semântica: 1) “Eva joga a bola” 2) A bola é jogada pela Eva
Árvores sintácticas respectivas:
F
SN
Eva
F
SV
V
joga
Dificuldade:
SN
SN
SV
Ar
Ar
N
a
bola
a
N
V
bola
SP
é jogada
P
pela
N
Eva
Estruturas sintácticas diferentes para o mesmo valor semântico é
inconveniente
Eugénio Oliveira / FEUP
MIEIC/ Linguagem Natural Computacional
Gramáticas
-
Em ambos os casos a tradução (interpretação) na Gramática de Casos é:
(jogar(Agente(Eva))
Sujeito é Agente
(Dativo(bola)) ).
-
Sejam agora as duas frases: 1) a mãe cozinhou por 3 horas; 2) a galinha cozinhou por 3 horas
1)
(cozinhou(Agente(Mãe))
(tempo(3horas)) ).
Sujeito é Agente
F
Ar
SN
N
V
SV
a
mãe
cozinhou
SP
P
por
1)
F
Ar
SN
N
a
galinha
Qt
N
3
horas
cozinhou(Objecto(galinha)) Sujeito não é Agente mas Objecto!
(tempo(3 horas)) ).
SV
V
SP
cozinhou P Qt
N
V: conhecido o Verbo conhecemos os casos
por
3
horas
D: A semântica não segue a sintaxe
MIEIC/ Linguagem Natural Computacional
Page 10
Eugénio Oliveira / FEUP
Gramáticas
Novas abordagens ao Processamento Computacional da LINGUAGEM NATURAL
•
BNF usa “strings” sem atender aos seus significados.
•
É estritamente Livre do Contexto
•
É necessário Formalismo que também atenda ao significado das “strings” e que
descreva Gramáticas Sensíveis ao Contexto
•
Usar Lógica de 1ª Ordem para representar e manipular “strings” e seu
SIGNIFICADO
MIEIC/ Linguagem Natural Computacional
Eugénio Oliveira / FEUP
Gramáticas
Símbolos Não terminais tornam-se Predicados de um Argumento. Serão V ou F
EX:
BNF
F SN SV
Nbola|…
LÓGICA DE 1ª ORDEM
SN(s1) Λ SV(s2) F(append(s1,s2))
(s=“bola” V … V …) N(s)
Resulta uma GRAMÁTICA LÓGICA
•O Formalismo das DCGs (Definite Clause Grammars) representa
Gramáticas Lógicas restritas às Cláusulas Definidas.
•Mas a notação também é mais complicada.
MIEIC/ Linguagem Natural Computacional
Page 11
Eugénio Oliveira / FEUP
D C Gs
GRAMÁTICA DAS CLAUSULAS DEFINIDAS
(Definite Clause Grammars DCG's)
Seja o seguinte conjunto de regras gramaticais:
frase--> sintagma_nominal, sintagma_verbal.
sintagma_nominal --> artigo, nome.
sintagma_verbal --> verbo, sintagma_nominal.
sintagma_verbal --> verbo.
artigo --> [a].
--> equivale a 'toma a forma de'
artigo --> [o].
dentro de [ ] estão os
nome --> [bola].
símbolos terminais
nome --> [jogador].
verbo --> [chuta].
As regras verificam se uma frase pertence à Linguagem
Eugénio Oliveira / FEUP
MIEIC/ Linguagem Natural Computacional
D C Gs
Frase
sintagma_nominal
artigo
a
sintagma_verbal
nome
verbo
mulher
escreve
sintagma_nominal
artigo
a
MIEIC/ Linguagem Natural Computacional
Page 12
nome
carta
Eugénio Oliveira / FEUP
D C Gs
Escrita do Analizador em Prolog
Queremos verificar se a sequência de palavras X é uma frase da
Linguagem :
frase(X):- append(Y,Z,X), sintagma_nominal(Y),
sintagma_verbal (Z).
sintagma_nominal(X):- append(Y,Z,X), artigo(Y),
nome(Z).
sintagma_verbal(X):- append(Y,Z,X), verbo(Y),
sintagma_nominal (Z).
sintagma_verbal (X):- verbo (X).
artigo ([a]).
artigo ([o]).
nome ([carta]).
nome ([mulher]).
verbo ([escreve]).
verbo ([canta]).
MIEIC/ Linguagem Natural Computacional
Eugénio Oliveira / FEUP
D C Gs
Mas o programa é ineficiente!
ex: -frase ([a, mulher,escreve,a,carta]).
Este é o objectivo a provar.
O predicado "append" vai instanciar sucessivamente Y e Z devido ao
retrocesso ("backtracking") por falhanço.
Y= [ ] , Z=[a, mulher,escreve,a,carta]
Y= [a], Z=[mulher,escreve,a,carta]
Y=[a, mulher], Z=[escreve,a,carta]
etc....
MIEIC/ Linguagem Natural Computacional
Page 13
Eugénio Oliveira / FEUP
D C Gs
Passa a considerar-se em argumentos não só a lista das palavras
entradas como também a lista das palavras que
restam depois do
predicado '“consumir" o nº de palavras necessárias.
ex:sintagma_nominal( [a, mulher,escreve,a,carta],
[escreve,a,carta] ).
sintagma_nominal ( [a, carta, canta], [canta] ) .
então a nova definição para sintagma_nominal é:
sintagma_nominal (X,Y):- artigo (X,Z), nome (Z,Y).
MIEIC/ Linguagem Natural Computacional
Eugénio Oliveira / FEUP
D C Gs
Reconhecimento dos símbolos terminais
regras exprimindo o facto de um artigo poder estar à frente de um lista
de palavras:
artigo([o |X],X).
artigo ([a|X],X).
o que equivale a :
artigo --> [o].
artigo --> [a].
Na nova gramática a pergunta a fazer será:
? - frase ([a,mulher,escreve,a,carta],[]).
MIEIC/ Linguagem Natural Computacional
Page 14
Eugénio Oliveira / FEUP
D C Gs
Regras Gramaticais em PROLOG (DCGs):
Usa-se “-->" 'toma a forma de' que é um operador reconhecido pelo Prolog.
Esta notação é traduzida para as cláusulas Prolog anteriores.
ex: frase -->frase_nominal,frase_verbal. (argumentos desnecessários)!!!
frase_nominal --> artigo, nome.
frase_verbal --> verbo, frase_nominal.
artigo --> [o].
artigo --> [a].
nome --> [rapaz].
nome --> [rapariga].
Dicionário
nome --> [ana].
nome --> [bola].
nome --> [carta].
verbo --> [chuta].
verbo --> [escreve].
MIEIC/ Linguagem Natural Computacional
Eugénio Oliveira / FEUP
D C Gs
?- frase([a, ana, escreve, a, carta],[])
resposta-->
yes.
MAS. . .
?- frase ([a, carta, escreve, a, ana],[]).
resposta-->
yes
?- frase ([a, carta, escreve, o, ana], []).
resposta -->
yes .
Podemos juntar argumento extra!
ex: frase--> frase_singular.
frase--> frase_plural.
equivale a:
frase--> frase(X).
em que X indica singular ou plural
MIEIC/ Linguagem Natural Computacional
Page 15
Eugénio Oliveira / FEUP
D C Gs
Nova Gramática mais completa (concordância do número)
frase--> frase (X).
frase(X)-->sintagma_nominal(X), sintagma_verbal(X).
sintagma_nominal(x) --> quantificador(x), nome(X)
sintagma_verbal(X) --> verbo(X).
sintagma_verbal(X)-->verbo(X), sintagma_nominal(_).
nome (singular) --> [ana].
nome (singular) --> [carta].
nome (plural) --> [raparigas].
nome (plural) --> [cartas].
quantificador (singular) --> [o].
quantificador (plural) --> [os].
quantificador (plural) --> [as].
quantificador (singular) --> [a].
verbo (singular) --> [escreve].
verbo (singular) --> [joga].
verbo (plural) --> [escrevem].
verbo (plural) --> [jogam].
Eugénio Oliveira / FEUP
MIEIC/ Linguagem Natural Computacional
D C Gs
podem também introduzir-se argumentos para a concordância do
género (além do número).
Outro argumento "extra" muito importante será um contendo a
árvore de análise com a estrutura da frase.
ex:
A ana escreve a carta
gera a estrutura:
frase (
sintagma_nominal(
sintagma_verbal(
)
),
quantificador (a), nome (ana)
verbo (escreve),
sintagma_nominal(
)
)
MIEIC/ Linguagem Natural Computacional
Page 16
quantificador(a),
nome (carta)
Eugénio Oliveira / FEUP
D C Gs
Para meter em argumento esta estrutura,
estrutura além do número,
número as primeiras regras viriam:
frase(X, frase (SN, SV) )--> sintagma_nominal (X, SN),
sintagma_verbal (X, SV).
…
…
…
sintagma_verbal(X, sintagma_verbal(V))-->verbo(X,V).
sintagma_verbal (X, sintagma_verbal (V, SN,))-->
verbo(X,V), sintagma_nominal(_,SN).
nome (singular, nome(ana))-->[ana].
verbo (singular, verbo(escreve))--> [escreve].
Não esquecer que quando o Prolog interpreta "-->
-->" adiciona
automaticamente 2 argumentos mais.
frase(X, frase(SN,SV)) --> sint_nom(X,SN), sint_verb(X, SV).
Transforma-se em:
frase(X, frase(SN,SV), S0, S) :- sint_nom(X, SN, S0, S1), sint_verb(X, SV,S1,S).
Logo devemos escrever o objectivo :
?- f rase (X,Est
X,Est,, [a, ana
ana,, escreve, a, carta], [ ]).
MIEIC/ Linguagem Natural Computacional
Eugénio Oliveira / FEUP
D C Gs
•
“SobreSobre-Geração”
Geração” das Gramáticas
F
SN SV | …
SN
Ar N | N | Prn
SV
V SN
Prn “eu” | “tu” | …. | “me” | “te” | … | “mim” | “ti” |…
Pode reconhecer frases incorrectas (overgeneration) como respeitando aquela Gramática:
Ex: “tu lês livros” a Gramática reconhece e está correcto. Pronome é Sujeito ( Nominativo)
“me lês livros” a Gramática reconhece e está incorrecto. Pronome é Objecto (Acusativo)
Vamos AUMENTAR a Gramática (incluir parâmetros nos símbolos não-terminais):
1ª Hipótese: Maior número de Regras da Gramática:
F SNS SV | …
SNS Ar N | N | PrnS
SND Prno
PrnS “eu” | “tu” | ….
Prno | “me” | “te” | …
A Gramática G0 contendo:
MIEIC/ Linguagem Natural Computacional
Page 17
Eugénio Oliveira / FEUP
D C Gs
2ª Hipótese: Regras da Gramática aumentadas (Formalismo Lógico mas não prolog):
F SN (Sujeito) SV | …
Ex: “ela leu para ti”
SN(caso) Ar N | N | Prn(caso)
F
SV V SN(Objecto) | V SP
SN(Sujeito)
SV
SP Prep SN(Dativo)
Prn(Sujeito)
V
SP
Prn(Sujeito) “eu” | “tu” | …. ela
leu
Prep SN(Dativo)
Prn(Objecto) “me” | “te” | …
para
ti
Prn(Dativo) “mim” | “ti” | …
Prep “a” | “ante” | “após” |… |”para” |…
V “leu” | …
DCG
MIEIC/ Linguagem Natural Computacional
Eugénio Oliveira / FEUP
D C Gs
Podemos ainda fazer testes semânticos extra !
Se quisermos adicionar sub-objectivos às regras gramaticais em prolog mas que
não sejam "transformados", ou seja aos quais não vão ser
automaticamente adicionados 2 argumentos extra então usam-se as
"chavetas" { } (ajuda à sub-categorização dos verbos)
ex: verbo (s, N, verbo(rematar)) --> [remata], { humano (N) }. humano (jogador).
que é um teste semântico extra
... ... ...
ou uma táctica para adicionar novas palavras ao dicionário:
Se em vez de termos:
nome (singular, nome (bola)) --> [bola]. %(etc)
tivermos a regra mais geral:
nome (Num, nome (N)) --> [N], {é_ nome(N, Num)}.
podemos juntar:
é_nome (bola, singular).
é_nome (baliza, singular).
é_nome (bolas, plural). . . .
MIEIC/ Linguagem Natural Computacional
Page 18
Eugénio Oliveira / FEUP
D C Gs- Semântica
Semântica em aritmética é composicional, i.e., depende só das subfrases:
“10 + 10 “ significa resultado = 20.
• Mas uma frase em Linguagem Natural como: “na base 2, 10+10” já teria
outro significado, dado o contexto todo da frase.
• Por vezes nem só a interpretação semântica da frase, desambigúa.
EX: “Ela foi ao parque com a estátua…”
• A semântica de “maria gosta de cinema” é fácil de construir através
da composição semântica do predicado SV: gosta(X,cinema) e do
sujeito SN: (maria).
REGRA: Um SN com semântica Sujeito, seguido de SV com semântica
Relação, dá uma Frase cuja semântica resulta de aplicar rel a suj
F(rel(suj)) --> SN(suj) SV(rel) Ex: gosta(maria,cinema)
Eugénio Oliveira / FEUP
MIEIC/ Linguagem Natural Computacional
D C Gs- Semântica
F( Gosta(maria,cinema) )
F(rel(suj)) --> SN(suj) SV(rel)
SV(rel(suj)) --> V(rel) SP(suj)
SP(suj) -- > Pp SN(suj)
SN(suj) --> N(suj)
N(Maria) --> maria
V(x y Gosta(x,y))-->gosta
N(Cinema) --> cinema
Pp(de) -- > de
SN(maria)
SV(x Gosta(x,cinema))
SP(cinema)
N(maria)
V(x y Gosta(x,y))
Pp(de)
SN(cinema)
N(cinema)
de
de
maria
gosta
Os argumentos representam a semântica.
cinema
Aqui estamos a usar formalismos lógicos
Árvore de Análise sintática com interpretação semântica
mas não Prolog
Tempo
Ex: “eva gostou de adão” e “maria gosta de cinema”
V(x y e Gostar(x, y) Λ Tempo(e, Agora) ) --> gosta
V(x y e Gostar(x, y) Λ Tempo (e, Antes) ) --> gostou
MIEIC/ Linguagem Natural Computacional
Page 19
Eugénio Oliveira / FEUP
D C Gs
• Mas : “Todos os professores recebem salário”
Vp Professor(p) →∃ Salário(s) ∩∃ e ∈ Recebem(p,s)
∩ Tempo(Agora,e)
Representação:
Sintática : SN , SV
Semântica:
Todos os professores SN (Vp Professor(p)→ ...)
recebem salário SV (∃ Salário(s) ∩ ∃ e ∈ Recebem(...,s) ∩Tempo(Agora,e)
semântica de F é a de SN com SV inserido, o qual tem uma variável
do SN
MIEIC/ Linguagem Natural Computacional
Eugénio Oliveira / FEUP
D C Gs
Não serve aquela composição semântica rel(suj).
Talvez suj(rel)
É complicado porque a estrutura semântica aparece como diversa da
estrutura sintática.
Para evitar essa confusão criam-se formas intermédias (entre a
sintáxe e a semântica) de representação ditas quase-lógicas que
posteriormente são traduzidas para a lógica.
Ex:
SV(sem) - -> V(sem)
SV(rel(suj)) - -> SV(rel) SN(suj)
SV(sem1(sem2)) - -> SV(sem1) Adjectivo(sem2)
SV(sem1(sem2)) - -> SV(sem1) Preposição(sem2)
MIEIC/ Linguagem Natural Computacional
Page 20
Eugénio Oliveira / FEUP
D C Gs
Gramática com Semântica numa forma “quase-lógica”
F(rel(suj)) --> SN(suj) SV(rel)
F(conj(sem1,sem2)) --> F(sem1) Conjuntiva(conj) F(sem2)
SN(sem) --> Pronome(sem)
SN(sem) --> N(sem)
SN(x y sem(x)) --> Artigo(x) N(sem)
SN(x y suj Λ rel(x)) --> SN(x y suj) Pp(rel)
SN(x y suj Λ rel(x)) --> SN(x y suj) Relativo(rel)
SV(sem) - -> V(sem)
SV(rel(suj)) - -> SV(rel) SN(suj)
SV(sem1(sem2)) - -> SV(sem1) Adjectivo(sem2)
SV(sem1(sem2)) - -> SV(sem1) Preposição(sem2)
Relativo(sem) --> que SV(sem)
Pp(x rel(x,suj)) --> Preposição(rel) SN(suj)
Eugénio Oliveira / FEUP
MIEIC/ Linguagem Natural Computacional
D C Gs
Transformações Semânticas
Depois da compreensão sintáctica vem a execução que necessita da semântica
A Técnica 3BQ "three branched Quantifiers" foi desenvolvida por V. Dahl e
A. Colmerauer. (Quantificadores com 3 ramos)
fórmula lógica -->
Variável
quantificador
Sintagma Nominal
Sintagma Verbal
ex:O professor chumba os alunos que não aprendem
todo (X, e (aluno(X), not(aprende(X))
),
chumba(professor,
)
X)
variável
quantificador
sintagma nominal
MIEIC/ Linguagem Natural Computacional
Page 21
sintagma verbal
Eugénio Oliveira / FEUP
D C Gs
- Outra Técnica derivada:
DCW "Definite Closed-World Clauses"
D. Warren
F. Pereira
Faz-se a seguinte formalização (respostas a perguntas):
H ⇐ G1 & G2...
Literal (resposta) ⇐ condições
ex:Quais os oceanos que banham pelo menos 3 países europeus?
resposta(0) ⇐ oceano(O) & card(P: país (P) & europeu(P)
& banha (O,P)) > 2
definem-se operadores e predicados a serem utilizados do lado direito
da claúsula.
MIEIC/ Linguagem Natural Computacional
Eugénio Oliveira / FEUP
D C Gs
OPERADORES:
P&Q --> conjunção
existe(X,P) --> quantificador existencial
not (P) --> negação
setof(X,P,S)-->conjuntos dos X's tais que P é verdadeiro
findall/3
outros predicados "compostos":
todo(X, P => Q) = not (existe(X, P & not(Q)))
numero_de(X, P, N) = existe(S, setof(X,P,S) & card(S,N) & N>0)
("number of")
Cada determinante dá origem a um quantificador com uma variável
e 2 predicados relativos a essa variável:
Domínio (D) e Âmbito (A)
MIEIC/ Linguagem Natural Computacional
Page 22
Eugénio Oliveira / FEUP
D C Gs
- Exemplos:
- um, o, algum, nenhum --> existe (X, D, & A)
> algum professor é português
existe (X, professor (X), português (X)).
> Não há rios no deserto
not (existe(X, rio (X), em (X, deserto)))
.
- Todo, qualquer --> not (existe (X, D & not (A)))
> o homem habita todos os continentes
not (existe(X, continente(X), not(habita(homem,
.
X))))
> Quantos países exportam petróleo?
resposta (N): - numero_de (X, (país (X),
exportam (X, petróleo)),
N).
MIEIC/ Linguagem Natural Computacional
Eugénio Oliveira / FEUP
Aplicação
Da prática……
verifica_frase(frase(SN,SV)) -->
sintagma_nominal(SN,N,Sujeito),
%N é o número
sintagma_verbal(SV,N,Sujeito,Accao,Objecto),
{ concorda_frase(Accao,Sujeito,Objecto),nl }.
MIEIC/ Linguagem Natural Computacional
Page 23
Eugénio Oliveira / FEUP
Aplicação
INTERFACE com um SUBSUB-CONJUNTO DE LINGUAGEM
NATURAL (PORTUGUÊS)
ESTRUTURA DO PROGRAMA (
FRASE
gramport ) :
LISTA DAS
PALAVRAS
REGRAS
SINTÁTICAS
RESPOSTA
DICIONÁRIO
REGRAS
SEMÂNTICAS
BASE DE DADOS
MIEIC/ Linguagem Natural Computacional
Eugénio Oliveira / FEUP
Aplicação
Exemplos de predicados de um Programa (parcial) para análise de Frases de um
sub-conjunto do Português (Atenção: faltam muitas cláusulas)!!
frase --> sn_1(N), sv(_,N,N1,V), {write(concordo)}.
frase --> frase_int(PI), frase_perg(PI).
…
sn_1([N1]) --> frase_n_1(N1).
sn_1([N1|R]) --> frase_n_1(N1), [e], sn_1(R).
/* a eva mora no paraíso*/
/* Quem mora no paraíso*/
/* a eva….*/
/* a eva e o adão …*/
frase_n_1(N) --> artigo(N,A), nome_adj(N).
frase_n_1(N) --> artigo(N,A), nome_adj(N), relativo, sv([N],[N1],V),
{ analisa_af([N],[N1],V) }.
/* a eva que conhece o adão …*/
…
nome_adj(N) --> nome(N).
/* eva */
nome_adj(N) --> nome(N), adj(N,Adj).
/* mulher bonita */
MIEIC/ Linguagem Natural Computacional
Page 24
Eugénio Oliveira / FEUP
Aplicação
frase-_int(que) --> [que].
frase-_int(que) --> [o,que,é,que].
frase-_int(quais) --> [quais].
frase-_int(quantos) --> [quantos].
frase_int(quem) --> [quem].
frase_perg(PI) --> sv(…),…,
{analisa_int(V,N,L), resposta(L,PI)}.
/*quantos são os alunos*/
sv(L,N,N1,V) --> frase_verbo(L,N,N1,V). /*ex:N=eva, N1=adão, V=conhece */
sv(L,N,N1,V) --> frase_verbo(L1,N,N1,V), [e], /* Quem mora e */
sv(L2,N,N2,V1),
/* trabalha no porto */
{intersecta(L1,L2,L)}.
frase_verbo(L,N,N1,V) --> v_adv(L,N,N1,Adv,V), sn_2(N1),
{analisa_af(N,N1,V) ; write(“não concordo”)}.
frase_verbo(L,N,N1,V) --> ….
Eugénio Oliveira / FEUP
MIEIC/ Linguagem Natural Computacional
Aplicação
/* Esta parte do Programa é Prolog normal! Usa o operador ‘:-’ */
resposta(L,PI):- PI = = quantos,!, contar(L,0,Q), write(Q).
contar([],Q,Q).
contar([P|R],S,Q):- nonvar(P), NS is S+1, contar(R,NS,Q),!.
analisa_af(N,N1,_-_-mora):- vmora(N,N1,L).
/* verificação de afirmação de morar*/
vmora([],_,L).
vmora([_-_-X|R], _-_-Y, Z):- mora(X,Y), vmora(R,_-_-Y,[X|Z]).
mora(X,Y):- humano(X), local(Y), l_mora(X,Y).
l_mora(eva,paraíso).
l_mora(adão,paraíso).
analisa_int(_-_-V,_-_-X, L):- verifica_todos(V,X,L).
verifica_todos(sao,X,L):- setof(X1,ser(X1,X),L).
verifica_todos(mora,X,L):- setof(X1,l_mora(X1,X),L).
MIEIC/ Linguagem Natural Computacional
Page 25
% ser(rui,aluno).
Eugénio Oliveira / FEUP
Aplicação
/*EXTRACTO DO DICIONÁRIO */
artigo(m-s-N, m-s-o) --> [o].
pronome(m-s-N, m-s-este) --> [este].
adj(m-s-N, m-s-branco) --> [branco].
preposição(_-_-V, m-s-N, m-s-no) --> {local_no(N), lista_no(V)}, [no].
nome(m-s-paraíso) --> [paraíso].
verbo(I,N,Vb) --> [Vbs], {numero(N,Nu), l_verbos(Nu,Vb,Vbs)}.
Relativo --> [que].
lista_no(V):- (V= =mora; V= = moram).
l_verbos(p,_-_-ser, são).
l_verbos(s,_-_-morar, mora).
l_verbos(p,_-_-morar, moram).
MIEIC/ Linguagem Natural Computacional
Eugénio Oliveira / FEUP
Aplicação
/*Exemplos de Frases que sucedem (são compreendidas) */
/* na gramática GRAMPORT */
Quem mora em Lisboa? Quem mora no Porto? Quem conhece a Ana?
A Maria bebe chá.
A Maria que mora em Lisboa bebe chá.
O Rui mora em Liboa.
Quantos são os alimentos? Quais são os alimentos?
/*Exemplos de Frases que são detectadas como erradas*/
O Rui mora na Lisboa
Maria bebe a chá.
O navio bebe chá.
/* Não existindo na BD, falham*/
A maria bebe vodka.
MIEIC/ Linguagem Natural Computacional
Page 26
Eugénio Oliveira / FEUP
Download