no slide title - upeol/ia/1617/apontamentos/5_ln.pdftold you to pick up? • computer: yes, the red...

59
Eugénio Oliveira / FEUP MIEIC/ Linguagem Natural Computacional Capítulo 5 Linguagem Natural Computacional INTELIGÊNCIA ARTIFICIAL

Upload: haphuc

Post on 19-May-2018

216 views

Category:

Documents


2 download

TRANSCRIPT

Eugénio Oliveira / FEUP MIEIC/ Linguagem Natural Computacional

Capítulo 5

Linguagem Natural Computacional

INTELIGÊNCIA ARTIFICIAL

Eugénio Oliveira / FEUP MIEIC/ Linguagem Natural Computacional

Linguagem Natural Computacional

LINGUAGEM NATURAL

Aplicações mais Comuns

Interfaces (Base de Dados, Sistemas Periciais) Q&A.Systems – Extração de Informação Extrair e sumariar textos (notícias) da web Classificação de Texto (segundo tópicos) Recuparação de Informação (Docs) Tradução de textos

- -

-

O quê ? Compreensão de frases isoladas Compreensão simplificada de texto (Ex: polaridade da opinião) Geração de texto (Ex: construção de histórias) Máquinas tradutoras “Text Mining” (Extração de Conhecimento de textos)

(Aproximação Computacional)

-

-

Eugénio Oliveira / FEUP MIEIC/ Linguagem Natural Computacional

Transformação

Representação

em LN

Representação

executável

Processo:

Linguagem Natural Computacional

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 – Nível de Complexidade da representação das frases B - Tipo de mapeamento das frases em estruturas computáveis C - Nível de interação entre os componentes da representação Fonte

1- Aproximação baseada em Estatística 2- Aproximação baseada na Linguística

Aproximação 2:

Eugénio Oliveira / FEUP MIEIC/ Linguagem Natural Computacional

Representação

Grau de dificuldade

A - Complexidade da Representação Análise Superficial ex: ELIZA Semântica restrita ex: SHRDLU Compreensão profunda ex: CHAT-80

- 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)

N1 ou

1 N

1 --> 1 A:=B+C*D :=

A +

B *

C D

B - Tipo de mapeamento

Eugénio Oliveira / FEUP MIEIC/ Linguagem Natural Computacional

(Mau) Exemplo

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

Exemplo (específico)

SHRDLU

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.

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.

Eugénio Oliveira / FEUP MIEIC/ Linguagem Natural Computacional

Exemplo

CHAT-80

• 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?

• 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?

Eugénio Oliveira / FEUP MIEIC/ Linguagem Natural Computacional

Representação

S SN SV Ana V SN SP viu Ar N SP com um telescópio o esquilo no parque

S SN SV Ana V SN viu Ar N SP o esquilo no parque com uma estátua

C- Interacção entre componentes na Representação da Linguagem Fonte:

Ana viu o esquilo no parque com um telescópio

Ana viu o esquilo no parque com uma estátua

Eugénio Oliveira / FEUP MIEIC/ Linguagem Natural Computacional

Processamento de Linguagem Natural Computacional: 1ª Etapa: definição do Léxico Lista das Palavras do vocabulário agrupadas em categorias: Nomes, Pronomes denotando objetos Verbos denotando eventos, ações Adjetivos para modificar Nomes Advérbios modificando Verbos Artigos, Preposições, Conjunções

Processamento

2ª Etapa: Combinação das Palavras em Frases Análise Sintática usando algoritmos de Análise (parsing) e recuperando a estrutura da frase dada uma gramática.

Eugénio Oliveira / FEUP MIEIC/ Linguagem Natural Computacional

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 objetos 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

ANÁLISE

LEXICAL

ANÁLISE

SINTÁTICA

ANÁLISE

SEMÂNTICA

EXECUÇÃO

PROCESSO DA COMPREENSÃO DA LINGUAGEM NATURAL

REGRAS GRAMATICAIS

conhecimento

de senso comum

EXPRESSÃO LÓGICA

rejeição

LISTA DE PALAVRAS

Reconhece PALAVRAS

DICIONARIO

FRASE

categorias

morfológicas rejeição

rejeição

FOCALIZAÇÃO (quantificadores)

BASE DE DADOS

RESPOSTA

Eugénio Oliveira / FEUP MIEIC/ Linguagem Natural Computacional

Gramáticas Independentes de Contexto: Cada regra gramatical na BNF só tem um símbolo não terminal do lado esquerdo, implicando que a expansão desse não terminal não possa ser influenciado por quaisquer símbolos que lhe estejam adjacentes. Mas tal não acontece com as gramáticas mais complexas das Linguagens Naturais. Daí que precisemos de mais Regras para a análise.

Gramáticas

Ex: SN :: A, N

Eugénio Oliveira / FEUP MIEIC/ Linguagem Natural Computacional

Gramáticas Independentes de Contexto:

F

SN SV

SN1 V SN

N chuta a SN1

pedro FADJ N

ADJ bola

pequena

Gramáticas

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 SN1 SN1 FADJ N FADJ [ ] | ADJ FADJ SV V SV V SN N pedro | rapaz | bola ADJ pequena | grande V chuta | corre Mapeamento de frase correcta em uma estrutura

Ex: “pedro chuta a pequena bola”

Eugénio Oliveira / FEUP MIEIC/ Linguagem Natural Computacional

Gramáticas

ANÁLISE SEMÂNTICA Programas para extraír significado da estrutura computacional obtida pelo “Parser”. Aproximações simplificadoras:

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

Eugénio Oliveira / FEUP MIEIC/ Linguagem Natural Computacional

Gramáticas

“ANÁLISE SEMÂNTICA” (cont.) 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 para o parser

semanticamente Inconveniente : poderão ser necessárias muitíssimas regras, o que torna a interpretação demorada.

Eugénio Oliveira / FEUP MIEIC/ Linguagem Natural Computacional

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 é afetado pela Ação) Objeto (O) ... ... ...

“ANÁLISE SEMÂNTICA” (cont.)

Permite solucionar alguns problemas

Eugénio Oliveira / FEUP MIEIC/ Linguagem Natural Computacional

Dificuldade: Estruturas sintáticas diferentes para o mesmo valor semântico é inconveniente

Duas Frases com a mesma semântica: 1) “Eva joga a bola” 2) A bola é jogada pela Eva

Árvores sintáticas respectivas: F F

SN SV SN SV

Eva V SN Ar N V SP

joga Ar N a bola é jogada P N

a bola pela Eva

Gramáticas

Eugénio Oliveira / FEUP MIEIC/ Linguagem Natural Computacional

1) (cozinhou(Agente(Mãe)) Sujeito é Agente F

(tempo(3horas)) ).

SN SV

Ar N V SP

a mãe cozinhou P Qt N

por 3 horas 2) F cozinhou(Objeto(galinha)) Sujeito não é Agente mas Objeto!

(tempo(3 horas)) ).

SN SV

Ar N V SP

a galinha cozinhou P Qt N V: conhecido o Verbo conhecemos os casos

por 3 horas D: A semântica não segue a sintaxe

Gramáticas

- Em ambos os casos a tradução (interpretação) na Gramática de Casos é: (jogar(Agente(Eva)) Sujeito da frase é Agente (Dativo(bola)) ). - Sejam agora as duas frases: 1) a mãe cozinhou por 3 horas; 2) a galinha cozinhou por 3 horas

Eugénio Oliveira / FEUP MIEIC/ Linguagem Natural Computacional

abordagens mais sofisticadas ao Processamento Computacional da LINGUAGEM NATURAL

também baseadas na linguística • BNF usa “strings” sem atender aos seus significados.

• É estritamente Independente do Contexto

Gramáticas

• É 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

Eugénio Oliveira / FEUP MIEIC/ Linguagem Natural Computacional

Símbolos Não terminais tornam-se Predicados de um Argumento. Serão V ou F EX: BNF LÓGICA DE 1ª ORDEM F SN SV SN(s1) L SV(s2) F(append(s1,s2)) SN Qt N Qt(s1) N(s2) SN(append(s1,s2)) Nbola|… (s=“bola” V … V …) N(s)

Gramáticas

Resulta uma GRAMÁTICA LÓGICA •O Formalismo das DCGs (Definite Clause Grammars) representa Gramáticas Lógicas mas restritas às Cláusulas Definidas. •Mas a notação também é mais complicada.

Eugénio Oliveira / FEUP MIEIC/ Linguagem Natural Computacional

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.

--> equivale a 'toma a forma de' dentro de [ ] estão os símbolos terminais

sintagma_nominal --> artigo, nome. sintagma_verbal --> verbo, sintagma_nominal. sintagma_verbal --> verbo. artigo --> [a]. artigo --> [o]. nome --> [carta]. nome --> [mulher]. verbo --> [escreve]. As regras verificam se uma frase pertence à Linguagem

Eugénio Oliveira / FEUP MIEIC/ Linguagem Natural Computacional

D C Gs

Frase

sintagma_nominal sintagma_verbal

artigo nome verbo sintagma_nominal

a mulher escreve artigo nome

a carta

Frase-->sintagma_nominal, sintagma_verbal. sintagma_nominal --> artigo, nome. sintagma_verbal --> verbo, sintagma_nominal. sintagma_verbal --> verbo. artigo --> [a]. artigo --> [o]. nome --> [carta]. nome --> [mulher]. verbo --> [escreve].

Eugénio Oliveira / FEUP MIEIC/ Linguagem Natural Computacional

D C Gs

artigo ([a]). artigo ([o]). nome ([carta]). nome ([mulher]). verbo ([escreve]). verbo ([canta]).

Escrita do Analizador em Prolog (puro)

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).

Eugénio Oliveira / FEUP MIEIC/ Linguagem Natural Computacional

D C Gs

Mas o programa é ineficiente!

ex: - frase ([a, mulher,escreve,a,carta]).

Este é o objetivo 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....

Eugénio Oliveira / FEUP MIEIC/ Linguagem Natural Computacional

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 respetivo 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).

Melhoramento nas Regras da Gramática:

input

output

Eugénio Oliveira / FEUP MIEIC/ Linguagem Natural Computacional

D C Gs

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],[]).

Reconhecimento dos símbolos terminais

Eugénio Oliveira / FEUP MIEIC/ Linguagem Natural Computacional

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 i/o 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].

Eugénio Oliveira / FEUP MIEIC/ Linguagem Natural Computacional

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

A Gramática anterior pode ser chamada com objetivos do tipo:

Eugénio Oliveira / FEUP MIEIC/ Linguagem Natural Computacional

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(

quantificador (a), nome (ana) ) ,

sintagma_verbal( verbo (escreve), sintagma_nominal( quantificador(a), nome (carta) ) )

)

Eugénio Oliveira / FEUP MIEIC/ Linguagem Natural Computacional

D C Gs

Para meter em argumento esta estrutura, além do 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(Est1,Est2))--> sint_nom (X,Est1), sint_verb (X, Est2) Transforma-se em:

frase(X, frase(Est1,Est2),S0, S) :- sint_nom(X, Est1,S0, S1), sint_verb(X,Est2,S1,S).

Logo devemos escrever o objetivo : ?- frase (X,Est, [a, ana, escreve, a, carta], [ ] ).

Eugénio Oliveira / FEUP MIEIC/ Linguagem Natural Computacional

“Sobre-Geração” das Gramáticas (Independentes do Contexto)

A Gramática G0 contendo: 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)

“te lês livros” a Gramática reconhece e está incorrecto. Pronome é Objeto (Acusativo)

D C Gs

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” | …

Eugénio Oliveira / FEUP MIEIC/ Linguagem Natural Computacional

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)

SV V SN(Objeto) | V SP

SP Prep SN(Dativo)

D C Gs

DCG

SN(Sujeito)

Ela

V Prn(Sujeito)

SV

SP

ti

para

leu SN (Dativo) Prep

F

Prn(Dativo)

Prn(Sujeito) “eu” | “tu” | ….

Prn(Objeto) “me” | “te” | …

Prn(Dativo) “mim” | “ti” | …

Prep “a” | “ante” | “após” |… |”para” |…

V “leu” | …

Eugénio Oliveira / FEUP MIEIC/ Linguagem Natural Computacional

D C Gs

Podemos ainda fazer testes semânticos extra ! Se quisermos adicionar sub-objetivos à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)

Novos aumentos às clausulas da Gramática

ex: verbo (s, N, verbo(rematar)) --> [remata], { humano (N) }. humano (jogador). que é um teste semântico extra ... ... ...

Eugénio Oliveira / FEUP MIEIC/ Linguagem Natural Computacional

D C Gs

... ... ... Ex: uma tática para adicionar novas palavras ao dicionário: Se em vez de termos múltiplas cláusulas do tipo: nome (singular, feminino, nome (bola)) --> [bola]. %(etc) tivermos a regra mais geral: nome (Num, Gen, nome (N)) --> [N], {é_ nome(N, Num, Gen)}. podemos juntar: é_nome (bola, singular, f). é_nome (arbitro,singular,m). é_nome (balizas, plural,f). . . .

Novos aumentos às clausulas da Gramática

Eugénio Oliveira / FEUP MIEIC/ Linguagem Natural Computacional

D C Gs- Semântica

Semântica em aritmética é composicional, i.e., depende só das subfrases: “10 + 10 “ significa resultado = 20. Semântica de 10, de + e de novo de 10 • Mas uma frase em Linguagem Natural como: Ex: “na base 2, 10+10” já teria outro significado, dado o contexto todo da frase. • E, por vezes, nem mesmo a interpretação semântica da frase, desambigúa. Ex: “Ela foi ao parque com a estátua…”

• Como representar a semântica das frases?

Eugénio Oliveira / FEUP MIEIC/ Linguagem Natural Computacional

D C Gs- Semântica

• A semântica de Ex: “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: Em uma Frase, 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(rel(suj)) -->SN(suj) SV(rel) SV(rel(suj)) --> V(rel) SP(suj) SN(suj) --> N(suj) SP(suj)-- > Pp SN(suj) N(Maria)--> maria N(Cinema)--> cinema V(x y Gostar(x,y))-->gosta Pp(De)-- > de

Os argumentos representam a semântica.

Dificuldades: representação doTempo Ex: “eva gostou de adão” e “maria gosta de cinema” (x y t Gostar(x, y) L Tempo(t, Agora) ) --> gosta (x y t Gostar(x, y) L Tempo (t, Antes) ) --> gostou

F( Gostar(Maria,Cinema) )

SN(Maria)

N(Maria)

maria gosta cinema

V(x y Gostar(x,y))

SV(x Gostar(x,Cinema))

SN(Cinema)

N(Cinema)

Árvore de Análise sintática com interpretação semântica

Pp(De)

de

SP(Cinema)

Eugénio Oliveira / FEUP MIEIC/ Linguagem Natural Computacional

• Dificuldade: Quantificação (ambiguidade)

• Ex, do “mundo do monstro” : “Todos os Agentes sentem uma brisa”

• H1: Para todo o Agente há uma brisa que é sentida pelo Agente

a Agentes b Brisas t : Sentem(a,b) Tempo (t,Agora)

D C Gs

• H2: “Existe uma mesma Brisa que todos os Agentes sentem”

b Brisas : a Agentes t : Sentem(a,b) Tempo (t,Agora)

Eugénio Oliveira / FEUP MIEIC/ Linguagem Natural Computacional

• Dificuldade : “Todos os professores recebem salário”

p Professor(p) Salário(s) t Recebem(p,s)

Tempo(Agora,t)

Representação:

Sintática : SN , SV

Semântica: Todos os professores SN ( p Professor(p)...)

recebem salário SV ( Salário(s) t Recebem(...,s) Tempo(Agora,t)

D C Gs

semântica de F é a de SN com SV inserido, o qual tem uma variável

do SN

“maria gosta de cinema” F(rel(suj)) --> SN(suj) SV(rel) Não se aplica

Eugénio Oliveira / FEUP MIEIC/ Linguagem Natural Computacional

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 ou em programa.

Usam regras de preferência sobre os quantificadores

D C Gs

Ex de SV: SV(sem) - -> V(sem)

SV(rel(suj)) - -> SV(rel) SN(suj)

SV(sem1(sem2)) - -> SV(sem1) Adjetivo(sem2)

SV(sem1(sem2)) - -> SV(sem1) Preposição(sem2)

Eugénio Oliveira / FEUP MIEIC/ Linguagem Natural Computacional

Relativo(sem) que SV(sem)

Pp(x rel(x,suj))Preposição(rel) SN(suj)

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(qx sem(x))Artigo(qx) N(sem)

SN(qx suj L rel(x)) SN(qx suj) Pp(rel)

SN(qx suj L rel(x)) SN(qx suj) Relativo(rel)

SV(sem) - -> V(sem)

SV(rel(suj)) - -> SV(rel) SN(suj)

SV(sem1(sem2)) - -> SV(sem1) Adjetivo(sem2)

SV(sem1(sem2)) - -> SV(sem1) Preposição(sem2)

Eugénio Oliveira / FEUP MIEIC/ Linguagem Natural Computacional

ex: O professor chumba os alunos que não aprendem todo (X, e (aluno(X), not(aprende(X)) ), chumba(professor, X) )

variável sintagma nominal sintagma verbal quantificador

D C Gs

Transformações Semânticas

Depois da compreensão sintática 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 --> quantificador

Variável Sintagma Nominal Sintagma Verbal

Eugénio Oliveira / FEUP MIEIC/ Linguagem Natural Computacional

D C Gs

ex: Quais os oceanos que banham pelo menos 3 países europeus? resposta(O) 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.

- Outra Técnica derivada: D. Warren DCW "Definite Closed-World Clauses" F. Pereira

Faz-se a seguinte formalização (respostas a perguntas): H G 1 & G 2 ...

Literal (resposta) condições

Eugénio Oliveira / FEUP MIEIC/ Linguagem Natural Computacional

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)

Eugénio Oliveira / FEUP MIEIC/ Linguagem Natural Computacional

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).

determinante quant(var, dom, amb)

Eugénio Oliveira / FEUP MIEIC/ Linguagem Natural Computacional

Da prática … da programação … verifica_frase(frase(SN,SV))--> sintagma_nominal(SN,Nu,Sujeito), %Nu é o número sintagma_verbal(SV,Nu,Sujeito,Acao,Objeto), { concorda_frase(Acao,Sujeito,Objeto),nl }.

Aplicação

Prolog

Eugénio Oliveira / FEUP MIEIC/ Linguagem Natural Computacional

Aplicação

INTERFACE com um SUB-CONJUNTO DE LINGUAGEM

NATURAL (PORTUGUÊS)

ESTRUTURA DO PROGRAMA ( gramport ) :

FRASE LISTA DAS

PALAVRAS

REGRAS

SINTÁTICAS RESPOSTA

DICIONÁRIO

REGRAS

SEMÂNTICAS

BASE DE DADOS

Eugénio Oliveira / FEUP MIEIC/ Linguagem Natural Computacional

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)}. /* a eva mora no paraíso*/ frase--> frase_int(PI), frase_perg(PI). /* Quem mora no paraíso*/ …

Aplicação

… nome_adj(N)-->nome(N). /* eva */ nome_adj(N)--> nome(N), adj(N,Adj). /* mulher bonita */

sn_1([N1])--> frase_n_1(N1). /* a eva….*/ sn_1([N1|R])--> frase_n_1(N1), [e], sn_1(R). /* a eva e o adão …*/

frase_n_1(N)--> artigo(N,A), nome_adj(N). /* a eva linda….*/ 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 …*/

Eugénio Oliveira / FEUP MIEIC/ Linguagem Natural Computacional

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)}. /*quem mora no paraíso */ /* quantos são os alunos*/

Aplicação

sv(L,N,N1,V)--> frase_verbo(L,N,N1,V). /*ex:N=eva, N1=adão, V=conhece ou mora*/

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

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). % ser(rui,aluno). verifica_todos(mora,X,L):- setof(X1,l_mora(X1,X),L).

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*/

Eugénio Oliveira / FEUP MIEIC/ Linguagem Natural Computacional

/*EXTRATO 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]. /* no Porto*/ 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).

Aplicação

Eugénio Oliveira / FEUP MIEIC/ Linguagem Natural Computacional

/*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?

Aplicação

/*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.

Eugénio Oliveira / FEUP MIEIC/ Linguagem Natural Computacional

• Extracção de padrões • Extracção de entidades • Categorização de texto • Clustering de texto • Análise de sentimento • Sumarização de texto • Visualização de informação • …

Abordagem estatística

Aproximação “Linguística Estatística”- TEXT MINING

Técnicas aplicadas para:

Eugénio Oliveira / FEUP MIEIC/ Linguagem Natural Computacional

• Internet (online media, social media)

• TV (user experience)

• Gerar Publicidade

• Saúde: encontrar informações relevantes

• Segurança: reconhecer logs intrusos

• Direito: reconhecer afirmações e seus argumentos

• Política: Análise de “sentimento” • …

Abordagem estatística

Aproximação “Linguística Estatística”- TEXT MINING

Aplicações:

Eugénio Oliveira / FEUP MIEIC/ Linguagem Natural Computacional

Ex de aplicação: Encontrar os “termos técnicos” que existem num texto técnico.

Ex:

– Os axónios são as fibras nervosas ao longo das quais se transmite a

informação.

• Utilidade / Domínio de Aplicação:

– indexação inteligente de documentos (RI) – Criação automática de ontologias de domínio

Abordagem estatística

Aproximação “Linguística Estatística”

Dividir o texto em sequências de unigramas, bigramas, trigramas (normalmente só até aí):

– {“os”, “axónios”, “são”… “os axónios”, “axónios são”, …“os axónios são”…}

• Verificar estatisticamente se os elementos estão presentes no documento em análise com

mais “representatividade” do que no corpus de referência:

– Se sim: possivelmente são termos técnicos (da ontologia)

Eugénio Oliveira / FEUP MIEIC/ Linguagem Natural Computacional

Aplicação

Aproximação “Machine Learning”

Se tivermos um corpus com muitos termos técnicos já marcados,

idealmente de diversas áreas, torna-se possível usar ML

1. Treinar um classificador usando regras baseadas no contexto e na

morfologia

Dada uma pergunta:

– “Quem foi o primeiro rei de Portugal?”

Obter uma (ou várias respostas) a partir de uma colecção de documentos

(local ou web):

– “D. Afonso Henriques” / “Afonso Henriques”“D. Afonso I”

Normalmente pede-se que a resposta seja um factoide (para ser mais

simples):

– Data, Pessoa, Local, Organização, etc…

Eugénio Oliveira / FEUP MIEIC/ Linguagem Natural Computacional

Aplicação

O que é o Verbetes?

• Serviço para pesquisa biográfica de entidades (pessoas, organizações)

• Este serviço responde a perguntas como:

- Quem é Alberto João Jardim?

- Qual a profissão/cargo de Paulo Portas em Julho 2011? e hoje?

- Quem é o ministro da defesa de Israel?

Abordagem:

• Identificar nomes de personalidades de notícias

• Extraír tuplos das notícias com base em padrões

• [ António Costa; Primeiro ministro; 2017-03-20; “hoje”]

• Identificar nomes alternativos (Passos Coelho, Passos)

• Classificar os tuplos como pessoa, organizacão ou outro

Eugénio Oliveira / FEUP MIEIC/ Linguagem Natural Computacional

Aplicação

Análise de “sentimento” a partir de tweets