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

Slides:



Advertisements
Apresentações semelhantes
Simple Present.
Advertisements

RELATIVE CLAUSE / RELATIVE PRONOUNS
Presente Contínuo Prof.:Marina Inglês.
Projeto de Sistemas de Software Luana Lachtermacher
Indirect Speech By Laecio Miranda.
SIMPLE PRESENT TENSE.
1 Estruturas de Controle Márcia J. N. Rodrigues Lucena Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento.
Prolog e lógica Jacques Robin, DI-UFPE
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
Gramáticas de Cláusulas Definidas (DGC -- Definite Clause Grammars)
Leonardo Lemos Paulo Borges Reginaldo Valadares
SISTEMA BINÁRIO Hardware de Computadores. SISTEMA BINÁRIO Hardware de Computadores.
Prof. Celso Gramática.
FORTRAN 90 Denise Yumi Takamura.
INTRODUÇÃO À COMPUTAÇÃO PARALELA
SQL Procedural Junho/2006.
Subconsultas em SQL. Subconsulta Estrutura geral SELECT.... FROM.... WHERE [at] OPERADOR ( SELECT... FROM... [WHERE... ]) Declaração SELECT localizada.
Introdução à Lógica de Programação
Prof. Dr. Helder Anibal Hermini
Prototipação de um Interpretador para IMP com ML Juliana Vizzotto Júlio Machado Fevereiro 2002.
Servidores e Programação Web Redes de Computadores.
Geração de Código Cap. 8. Introdução Fase final para um compilador Entrada é uma representação intermediária do código fonte e a saída é um programa para.
1 Tradução Dirigida à Sintaxe Prof. Ricardo Santos.
O Fluxo de Testes © Alexandre Vasconcelos
Templates e Questões de Design Programas são geralmente construídos segundo um design que é relativamente bem mapeado nos mecanismos oferecidos pela linguagem.
Sistemas de Tutoria Inteligente (STI) Visam proporcionar instrução de forma adaptada a cada aprendiz. STIs adaptam o processo de instrução a determinadas.
Adriana da Silva Jacinto CT-282 Prof. Dr.Parente Técnicas de diagnóstico 1º semestre 2005.
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.
SMS: um novo gênero digital e emergente nas aulas de língua Giselda Santos Costa CEFET-PI UNED-Floriano Junho-2007.
Mac-499 Trabalho de Formatura Supervisionado
Prof. Giovanny Lucero Introdução Prof. Giovanny Lucero
Linguagens Formais e Tradutores Análise Sintática - 1
Linguagens Formais e Tradutores Linguagens Regulares (Revisão)
Tecnologia para Web JavaScript Enrique Pimentel Leite de Oliveira
Baseado no documento do Prof. Ronaldo Martins da Costa
LINGUAGENS DE PROGRAMAÇÃO
Baseado no documento do Prof. Ronaldo Martins da Costa
Sistemas de Informação Prof. Me. Everton C. Tetila Modelo de dados relacional Banco de Dados I.
Programação Concorrente com Thread Java
Prof. André Laurindo Maitelli DCA-UFRN
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.
INPE / CAP-334 Celso L. Mendes Aula 4-D(1) Reestruturação de Programas em Sistemas Vetoriais (II) Tópicos: Suporte à Paralelização Vetorização.
1 Seja o resultado de um experimento aleatório. Suponha que uma forma de onda é associada a cada resultado.A coleção de tais formas de ondas formam um.
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.
Verb To Be Teacher Evelise Couto.
Profº.: Jeizon Alexandre
Unit l Verb to be.
Unit 22 Relative Clauses and Pronouns.
PASSIVE VOICE PASSIVE VOICE What happened? Do you know who did it? © Teacher: Catarina Fernandes.
Transcrição da apresentação:

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

Porque LIFE para Processamento de Linguagem Natural (PLN)? Como linguagem de programação em lógica, inclui built-in: Gramáticas de Cláusulas Definidas (DCGs) um Formalismo de Representação do Conhecimento (FRC) lingüístico para PLN A maioria dos sistemas de PLN profundo modernos: usam como estrutura de dados termos de traços tipados muito semelhantes aos termos LIFE Sistemas de PLN requer conhecimento: muito heterogêneo porém altamente interdependente, como morfo-sintaxe da língua, semântica do domínio, estrutura do discurso, objetivos dos agentes comunicativos, etc. que só pode ser adequadamente codificado por um FRC flexível, integrando vários paradigmas

DCGs: Gramáticas de Cláusulas Definidas Pré-processador built-in da programação em lógica: convertendo regras de gramáticas em cláusulas lógicas, e assim re-aproveitando o provador de teorema da programação em lógica para implementar “de graça” parser ou gerador de frases Usa diferença de listas como estrutura de dados: frase da linguagem cuja gramática é representada pela DCG - lista de palavras ainda a ser processadas = listas de palavras já processadas Cada regra DCG: associada a uma categoria sintática genérica cat instancia 2 argumentos adicionais implícitos: 1. lista de palavras do constituinte const da frase de catégoria cat 2. lista de palavras do resto da frase na direita de const

Exemplo mínimo de DCG Prolog: conversão regra DCG / cláusula Prolog Regras de gramáticas: sn --> det, subs. Entradas do dicionário: det --> [o]. det--> [a]. det --> [os]. det --> [as]. subs --> [menino]. subs --> [meninos]. subs --> [menina]. subs --> [meninas]. Conversão para cláusulas Prolog: sn(Csn,Rsn) :- det(Csn,Rdet), subs(Rdet,Rsn). det([o|Rdet], Rdet). det([a|Rdet], Rdet). det([os|Rdet], Rdet). det([as|Rdet], Rdet). subs([menino|Rsubs], Rsubs). subs([meninos|Rsubs], Rsubs). subs([menina|Rsubs], Rsubs). subs([meninas|Rsubs], Rsubs).

Exemplo mínimo de DCG Prolog: execução sn(Csn,Rsn) :- det(Csn,Rdet), subs(Rdet,Rsn). det([o|Rdet], Rdet). det([a|Rdet], Rdet). det([os|Rdet], Rdet). det([as|Rdet], Rdet). subs([menino|Rsubs], Rsubs). subs([meninos|Rsubs], Rsubs). subs([menina|Rsubs], Rsubs). subs([meninas|Rsubs], Rsubs). ?- sn([o,menino],[]). call sn([o,menino],[]). call det([o,menino],Rdet). exit det([o,menino],[menino]). call subs([menino], Rsubs). exit subs([menino], []). exit sn([o,menino],[]). yes ?- subs([menino],[]). ?- det([o, menino],[menino]). ?- sn([minha, menina],[]). no ?- sn([o,meninas],[]).

Regras com argumentos de concordância Regras de gramáticas: sn(G,N) --> det(G,N), subs(G,N). Entradas do dicionário: det(masc,sing) --> [o]. det(fem,sing) --> [a]. det(masc,plur) --> [os]. det(fem,plur) --> [as]. subs(masc,sing) --> [menino]. sub(masc,plur) --> [meninos]. subs(fem,sing) --> [menina]. subs(fem,plur) --> [meninas]. Conversão para cláusulas Prolog: sn(G,N,Csn,Rsn) :- det(G,N, Csn,Rdet), subs(G,N, Rdet,Rsn). det(masc,sing,[o|Rdet], Rdet). det(fem,sing,([a|Rdet], Rdet). det(masc,plur,[os|Rdet], Rdet). det(fem,plur,[as|Rdet], Rdet). subs(masc,sing,[menino|Rsubs], Rsubs). subs(masc,plur,[meninos|Rsubs], Rsubs). subs(fem,sing,[menina|Rsubs], Rsubs). subs(fem,plur,[meninas|Rsubs], Rsubs).

Regras com restrições Regras de gramáticas: sn(G,N) --> det(G,N), subs(G,N). subs(Lex,masc,sing) --> [Lex]. subs(Lex,plur,reg,L) --> [Lexi]. {Lexi = ?? , ??, ??}. det(Lex,masc,sing) --> [Lex]. det(Lex,plur,reg,L) --> [Lexi].

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