Gramáticas de Cláusulas Definidas (DGC -- Definite Clause Grammars)

Slides:



Advertisements
Apresentações semelhantes
Trabalho de Inglês Might: passado de may. Seguido de um verbo regular ou irregular no infinitivo sem to. Significado: pode, pudê, podia, poderia, poderíamos.[indica.
Advertisements

Present Simple vs Present Continuous
Prolog: Predicados Built-in 1
Simple Present.
RELATIVE CLAUSE / RELATIVE PRONOUNS
Personal Pronouns Pronomes Pessoais
Relative Pronouns Pronomes Relativos
Presente Contínuo Prof.:Marina Inglês.
Passado Simples Inglês Prof.:Marina.
Reported Speech or Indirect Speech
Projeto de Sistemas de Software Luana Lachtermacher
Indirect Speech By Laecio Miranda.
SIMPLE PRESENT TENSE.
MODAL VERBS.
Gramáticas de Cláusulas Definidas (DGC -- Definite Clause Grammars)
Rodar XSB Prolog no Unix Shell
Life Leonardo Lemos (lal)Paulo Oliva (pbo)& Controle de Fluxo * de predicados: Como em Prolog: fail. conjunção (A,B). disjunção (A;B). Diferente de Prolog:
Rodar Prolog2 no Unix Shell Conectar-se em limoeiro. Incluir /usr/local/prolog2/sys no seu path. Digitar prolog2 no prompt Unix. Digitar consult(" ").
Gramáticas de Cláusulas Definidas
Prolog: Predicados Built-in 2
Projetos de Programação em Lógica
Paulo B. Oliva, DI-UFPE 11 de fev. de 1999
Leonardo Lemos Paulo Borges Reginaldo Valadares
Prof. Celso Gramática.
Prof. Celso Gramática.
FORTRAN 90 Denise Yumi Takamura.
SQL Procedural Junho/2006.
1 Tradução Dirigida à Sintaxe Prof. Ricardo Santos.
Conceitos iniciais Hardware/Software
Mestrado UFRJ/NCE Memória e Representação do Conhecimento Professora: Adriana Benevides Soares Aluno: Ilan Chamovitz Computadores, Mentes e Conduta.
CE-262 Ontologia e Web Semântica Prof. José M Parente de Oliveira
1.3 – Interpretadores – Compiladores versus Interpretadores
CE-262 Ontologia e Web Semântica Prof. José M Parente de Oliveira Sala 120 – Prédio da Computação Lógica de Descrições.
Capítulo V Análise Sintática
FRASE TODO ENUNCIADO LINGUÍSTICO DE SENTIDO COMPLETO ATARVÉS DO QUAL TRANSMITIMOS NOSSAS IDEIAS.
Prof. Giovanny Lucero Introdução Prof. Giovanny Lucero
Linguagens Formais e Tradutores Análise Sintática - 1
Tecnologia para Web JavaScript Enrique Pimentel Leite de Oliveira
Ilan Chamovitz, D.Sc. - 1 Fundamentos da Lógica Nebulosa para Inovação em processos de avaliação educacional - relato de experiência Ilan.
LINGUAGENS DE PROGRAMAÇÃO
Sistemas de Informação Prof. Me. Everton C. Tetila Modelo de dados relacional Banco de Dados I.
Programação Concorrente com Thread Java
Introdução Ciência da Computação estudo de algoritmos –ÊNFASE ao estudo de DADOS armazenamento manipulação refinamento (a partir de dados cru) estrutura.
THE PRESENT CONTINUOUS TENSE (presente contínuo)
Juliane Roitmam Renata Roberto
Present Perfect and Simple Past
PRESENT PERFECT TENSE By Teacher Marilisa Lichtenberg.
Indirect Object Pronouns - Pronomes Pessoais Complemento Indirecto
DISCURSO DIRETO E INDIRETO
SIMPLE PAST TENSE (REGULAR VERBS)
SIMPLE PAST Os verbos regulares recebem o acréscimo de -ed ao infinitivo para formar o simple past (passado simples) Em alguns verbos, é necessário seguir.
Teacher Andréia Deluca English Class
Análise Sintática – Parte 1
1 Semântica de Ações Ações Básicas, Ações Funcionais e Notação de Dados.
Verb to have Present tense Negative.
Gerúndios Prof. Silvino Sieben.
English Classes Relative Pronouns.
PAST CONTINUOUS Sears Tower Willis Tower.
PFFF, INGLÊS??? PRA QUE?? Heeeerp derp, mas aonde eu uso ingreis??? Derp herp.
PRESENTE DO INDICATIVO
Profº.: Jeizon Alexandre
Unit l Verb to be.
Unit 22 Relative Clauses and Pronouns.
VOCÊ JÁ FALA INGLÊS FLUENTEMENTE?
Milhões de estrelas, colocadas nos céus, por um Deus. Millions of stars placed in the skies, by one God.
PASSIVE VOICE PASSIVE VOICE What happened? Do you know who did it? © Teacher: Catarina Fernandes.
Extensivo ) Subject -> Sujeito (S) 2) Verb -> Verbo (V) 3) Complement- > Complemento (C) Ex: Luana is a teacher. (A Luana é uma professora) S V.
Naja Slides YoungAt Heart Sinatra Som.
Passive Voice.
Transcrição da apresentação:

Gramáticas de Cláusulas Definidas (DGC -- Definite Clause Grammars) Jacques Robin DI-UFPE

Gramá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, sintático, semântico e prágmatico na interpretação (incluindo o parsing) ou na geração de frases em linguagens naturais ou artificiais.

Idéia básica das DCG Notação popular de gramática: Backus-Naur Form, BNF, para a linguagem anbn <s> ::= a b <s> ::= a <s> b Notação DCG s --> [a], [b]. s --> [a], s, [b]. Difference List: [1,2,3] = [1,2,3,4] - [4] [x] = [x|A] - A [a,b,c,d] = [a,b,c,d] - [ ] --> é uma macro de Prolog re-escrevendo uma regra de gramática como um cláusula lógica adicionando 2 argumentos Arg1 e Arg2 suplementares implícito a cada predicado da cláusula formando uma difference list das palavras da frase a analisar: Arg1 = frase toda Arg2 = resto da frase ainda não analisado (parsed) depois da aplicação da regra

Conversão de DCG para Prolog F --> SN, GV. F --> SN, GV, SN. SN --> Nome SN --> Det, Subs. GV --> V. V --> [come]. V --> [canta]. Nome --> [ana]. Subs --> [pera]. Det --> [a]. f(T,F) :- sn(T,R), gv(R, F). f(T,F) :- sn(T,R1), gv(R1,R2), sn(R2,F). sn(T,F) :- nome(T,F). sn(T,F) :- det(T,R), subs(R,F). gv(R,F) :- v(T,F). v([come|F],F). v([canta|F],F). subs([pera|F],F). nome([ana|F],F). det([pera|F],F).

Parsing Top-Down com Prolog DCG f(T,F) :- sn(T,R), gv(R, F). f(T,F) :- sn(T,R1), gv(R1,R2), sn(R2,F). sn(T,F) :- nome(T,F). sn(T,F) :- det(T,R), subs(R,F). gv(R,F) :- v(T,F). v([come|F],F). v([canta|F],F). subs([pera|F],F). nome([ana|F],F). det([pera|F],F). f([Ana,come,a,pera],[]) sn gv sn nome v det subs ana come a pera

Rastreamento do Parsing com Prolog DCG ? f([ana,come,a,pera],[]). 1) 0 CALL: f([ana,come,a,pera][]) ? 2) 1 CALL: sn([ana,come,a,pera],_72) ? 3) 2 CALL: nome([ana,come,a,pera],_72) ? 4) 3 CALL: C(ana,[ana,come,a,pera],_72) {dec10} ? 4) 3 EXIT: C(ana, [ana,come,a,pera],[come,a,pera]) 3) 2 EXIT: nome([ana,come,a,pera],[come,a,pera]) 2) 1 EXIT: sn([ana,come,a,pera],[come,a,pera]) 5) 1 CALL: gv([come,a,pera],[]) ? 6) 2 CALL: v([come,a,pera],[])? 7) 3 CALL: C(come,[come,a,pera],[]) {dec10} ? 7) 3 FAIL: C(come,[come,a,pera],[]) 8) 3 CALL: C(canta,[come,a,pera],[]) {dec10} ? ....

Utilização de Restrições com Argumentos DCG f(Num, Gen) --> sn(Num, Gen), gv(Num, Gen). PROLOG f(T, F, Num, Gen) :- sn(T,R,Num,Gen), gv(R,F,Num,Gen). ?- f(Num,Gen,[ana,come,as, peras], []). Num = sing, Gen = fem More(y/n)? N yes ?- f(Num,Gen,[ana,come,as, pera], []). no ?- f(Num,Gen,[as,peras,come, ana], []). no

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

Exemplo de LIFE DCG Exemplo: gramática para parsing da sub-linguagem 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 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). Execução: > main(9,L)? L = [1,2,3,4,5,6,7,8,9].

Gramáticas EDCG Extended Definite Clause Grammar Tradução em LIFE: sn --> det(@(agreeFt=>Agf)), sub(@(agreeFt=>Agf))? det(@(syntcat=>defArt, agreeFt=>@(gen=>fem, num=>sing)) --> [“a”]? sub(@(syntcat=>comNoun, agreeFt=>@(gen==>fem, --> [“pera”]? Tradução em LIFE: det(@(syntcat => defArt, agreeFt => @(gen => fem, num => sing)), in_dcg => ["a"|_A], out_dcg => _A) :- succeed. sub(@(syntcat => comNoun, in_dcg => ["pera"|_A],

Análise Morfológica em LIFE 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 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 LIFE Clause Nominal Nominal VG Pronoun Verb NP PerPron Det Noun Article I see a glitter

Análise Sintática de Superfície em LIFE nominal := {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 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)) --> []?

Análise Sintática Profunda em LIFE % “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))

Análise Sintática Profunda em LIFE % “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 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 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}))?