A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "Gramáticas de Cláusulas Definidas (DGC -- Definite Clause Grammars) Jacques Robin DI-UFPE."— Transcrição da apresentação:

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

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

3 Idéia básica das DCG * Notação popular de gramática: Backus-Naur Form, BNF, para a linguagem a n b n ::= a b ::= a 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

4 Conversão de DCG para Prolog * 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 --> SN, GV. * F --> SN, GV, SN. * SN --> Nome * SN --> Det, Subs. * GV --> V. * V --> [come]. * V --> [canta]. * Nome --> [ana]. * Subs --> [pera]. * Det --> [a].

5 Parsing Top-Down com Prolog DCG f([Ana,come,a,pera],[]) sngvsn nome ana v comea detsubs pera * 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).

6 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} ?....

7 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

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

9 Exemplo de LIFE 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.

10 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].

11 Gramáticas EDCG * Extended Definite Clause Grammar sn --> num=>sing)) --> [a]? num=>sing)) --> [pera]? * Tradução em LIFE: => defArt, agreeFt => fem, num => sing)), in_dcg => ["a"|_A], out_dcg => _A) :- succeed. => comNoun, agreeFt => fem, num => sing)), in_dcg => ["pera"|_A], out_dcg => _A) :- succeed.

12 Análise Morfológica em LIFE Verbos (3a. Pessoa do Sing) const (syntr(syntcat => main, agreeFt pers=>3), conjug => 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"]?

13 Análise Sintática de Superfície em LIFE % I see a glitter at 1 2 const (syntr(syntcat => clause, conjug => voice=>active), syntRoles => Pred, args => Subj, dobj => DObj)) mods => 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))?

14 Análise Sintática de Superfície em LIFE Clause Nominal VG Nominal I see a glitter Verb DetNoun PronounNP PerPron Article

15 Análise Sintática de Superfície em LIFE nominal := {np; pronoun}. pronoun := {perPron; indPron; demPron}. const (syntr(syntcat => np, det => Det, agreeFt => 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, => 1, num => sing))) --> ["I"]?

16 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)) --> []?

17 Análise Sintática Profunda em LIFE % I see the gold const (syntr(conjug => declar, voice => active), semr(themRoles => Pred, partic => 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))

18 Análise Sintática Profunda em LIFE % the gold is seen by me const (syntr(conjug => declar, voice => active) semr(themRoles => Pred, partic => 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))?

19 Frases interrogativas % do you smell a stench? const (syntr(syntcat => clause, conjug => voice=>active), syntRoles => Pred, args => Subj, dobj => DObj))), semr(themRoles => Pred, partic => 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))?

20 Frases imperativas % shoot the wumpus const (syntr(syntcat => clause, conjug => voice=>active), syntRoles => Pred, args => agreeFt=> pers=>2)) obj => Obj))), semr(themRoles => Pred, partic => Ocult, comp => Comp)))) --> const(Pred:syntr(syntcat=>vg, conjug=>Conjug, agreeFt=>Sva) const(Obj:syntr(syntcat=>{pp;adv;nominal}))?


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

Apresentações semelhantes


Anúncios Google