interpretação de mensagens entre agentes exploradores no mundo do wumpus paulo b. oliva, di-ufpe...
TRANSCRIPT
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!