Interpretação de Mensagens entre Agentes Exploradores no Mundo do Wumpus Paulo B. Oliva, DI-UFPE...

Post on 17-Apr-2015

102 views 0 download

Transcript of Interpretação de Mensagens entre Agentes Exploradores no Mundo do Wumpus Paulo B. Oliva, DI-UFPE...

Interpretação de Mensagens Interpretação de Mensagens entre Agentes Exploradores no entre Agentes Exploradores no

Mundo do WumpusMundo do Wumpus

Paulo B. Oliva, DI-UFPEwww.di.ufpe.br/~pbo11 de fev. de 1999

ConteúdoConteúdo

Introdução• Gramáticas DCG• Acumuladores

Arquitetura de Sistemas PLN• Processamento morfológico• Processamento sintático de superfície• Processamento sintático profundo

Conclusão• Dificuldades

Demo ao vivo

Gramáticas DCGGramáticas DCG

Definite Clause Grammar• Formalismo built-in de Prolog e LIFE para

representação de estruturas lingüisticas.• Pode ser usado diretamente para os

processamentos morfológico e sintático no parsing de linguagens naturais.

• Também pode ser utilizado para os processamentos semântico e pragmático.

Gramáticas DCGGramáticas DCG Sintaxe: const(...,X:, ...,Y:, ...) --> subconst1(...,X,...) , ... , subconstM(...,Y,...) {pred1(...,X,...,Y,...), ..., predN(...,X,...,Y,...)} Expansão em LIFE const(...,X:, ...,Y:, ..., in_dcg=>_A, out_dcg=>_Z]) :- subconst1(...,X,..., in_dcg=>_A, out_dcg=>B), ... , subconst25(...,Y,..., in_dcg=>_Y,

out_dcg=>_Z), pred1(...,X,...,Y,...), ..., predN(...,X,...,Y,...)

Gramáticas DCGGramáticas DCG

Exemplo:frase --> sn, gv?sn --> nome?sn --> det, subs?nome --> [“Ana”]?det --> [“a”]?subs --> [“pera”]?gv --> verb?verb --> [“come”]?verb --> [“canta”]?

gramática para parsing da sub-linguagem“Ana canta”“Ana come a pera”

Em LIFE:frase(in_dcg => _A,out_dcg => _B) :- sn(in_dcg => _A,out_dcg => _C), gv(in_dcg => _C,out_dcg => _B).

nome(in_dcg => ["Ana"|_A],out_dcg => _A)

:- succeed.

Acumuladores em LIFEAcumuladores em LIFE

Ferramenta poderosa para simplificar o desenvolvimento de grandes programas

São usados como difference lists.

Exemplo de uso não lingüístico:

> import(“accumulators”)?> acc_info(myacc, X, In, Out, acc_pred=>(Out=[X|In]))?> pred_info(loop, myacc)?> loop(0) :-- !?> loop(N) :-- N + myacc, loop(N-1)?> main(N, L) :- loop(N) with myacc([], L)?

Programa é traduzido para:

loop(0, in_myacc=>A, out_myacc=>A) :- !,

succeed.loop(N, in_myacc=>B, out_myacc=>C) :- D=[N|

B], loop(N-1, in_myacc=>D, out_myacc=>C).main(N, L) :- loop(N, in_myacc=>[], out_myacc=>L).

Gramáticas EDCGGramáticas EDCG

Extended Definite Clause Grammar

sn --> det(@(agreeFt=>Agf)), sub(@(agreeFt=>Agf))?

det(@(syntcat=>defArt, agreeFt=>@(gen=>fem, num=>sing)) --> [“a”]?sub(@(syntcat=>comNoun,

agreeFt=>@(gen==>fem, num=>sing)) --> [“pera”]?

Tradução em LIFE:

det(@(syntcat => defArt, agreeFt => @(gen => fem, num =>

sing)), in_dcg => ["a"|_A], out_dcg => _A) :- succeed.

sub(@(syntcat => comNoun, agreeFt => @(gen => fem, num =>

sing)), in_dcg => ["pera"|_A], out_dcg => _A) :- succeed.

Arquitetura de Sistemas de PLNArquitetura de Sistemas de PLN

Morfologia: flexão e derivaçãoMorfologia: flexão e derivação Flexão:

• Palavra = lexema + morfema sintático• Análise morfológica baseada em dicionário fornece:

categoria sintática das palavras (Parts-Of-Speech Tagging) algumas propriedades do uso sintático da palavra na frase Conjugação, concordância, caso, ex, “Eles deram” x “Ele deu” x “Lhe deram”

Derivação:• Palavra = lexema + morfema sintático para mudança de

categoria sintática com mesma semântica ex, descobriram x descobrimento

• ou palavra = lexema + morfema(s) semânticos aglutinado(s),

ex, redesfazer = re+des+fazer?

• ou palavra = vários lexemas aglutinado(s) ex, otorino-laringologista = oto+rino+laringo+logista

Análise Morfológica em LIFEAnálise Morfológica em LIFEVerbos (3a. Pessoa do Sing)Verbos (3a. Pessoa do Sing)

const (syntr(syntcat => main,

agreeFt => @(num=>sing, pers=>3),

conjug => @(tense => present),

lex => Lex),

semr(semcat=>Semcat)) --> [PVerb],

{rverb(lex=>Lex,

semcat=>Semcat),

PVerb=strcon(Lex,"s")}?

rverb(lex=>"smell",

semcat=>percep) --> ["smell"]?

rverb(lex=>"walk",

semcat=>action) --> ["walk"]?

Análise Morfológica em LIFEAnálise Morfológica em LIFEVerbos (Formação do Particípio)Verbos (Formação do Particípio)

const (syntr(syntcat => main,

conjug => @(tense => {past;pastPart}),

lex => Lex),

semr(semcat=>Semcat)) --> [PVerb],

{rverb(lex=>Lex,

semcat=>Semcat),

PVerb=strcon(Lex,"ed")}?

rverb(lex=>"smell",

semcat=>percep) --> ["smell"]?

rverb(lex=>"walk",

semcat=>action) --> ["walk"]?

Análise Morfológica em LIFEAnálise Morfológica em LIFEFlexão dos SubstantivosFlexão dos Substantivos

const (syntr(syntcat=>commonN,

num=>plural,

lex=Lex)) --> [Plural],

{Lex = lexNoun1,

Plural = strcon(Lex,"s")}?

const (syntr(syntcat=>commonN,

num=>plural,

lex=Lex)) --> [Plural],

{Lex = lexNoun2,

Plural = strcon(Lex,"es")}?

lexNoun1 -> {"pit"; "breeze"; "smell";

"monster"; "gold"; "glitter"}.

lexNoun2 -> {"wumpus"; "stench"}.

Sintaxe de Superfície: Sintaxe de Superfície: palavras de categorias aberta e fechadapalavras de categorias aberta e fechada

Especifica combinação de símbolos em orações Categorias sintáticas dos lexemas

• Lexemas classificadas em função das sua distribuição nas orações gramaticais

• Categorias abertas: substantivos, verbos, adjetivos, alguns advérbios milhares de membros e constantemente estendidas por

neologismos membros com papel essencialmente semântico

• Categorias fechadas artigos, pronomes, preposições, conectivas, verbos

auxiliares, alguns advérbios, cardinais, ordinais, etc. dezenas de membro e quase nunca estendido membros com papel essencialmente sintático

Sintaxe de Superficie: Sintaxe de Superficie: constituintes sintáticosconstituintes sintáticos

Constituintes sintáticos (ou sintagmas): • orações não são constituídas diretamente de lexemas,• mas de sintagmas que são pelas suas vez constituídas de

sub-sintagmas (ou sub-constituintes) etc. até os lexemas• Sintagmas também tem categorias sintáticas baseadas nas

suas distribuições em orações gramaticais• Em termos de teoria das linguagens:

categorias sintáticas dos sintágmas = símbolos não terminais lexemas = símbolos terminais

Sintaxe de Superficie:Sintaxe de Superficie:propriedades da cláusulapropriedades da cláusula

tempo: presente, pretérito, imperfeito, futuro etc.

modo: • indicativo/subjuntivo/condicional• declarativo/interrogativo/imperativo• principal/subordinada/embutida

voz: ativo, passivo com agente, passivo sem agente• ex, “Matei o wumpus”, “O wumpus foi morto (por mim)”

extraposição: • ex, “Foi eu quem matou o wumpus”, “Quem matou o

wumpus foi eu” polaridade:

• ex, “”(Não) matei o wumpus (de jeito nenhum)”

Sintaxe de Superficie:Sintaxe de Superficie:propriedades dos nominaispropriedades dos nominais

referência: • definita/indefinita, genérica/específica• ex, “{um;o;esse;este;aquele} wumpus”

numero, gênero: ex, “{um;uns;uma;umas} wumpus{Ø;es;a;as}”

contabilidade: ex, * “o wumpus comprou uma gasolina”

* “o wumpus comprou carro”

Análise Sintática de Superfície em LIFEAnálise Sintática de Superfície em LIFE% “I see a glitter at 1 2”

const (syntr(syntcat => clause,

conjug => Conjug:@(mood=>declar, voice=>active),

syntRoles =>

@(pred => Pred,

args => @(subj => Subj, dobj => DObj))

mods => @(frtAd1 => FAd1, endAd1 => EAd1))))

--> const(FAd1:syntr(syntcat=>pp, optional=>yes)),

const(Subj:syntr(syntcat=>nominal, funct=>subj,

optional=>no, agreeFt=>Sva)),

const(Pred:syntr(syntcat=>vg, optional=> no,

conjug=>Conjug, agreeFt=>Sva),

semr(semcat=>percep)),

const(DObj:syntr(syntcat=>nominal, funct=>dobj,

optional=>no))

const(EAd1:syntr(syntcat=>pp, optional=>yes))?

Análise Sintática de Superfície em LIFEAnálise Sintática de Superfície em LIFE

ClauseClause

NominalNominal VGVG NominalNominal

I see a I see a glitterglitter

VerbVerb

DetDet NounNoun

PronounPronoun NPNP

PerPronPerPron

ArticleArticle

Análise Sintática de Superfície em LIFEAnálise Sintática de Superfície em LIFEnominal := {np; pronoun}.

pronoun := {perPron; indPron; demPron}.

const (syntr(syntcat => np,

det => Det,

agreeFt => @(pers => 3, num => Num),

head => Noun,

preMod => PMod)) -->

const(Det:syntr(syntcat=>determ,

optional=>no, num=>Num)),

const(PMod:syntr(syntcat=>ap, optional=>yes)),

const(Noun:syntr(syntcat=>noun,

optional=>no, num=>Num))?

const (syntr(syntcat=>perPron,

func=>subj,

agreeFt=> @(pers => 1,

num => sing))) --> ["I"]?

Análise Sintática de Superfície em LIFEAnálise Sintática de Superfície em LIFE

const (syntr(syntcat => vg, conjug => Conjug,

agreeFt=>Agree, head => Main),

semr(semcat=>Sem))

--> const(Main:syntr(syntcat=>verb, agreeFt=>Agree

conjug=>Conjug),

semr(semcat=>Sem))?

determ := {article}.

const (syntr(syntcat=>article, lex=>"a", ref=>indef,

num=>sing)) --> ["a"]?

const (syntr(optional=>yes)) --> []?

Sintaxe Profunda: Sintaxe Profunda: papeis sintáticos x papeis temáticospapeis sintáticos x papeis temáticos

Algumas alternativas sintáticas mudam o mapeamento entre um elemento de conteúdo C e função sintática (ou papel sintático) S que o expressa, ex, passivo:• []@subj Cheiro@GV [um fedor]@dirObj• [Um fedor]@subj [é cheirada]@GV [por mim]@passiveObj

Capturar sistematicamente e abstratamente tais paráfrases sintáticas requer introdução de papeis temáticos associados a um tipo dado de elemento de conteúdo independentemente das alternativas sintáticas, ex, passivo:• []@agent Cheiro@perception [um fedor]@percept• [Um fedor]@percept [é cheirada]@perception [por

mim]@agent

Sintaxe Profunda: Papeis temáticosSintaxe Profunda: Papeis temáticos

Pre-semânticos, ie,• Motivados por regularidades “cross-linguistic”• Independente do domínio enciclopédico (ontologia) de aplicação

5 tipos:• tipo de situação: relação (entidade-propriedade, entidade-

entidade), acontecimentos sem agentes, ações (físicas, de percepção, de raciocínio, de sentir emoção)

• participantes da situação: agente, paciente, entidade, atributo,• modificadores qualificando a situação: maneira, instrumento,• circunstâncias da situação: lugar, tempo, causa, resultado, • conectores com outras situações: causa, efeito, lista, • Apenas participantes diretamente dependentes do tipo de

situação

Sintaxe profunda: hierarquia de Sintaxe profunda: hierarquia de situações situações

e participantes associadose participantes associados relações:

• atribuição: [O wumpus]@carrier é perigoso@attr• identidade: [Você]@ided é [quem matou o wumpus?]@ided• locativa: [O wumpus]@located está [em [3.2]]@location • possessiva: [O ouro]@possessed será [nosso]@possessor

eventos:• acontecimento: [A porta da caverna]@paciente fechou []@paciente Tomei [um susto!]@emoção• ação física: []@agente Atirei [minha flecha]@paciente• ação de percepção: []@agente Cheiro [um fedor]@percept• ação de raciocínio: []@agente Conclui [que o wumpus está

em [1,2]]@conhecimento• ação de comunicação: []@agente avisei [agente 2]@ouvinte [da morte do wumpus]@mensagem

Representação Sintática Profunda em Representação Sintática Profunda em LIFELIFE

% “I see the gold”

const (syntr(conjug => @(mood => declar, voice => active),

semr(themRoles =>

@(situation => Pred,

partic => @(agent => Subj,

percept => DObj)

--> const(Subj:syntr(syntcat=>nominal, funct=>subj,

optional=>no, agreeFt=>Sva)),

const(Pred:syntr(syntcat=>vg, optional=> no,

conjug=>Conjug, agreeFt=>Sva),

semr(semcat=>percep)),

const(DObj:syntr(syntcat=>nominal, funct=>dobj,

optional=>no))

Representação Sintática Profunda em Representação Sintática Profunda em LIFELIFE

% “the gold is seen by me”

const (syntr(conjug => @(mood => declar, voice => active)

semr(themRoles =>

@(situation => Pred,

partic => @(agent => Comp,

percept => Subj))))

--> const(Subj:syntr(syntcat=>nominal, funct=>subj,

optional=>no, agreeFt=>Sva)),

const(Pred:syntr(syntcat=>vg, optional=>no,

conjug=> Conjug, agreeFt=>Sva),

semr(semcat=>percep)),

const(Comp:syntr(syntcat=>pp, optional=>no))?

Frases interrogativasFrases interrogativas% “do you smell a stench?”

const (syntr(syntcat => clause,

conjug => Conjug:@(mood=>inter, voice=>active),

syntRoles =>

@(pred => Pred,

args => @(subj => Subj, dobj => DObj))),

semr(themRoles =>

@(situation => Pred,

partic => @(agent=>Subj,percept => DObj))))

--> const(QAux:syntr(syntcat=>auxiliar)),

const(Subj:syntr(syntcat=>nominal, agreeFt=>Sva)),

const(Pred:syntr(syntcat=>vg,

conjug=>Conjug,

agreeFt=>Sva, aux => QAux)

semr(semcat=>percep)),

const(DObj:syntr(syntcat=>nominal))?

Frases imperativasFrases imperativas% “shoot the wumpus”

const (syntr(syntcat => clause,

conjug => Conjug:@(mood=>imper, voice=>active),

syntRoles =>

@(pred => Pred,

args => @(subj =>

Ocult:@(syntr(syntcat=>nominal,

agreeFt=>

Sva:@(num=>sing, pers=>2))

obj => Obj))),

semr(themRoles =>

@(situation => Pred,

partic => @(agent => Ocult, comp => Comp))))

--> const(Pred:syntr(syntcat=>vg,

conjug=>Conjug, agreeFt=>Sva)

const(Obj:syntr(syntcat=>{pp;adv;nominal}))?

Dificuldades, dúvidas, demos,....Dificuldades, dúvidas, demos,....

That’s all That’s all folks!folks!