Análise Sintática de Frases utilizando Gramáticas Livres de Contexto Probabilísticas
|
|
- Leonor Barateiro Sabala
- 7 Há anos
- Visualizações:
Transcrição
1 Universidade de São Paulo Mestrado em Ciência da Computação Instituto de Matemática e Estatística Disciplina MAC5725 Lingüística Computacional Análise Sintática de Frases utilizando Gramáticas Livres de Contexto Probabilísticas Christian Danniel Paz Trillo cpaz@ime.usp.br 17 de Outubro de 2004 Resumo 1 Introdução Lingüística Computacional é o estudo científico da linguagem desde uma perspectiva computacional. A análise de frases válidas numa linguagem natural é uma sub-área de interesse importante porque seu desenvolvimento ajuda o desenvolvimento de outras sub-áreas como a sumarização automática de textos, recuperação de informação, reconhecimento de diálogo, e outras. Os problemas presentes na análise sintática de frases são: Dada uma sentença em linguagem natural e uma gramática descrevendo a estrutura da linguagem, reconhecer se ela é gramatical ou não. Dadas as mesmas entradas, além de reconhecer se a sentença é gramatical, devolver a(s) estrutura(s) que faz(em) ela ser gramatical, i.e. sua árvore sintática. É possível atribuir a essas árvores uma probabilidade extraída também da gramática indicando quão provável é essa solução. Um dos problemas principais é a criação da gramática para uma linguagem natural, pois essas gramáticas são muito amplas. Existem dois enfoques para a criação dessas gramáticas: o primeiro consiste em manualmente identificar e expressar as regras baseadas no conhecimento humano; e o segundo é automático, 1
2 e consiste em extrair regras de textos existentes, chamados de corpus. O enfoque utilizado aqui consiste em extrair as regras de um corpus existente em que as estruturas das frases foram manualmente identificadas e anotadas. O corpus utilizado foi gerado pelo trabalho do projeto Tycho Brahe de Português Histórico 1, e o corpus foi simplificado para reduzir o número de regras da gramática. O presente trabalho descreve uma implementação do algoritmo de Earley para gramáticas livres de contexto probabilísticas, utilizando o 75% do corpus para extração das regras e o 25% restante para teste das mesmas, calculando a precisão e cobertura dos resultados para avaliar quão próximas são as respostas obtidas pelo algoritmo das que foram manualmente anotadas no corpus. A Seção 2 descreve o corpus utilizado e as considerações tomadas para o processamento do mesmo. A Seção 3 detalha a implementação feita em termos do algoritmo e as estruturas de dados utilizadas. A Seção 4 apresenta os resultados obtidos pelo algoritmo considerando a precisão das respostas, assim como uma discussão sobre a eficiência do algoritmo em termos de tempo e espaço consumido. Finalmente, a Seção?? apresenta algumas conclusões abordadas durante a implementação do algoritmo. 2 Corpus Um dos métodos de extração automática de regras para uma gramática de linguagem natural utiliza um corpus manualmente anotado. As anotações feitas no corpus indicam a estrutura das sentenças que conformam o texto. Um exemplo de frase sem anotações presente no corpus é: Não foi preciso que os sucessos verificassem aquele vaticínio, Dita frase está presente no corpus com as correspondentes anotações como segue: (IP (NEG Não) (SR foi) (ADJP (ADJ preciso)) (CP (C que) (IP (NP (D os) (N sucessos)) (VB verificassem) (NP (D aquele) (N vaticínio)))) (,,)) Em que aparece a estrutura da frase em forma de regras. As regras que podem ser extraídas da frase anotada são: 1 tycho 2
3 NEG Não SR foi ADJ preciso ADJP ADJ C que D os N sucessos NP D N VB verificassem D aquele N vaticínio IP NP VB NP CP C IP,, IP NEG SR ADJP CP, O corpus original do projeto Tycho Brahe contém informação mais detalhada sobre as estruturas das frases, por exemplo a regra (D os), está presente no corpus original como (D-P os) indicando que os é um determinante (D) em plural(p). Esse detalhe foi tirado do corpus para reduzir o número de regras geradas o que reduz o tempo de resposta do algoritmo de reconhecimento. Este processo de filtragem foi automático, mas gerou algumas regras que produziam laços infinitos no reconhecimento das frases, por exemplo: IP IP ou o conjunto de regras {PP IP, IP PP}. Esses problemas foram identificados manualmente e as regras removidas automaticamente. Um 75% das frases do corpus, selecionadas aleatoriamente, é utilizado para extrair as regras da gramática e para treiná-la e o 25% restante é utilizado para testar, e delas só as árvores sintáticas são extraídas. 3 Descrição da Implementação A implementação foi feita em C++ usando a libreria STL, e o compilador g++ para linux. Na Seção 3.1 as estruturas de dados utilizadas na implementação do algoritmo são detalhadas, e na Seção?? apresentamos o algoritmo de Earley utilizado na implementação. 3
4 3.1 Estruturas de Dados Na figura 1 se mostra o diagrama de classes na linguagem UML para as propriedades e operações principais usadas na implementação. As classes foram: Figura 1: Diagrama de Clases para a implementação. Item Gramatical(GrammarItem), Terminal e Não Terminal(NonTerminal): um item gramatical é um não terminal ou não terminal da gramática, o não terminal tem a informação para saber se ele deriva a terminais(é lado esquerdo de regras léxicas); Regra(Rule): uma regra é representada pelo não terminal do seu lado esquerdo e os itens gramaticais do seu lado esquerdo(sejam terminais ou não terminais). Uma regra armazena a sua probabilidade, que é a contagem de aparições dela no corpus, dividido pela contagem de aparições de regras que tem o mesmo não terminal no lado esquerdo; Regra Instanciada(InstancedRule): uma regra instanciada é uma regra sendo processada pelo algoritmo, e que contém informação do estado de processamento dela, o número de não terminais do lado direito que foram analisados(arcpos) e as posições em que cada um dos seus itens foi instanciado; Item de Processamento(ProcessingEntry): sempre que uma regra é finalizada, o não terminal do lado esquerdo dela deve ser analisado para ativar outras re- 4
5 gras nas que ele aparece do lado direito, esta estrutura armazena a informação necessária para verificar isso; Analisador Sintático(EarleyParser): é a implementação do algoritmo de Earley que será explicada na seguinte Seção. Para executar o algoritmo, ele conta com seis estruturas: arcos: os arcos são as regras para as quais pelo menos um dos elementos do seu lado direito foi processado com as entradas que foram avaliadas, são indexados pela posição do primeiro elemento ainda não instanciado e pelo elemento, arcos não instanciados: são uma cópia das regras originais da gramática(sem considerar as regras léxicas), arcos léxicos: são arcos não instanciados associados às regras léxicas, regras finalizadas: os arcos que são processados até o último símbolo do seu lado direito são ditos de finalizados e são armazenados nesta estrutura, são indexadas pela posição em que começam e pelo não terminal do seu lado esquerdo. O algoritmo utiliza uma pilha de itens de processamento durante a sua execução. Além disso, para cada não terminal que foi instanciado dominando duas posições específicas se ele está na pilha atualmente esperando para ser processada, assim como a regra de maior probabilidade que instanciou aquele não terminal nessas posições. Árvore Sintática e Nó da árvore(sttree e STNode): A árvore sintática de uma frase é a estrutura dela. Existem dois modos de construir a árvore, quando ela é extraída do conjunto de frases de teste, ela é gerada diretamente em base à representação anotada da frase; quando o algoritmo de Earley reconhece uma frase ele gera uma árvore sintática segundo as regras que ele encontrou que estavam presentes na frase. A árvore anotada e a árvore gerada são comparadas para obter a similaridade entre elas, i. e., o número de nós em que elas coincidem. O número de coincidências dividido pelo número de nós da arvore gerada é a precisão do algoritmo para essa frase. O número de coincidências dividido pelo número de nós da árvore extraída do corpus anotado é a cobertur do algoritmo. Essas duas medidas permitem avaliar o desempenho do algoritmo. Um programa foi escrito para geração aleatória de instâncias de 3-SAT, e é rodado com:./gen N L e gera um arquivo gen_n_l onde N é o número de variáveis, e L o número de cláusulas. O programa de resolução é chamado: 5
6 DPL(nível) 1. Se nível = 0 Então 1.1. Aplicar Redução Unipolar; 2. aplicou <- verdadeiro; 3. Enquanto a fórmula seja indefinida e aplicou 3.1. aplicou <- BCP(nível); 4. Se a fórmula é falsa Então 4.1. Desfazer os BCPs feitos no nível; 4.2. Retorna falso; 5. Se a fórmula é verdadeira Então 5.1. Retorna verdadeiro; 6. lit <- Seleção de Literal; 7. var <- lit.variable; 8. Se lit.sinal é verdadeiro Então 8.1. var.valor <- verdadeiro; 9. Senão 9.1. var.valor <- falso; 10. Se DPL(nível + 1) é verdadeiro Então Retorna verdadeiro; 11. var.valor <- negação(var.valor); 12. Se DPL(nível + 1) é verdadeiro Então Retorna verdadeiro; 13. var.valor <- indefinido; 14. Desfazer os BCPs feitos no nível; 15. Retorna falso; Figura 2: O algoritmo DPL implementado../solver arquivo_problema arquivo_saída Onde o arquivo de problema está no formato proposto no SATLIB[?] e o arquivo de saída contém os resultados da execução do programa, i.e. se o problema é satisfazível e a valoração encontrada que faz o problema satisfazível se houver. 4 Resultados Testes foram feitos para encontrar de manera experimental o ponto de mudança de fase para 3-SAT. O ponto de mudança de fase é ubicado no valor L/N no qual a porcentagem de problemas satisfazíveis de um conjunto de instâncias geradas aleatóriamente é próximo a 50%. O valor de N foi fixado para os testes a 50 e 100, tomando 100 arquivos aleatórios em cada ponto de L/N evaluado. Os resultados obtidos podem ser 6
7 vistos na figura??. O gráfico mostra a relação entre a variação de valores L/N e a porcentagem de problemas satisfazíveis dos 100 arquivos aleatórios. O ponto de mudança de fase foi encontrado em 4.3 em N=50 e em 4.25 para N=100. Outra característica notada é que os problemas que tomaram mais tempo (em média e máximo para os 100 arquivos aleatórios) para ser resolvidos estão na proximidade do ponto de mudança de fase, naqueles pontos em que a porcentagem de problemas satisfazíveis é diferente de 0% e de 100%, como pode ser visto nas figuras?? e??. Os gráficos mostram a relação entre L/N e o tempo em segundos tomado pelo algoritmo para resolver os problemas aleatórios em média e no máximo. Os valores obtidos nos testes foram registrados e são mostrados nas tabelas 1 e??. 5 Conclusões A implementação de reduções como BCP e literais unipolares assim como o uso da heurística MOM para a escolha do literal sob estruturas de dados adequadas, permite reduzir dramáticamente o tempo que o algoritmo toma para resolver o problema. A mudança de fase é um fenómeno singular neste problema e se apresenta num pequeno intervalo de valores L/N, para valores entre 3.5 e 6, já para os outros pontos, a porcentagem de problemas satisfazíveis é ou 0% ou 100%. Nestes pontos próximos a mudança de fase foi percebido que o tempo de resolução em geral tomado pelo algoritmo foi maior que nos outros valores de L/N. 7
8 L/N L % Satisfazíveis Tempo médio(s) Tempo máximo(s) Tabela 1: Resultados obtidos para N=50. 8
Análise sintática. Análise sintática. Top-down ou descendente. Com retrocesso: por tentativa e erro. Preditiva: para gramáticas LL(1) 09/04/2012
Análise sintática Função, interação com o compilador Análise descendente e ascendente Especificação e reconhecimento de cadeias de tokens válidas Implementação Tratamento de erros Prof. Thiago A. S. Pardo
Leia maisCP Compiladores I Prof. Msc.. Carlos de Salles
CP 5017.9 Prof. Msc.. Carlos de Salles 1 - EMENTA O Processo de Compilação. Deteção e Recuperação de Erros. Introdução à geração de Código Intermediário. Geração de Código de Máquina. Otimização. Uma visão
Leia maisAnálise Sintática LL(1)
FACULDADE ANGLO AMERICANO FOZ DO IGUAÇU Curso de Ciência da Computação 7º Periodo Disciplina: Compiladores Prof. Erinaldo Sanches Nascimento Análise Sintática LL(1) Análise Sintática Descendente Introdução
Leia maisLinguagens Formais e Autômatos. Apresentação do Plano de Ensino
Linguagens Formais e Autômatos Apresentação do Plano de Ensino Linguagens Formais e Autômatos LFA Código - CMP4145 Turma C01 Engenharia da Computação e Ciência da Computação Horário: Segunda e Quinta:
Leia maisReduce: reduz o que está imediatamente à esquerda do foco usando uma produção
Shift e reduce Shift: move o foco uma posição à direita A B C x y z A B C x y z é uma ação shift Reduce: reduz o que está imediatamente à esquerda do foco usando uma produção Se A x y é uma produção, então
Leia maisLinguagens Livres do Contexto. Adaptado de H. Brandão
Linguagens Livres do Contexto Adaptado de H. Brandão Linguagens Livres do Contexto Para as LLC, temos as Gramáticas Livres do Contexto; Linguagens Livres do Contexto Para as LLC, temos as Gramáticas Livres
Leia maisPCC104 - Projeto e Análise de Algoritmos
PCC104 - Projeto e Análise de Algoritmos Marco Antonio M. Carvalho Departamento de Computação Instituto de Ciências Exatas e Biológicas Universidade Federal de Ouro Preto 1 de novembro de 2018 Marco Antonio
Leia maisBanco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri. Banco de Dados Processamento e Otimização de Consultas
Processamento e Otimização de Consultas Banco de Dados Motivação Consulta pode ter sua resposta computada por uma variedade de métodos (geralmente) Usuário (programador) sugere uma estratégia para achar
Leia maisLinguagens Formais e Autômatos. Autômatos Finitos Determinísticos (AFD)
Linguagens Formais e Autômatos Autômatos Finitos Determinísticos (AFD) Cristiano Lehrer, M.Sc. Linguagens Regulares A teoria da computação começa com uma pergunta: O que é um computador? É, talvez, uma
Leia maisTeoria da Computação. Computabilidade e complexidade computacional
Teoria da Computação Computabilidade e complexidade computacional 1 Computabilidade e Complexidade Computabilidade: verifica a existência de algoritmos que resolva uma classe de linguagens trata a possibilidade
Leia maisCompiladores Analisador Sintático. Prof. Antonio Felicio Netto Ciência da Computação
Compiladores Analisador Sintático Prof. Antonio Felicio Netto antonio.felicio@anhanguera.com Ciência da Computação 1 Análise Sintática - A Análise Sintática constitui a segunda fase de um tradutor de uma
Leia mais1.1 Tema Aprendizado de Máquina (Mit97) é o campo da Inteligência Artificial responsável pelo desenvolvimento de modelos inferidos automaticamente a
1 Introdução 1.1 Tema Aprendizado de Máquina (Mit97) é o campo da Inteligência Artificial responsável pelo desenvolvimento de modelos inferidos automaticamente a partir de dados. Existem diversas aplicações
Leia maisAnalisadores Sintáticos LR
FACULDADE ANGLO AMERICANO FOZ DO IGUAÇU Curso de Ciência da Computação 7º Periodo Disciplina: Compiladores Prof. Erinaldo Sanches Nascimento Analisadores Sintáticos LR SLR LR Canônicos LALR Analisadores
Leia maisCompiladores - Análise Ascendente
Compiladores - Análise Ascendente Fabio Mascarenhas - 2013.1 http://www.dcc.ufrj.br/~fabiom/comp Análise Descendente vs. Ascendente As técnicas de análise que vimos até agora (recursiva com retrocesso,
Leia maisPesquisa Digital PATRICIA para Consultas a Banco de Dados em Linguagem Natural
Pesquisa Digital PATRICIA para Consultas a Banco de Dados em Linguagem Natural Rodrigo Bonone Moreira 1, Alexandre de Oliveira Zamberlan 1 1 UNIFRA Centro Universitário Franciscano Curso de Ciência da
Leia maisCompiladores - Especificando Sintaxe
Compiladores - Especificando Sintaxe Fabio Mascarenhas - 2013.1 http://www.dcc.ufrj.br/~fabiom/comp Análise Sintática A análise sintática agrupa os tokens em uma árvore sintática de acordo com a estrutura
Leia maisCompiladores - Análise Ascendente
Compiladores - Análise Ascendente Fabio Mascarenhas - 2013.2 http://www.dcc.ufrj.br/~fabiom/comp Análise Descendente vs. Ascendente As técnicas de análise que vimos até agora (recursiva com retrocesso,
Leia maisIntrodução à Programação. João Manuel R. S. Tavares
Introdução à Programação João Manuel R. S. Tavares Sumário 1. Ciclo de desenvolvimento de um programa; 2. Descrição de algoritmos; 3. Desenvolvimento modular de programas; 4. Estruturas de controlo de
Leia maisIntrodução à Programação
Introdução à Program João Manuel R. S. Tavares Sumário 1. Ciclo de desenvolvimento de um programa; 2. Descrição de algoritmos; 3. Desenvolvimento modular de programas; 4. Estruturas de controlo de um programa.
Leia maisO código do modelo de mapeamento sintático-conceitual do sistema ConPor
Universidade de São Paulo - USP Universidade Federal de São Carlos - UFSCar Universidade Estadual Paulista - UNESP O código do modelo de mapeamento sintático-conceitual do sistema ConPor Lucia Specia Lucia
Leia maisTratamento dos Erros de Sintaxe. Adriano Maranhão
Tratamento dos Erros de Sintaxe Adriano Maranhão Introdução Se um compilador tivesse que processar somente programas corretos, seu projeto e sua implementação seriam grandemente simplificados. Mas os programadores
Leia maisAULA TEÓRICA RESOLUÇÃO DE PROBLEMAS 4ª
AULA TEÓRICA RESOLUÇÃO DE PROBLEMAS 4ª Aula por Helder Coelho IIA 1 REPRESENTAÇÃO E INTELIGÊNCIA QUESTÕES PARA DISCUSSÃO: Transformação do problema compreender o problema reflectir/pensar o problema lógica,
Leia mais2.3.4 Algoritmos de SAT
114 CAÍTULO 2. LÓGICA ROOSICIONAL 2.3.4 Algoritmos de SAT Os algoritmos de SAT (do inglês satisfiability ) têm o objectivo de determinar se uma dada fbf α é satisfazível ou não; em caso afirmativo, devolvem
Leia maisUniversidade Federal de Alfenas
Universidade Federal de Alfenas Linguagens Formais e Autômatos Aula 12 Linguagens Livres do Contexto humberto@bcc.unifal-mg.edu.br Linguagens Livres do Contexto Para as LLC, temos as Gramáticas Livres
Leia maisFunção, interação com o compilador Especificação e reconhecimento de tokens Implementação Tratamento de erros. Prof. Thiago A. S.
Análise léxica Função, interação com o compilador Especificação e reconhecimento de tokens Implementação Tratamento de erros Prof. Thiago A. S. Pardo 1 Estrutura geral de um compilador programa-fonte analisador
Leia maisProcessamento de Dados aplicado à Geociências. AULA 3: Algoritmos computacionais Representação de Algoritmos Sintaxe Tipos de dados Expressões
Processamento de Dados aplicado à Geociências 1 AULA 3: Algoritmos computacionais Representação de Algoritmos Sintaxe Tipos de dados Expressões UNIVERSIDADE FEDERAL DE PELOTAS CENTRO DE DESENVOLVIMENTO
Leia maisFerramenta de apoio a identificação de eventos utilizando Linguagem Natural. Aluno: Ricardo Tomelin Orientador: Everaldo Artur Grahl
Ferramenta de apoio a identificação de eventos utilizando Linguagem Natural Aluno: Ricardo Tomelin Orientador: Everaldo Artur Grahl Roteiro 1. Introdução 2. Objetivos 3. Análise Essencial de Sistemas 4.
Leia maisAula 2. ESTATÍSTICA E TEORIA DAS PROBABILIDADES Conceitos Básicos
Aula 2 ESTATÍSTICA E TEORIA DAS PROBABILIDADES Conceitos Básicos 1. DEFINIÇÕES FENÔMENO Toda modificação que se processa nos corpos pela ação de agentes físicos ou químicos. 2. Tudo o que pode ser percebido
Leia maisBuscas Informadas ou Heurísticas - Parte II
Buscas Informadas ou Heurísticas - Parte II Prof. Cedric Luiz de Carvalho Instituto de Informática - UFG Graduação em Ciência da Computação / 2006 FUNÇÕES HEURÍSTICAS - 1/7 FUNÇÕES HEURÍSTICAS - 2/7 Solução
Leia maisCOMPILAÇÃO. Ricardo José Cabeça de Souza
COMPILAÇÃO Ricardo José Cabeça de Souza www.ricardojcsouza.com.br Programas Código-fonte escrito em linguagem de programação de alto nível, ou seja, com um nível de abstração muito grande, mais próximo
Leia maisA contribuição do ensino problematizador de Majmutov na formação por etapas das ações mentais de Galperin
Universidade Estadual de Roraima Mestrado Acadêmico em Educação Teoria de Aprendizagem e Cognição A contribuição do ensino problematizador de Majmutov na formação por etapas das ações mentais de Galperin
Leia maisEXPRESSÃO REGULAR PARA UMA FUNÇÃO EQUIVALENTE EM PASCAL, UTILIZANDO DOIS ALGORITMOS BASEADOS NO TEOREMA DE KLEENE RONALD GLATZ
PROTÓTIPO TIPO PARA TRANSFORMAÇÃO DE UMA EXPRESSÃO REGULAR PARA UMA FUNÇÃO EQUIVALENTE EM PASCAL, UTILIZANDO DOIS ALGORITMOS BASEADOS NO TEOREMA DE KLEENE 1 OBJETIVO DESTE TRABALHO ALGUNS CONCEITOS BÁSICOS
Leia maisCompiladores Ciência e Tecnologia da Computação Engenharia Informática e de Computadores
Compiladores Ciência e Tecnologia da Computação Engenharia Informática e de Computadores Análise Semântica Universidade dos Açores Departamento de Matemática www.uac.pt/~hguerra Análise semântica 3ª etapa
Leia maisCOMPUTAÇÃO E LINGUÍSTICA: UM APLICATIVO WEB PARA BUSCAS AUTOMÁTICAS NO CORPUS DIGITAL DOVIC
315 de 665 COMPUTAÇÃO E LINGUÍSTICA: UM APLICATIVO WEB PARA BUSCAS AUTOMÁTICAS NO CORPUS DIGITAL DOVIC Aline Silva Costa 97 (UESB) Cristiane Namiuti Temponi 98 (UESB) Jorge Viana Santos 99 (UESB) RESUMO
Leia maisGramáticas Livres de Contexto
Gramáticas Livres de Contexto IBM1088 Linguagens Formais e Teoria da Computação Evandro Eduardo Seron Ruiz evandro@usp.br Universidade de São Paulo E.E.S. Ruiz (USP) LFA 1 / 42 Frase do dia Quando vires
Leia maisCompiladores Ambiente de Execução
Compiladores Ambiente de Execução Fabio Mascarenhas 2015.1 http://www.dcc.ufrj.br/~fabiom/comp O Back-end Até agora vimos as fases do front-end do compilador: Análise Léxica Análise Sintática Análise Semântica
Leia maisCompiladores. Prof. Bruno Moreno Aula 8 02/05/2011
Compiladores Prof. Bruno Moreno Aula 8 02/05/2011 RECONHECIMENTO DE TOKENS Reconhecimento de Tokens Até aqui aprendemos a identificar tokens Para reconhecimento, a única abordagem utilizada foi árvores
Leia maisA/ART casa/n caiu/v./. Figura 3.1: Frase com anotação morfossintática.
3 Tarefa Esse capítulo começa dissertando sobre as vantagens de se agrupar as palavras em classes, como elas são agrupadas em part-of-speechs e suas aplicações. Em seguida é apresentado o Anotador Morfossintático
Leia maisLinguagens Formais e Autômatos. Apresentação do Plano de Ensino
Linguagens Formais e Autômatos Apresentação do Plano de Ensino Linguagens Formais e Autômatos LFA Código - CMP4145 Turma A01 Engenharia da Computação e Ciência da Computação Horário: Segunda, Terça e Quinta.
Leia maisCompiladores I Prof. Ricardo Santos (cap 1)
Compiladores I Prof. Ricardo Santos (cap 1) Compiladores Linguagens de programação são notações que permitem descrever como programas devem executar em uma máquina Mas, antes do programa executar, deve
Leia maisAnálise sintática. Questão. E se a análise sintática pudesse ser modelada por autômatos?
Análise sintática Função, interação com o compilador Análise descendente e ascendente Especificação e reconhecimento de cadeias de tokens válidas Implementação Tratamento de erros Prof. Thiago A. S. Pardo
Leia maisDisciplina: LINGUAGENS FORMAIS, AUTÔMATOS E COMPUTABILIDADE Prof. Jefferson Morais
UNIVERSIDADE FEDERAL DO PARÁ INSTITUTO DE CIÊNCIAS EXATAS E NATURAIS FACULDADE DE COMPUTAÇÃO CURSO DE BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO Disciplina: LINGUAGENS FORMAIS, AUTÔMATOS E COMPUTABILIDADE Prof.
Leia maisAula 05: - Recursão (parte 1)
MCTA028 Programação Estruturada Aula 05: - Recursão (parte 1) Prof. João Henrique Kleinschmidt Material elaborado pelo prof. Jesús P. Mena-Chalco 3Q-20108 Recursão: Se você ainda não entendeu; Ver: "Recursão".
Leia maisAnálise sintática. Prof. Thiago A. S. Pardo. Análise sintática ascendente
Análise sintática Função, interação com o compilador Análise descendente e ascendente Especificação e reconhecimento de cadeias de tokens válidas Implementação Tratamento de erros Prof. Thiago A. S. Pardo
Leia maisCOMPILADORES. Análise sintática. Prof. Geovane Griesang Universidade de Santa Cruz do Sul UNISC Departamento de informática
Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES Análise sintática Parte 02 Prof. geovanegriesang@unisc.br Data Conteúdo 23/09/2013 3. Análise Sintática: 3.1 analisadores
Leia maisProf. A. G. Silva. 06 de outubro de Prof. A. G. Silva Programação em Lógica 06 de outubro de / 1
Programação em Lógica Prof. A. G. Silva 06 de outubro de 2016 Prof. A. G. Silva Programação em Lógica 06 de outubro de 2016 1 / 1 Gramáticas Processamento de linguagens naturais é um dos principais usos
Leia maisESTRUTURA DE DADOS. Arvore Binária Jose. Arvore Ternaria Direção
ESTRUTURA DE DADOS 1. Árvores: Uma das mais importantes classes de estruturas de dados em computação são as árvores. Aproveitando-se de sua organização hierárquica, muitas aplicações são realizadas usando-se
Leia maisCompiladores - Gramáticas
Compiladores - Gramáticas Fabio Mascarenhas 2018.1 http://www.dcc.ufrj.br/~fabiom/comp Análise Sintática A análise sintática agrupa os tokens em uma árvore sintática de acordo com a estrutura do programa
Leia maisIntrodução parte II. Compiladores. Mariella Berger
Introdução parte II Compiladores Mariella Berger Sumário Partes de um compilador Gerador da Tabela de Símbolos Detecção de erros As fases da análise As fases de um compilador Montadores O que é um Compilador?
Leia maisLinguagens Livres de Contexto
Universidade Católica de Pelotas Centro Politécnico Bacharelado em Ciência da Computação 364018 Linguagens Formais e Autômatos TEXTO 4 Linguagens Livres de Contexto Prof. Luiz A M Palazzo Maio de 2011
Leia maisUTFPR - Universidade Tecnológica Federal do Paraná. Processamento e otimização de consultas
UTFPR - Universidade Tecnológica Federal do Paraná Processamento e otimização de consultas Leyza Baldo Dorini 04/Nov/2009 Programação da aula Introdução: processamento e otimização de consultas Etapas:
Leia maisGramáticas Livres de Contexto Parte 1
Universidade Estadual de Feira de Santana Engenharia de Computação Gramáticas Livres de Contexto Parte 1 EXA 817 Compiladores Prof. Matheus Giovanni Pires O papel do Analisador Sintático É responsável
Leia maisFACULDADE LEÃO SAMPAIO
FACULDADE LEÃO SAMPAIO Paradigmas de Programação Curso de Análise e Desenvolvimento de Sistemas Turma: 309-5 Semestre - 2014.2 Paradigmas de Programação Prof. MSc. Isaac Bezerra de Oliveira. 1 PARADIGMAS
Leia maisUniversidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES. Introdução. Geovane Griesang
Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES Introdução geovanegriesang@unisc.br Processadores de linguagem Linguagens de programação são notações para se descrever
Leia maisLógica para Computação Segundo Semestre, Aula 10: SAT. Prof. Ricardo Dutra da Silva. ( p (q ( q r))) ( p r) ( p q) ( p q r) p r.
Lógica para Computação Segundo Semestre, 2014 Aula 10: SAT DAINF-UTFPR Prof. Ricardo Dutra da Silva Definição 10.1. SAT é o problema de decidir se existe uma valoração que satisfaça uma fórmula proposicional.
Leia maisConstrução de Compiladores Aula 16 - Análise Sintática
Construção de Compiladores Aula 16 - Análise Sintática Bruno Müller Junior Departamento de Informática UFPR 25 de Setembro de 2014 1 Introdução Hierarquia de Chomsky Reconhecedores Linguagens Livres de
Leia mais5COP096 TeoriadaComputação
Sylvio 1 Barbon Jr barbon@uel.br 5COP096 TeoriadaComputação Aula 13 Prof. Dr. Sylvio Barbon Junior Sumário - Problemas NP-Completo Algoritmos Não-deterministas; Classes NP-Completo e NP-Dificil; Teorema
Leia maisAnálise Sintática. Eduardo Ferreira dos Santos. Outubro, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 18
Análise Sintática Eduardo Ferreira dos Santos Ciência da Computação Centro Universitário de Brasília UniCEUB Outubro, 2016 1 / 18 Sumário 1 Introdução 2 Derivações 2 / 18 1 Introdução 2 Derivações 3 /
Leia maisMC102 Aula 26. Instituto de Computação Unicamp. 17 de Novembro de 2016
MC102 Aula 26 Recursão Instituto de Computação Unicamp 17 de Novembro de 2016 Roteiro 1 Recursão Indução 2 Recursão 3 Fatorial 4 O que acontece na memória 5 Recursão Iteração 6 Soma em um Vetor 7 Números
Leia maisDesenvolvimento de programas
1 Desenvolvimento de programas Análise do problema Desenvolvimento do algoritmo Codificação do programa Compilação e execução Teste e depuração 2 Análise do problema Conhecer exatamente o que o problema
Leia mais6 Atributos. A dívida da empresa subiu.
6 Atributos Para buscar o sentimento de um texto automaticamente precisamos encontrar boas pistas ao longo do discurso. Uma grande variedade de palavras e expressões possui conotação positiva ou negativa,
Leia maisConceitos de Linguagens de Programação
Conceitos de Linguagens de Programação Aula 06 Análise Sintática (Implementação) Edirlei Soares de Lima Análise Sintática A maioria dos compiladores separam a tarefa da análise sintática
Leia maisIntrodução à Programação
Introdução à Programação Linguagens de Programação: sintaxe e semântica de linguagens de programação e conceitos de linguagens interpretadas e compiladas Engenharia da Computação Professor: Críston Pereira
Leia maisMecanismos de Interrupção e de Exceção, Barramento, Redes e Sistemas Distribuídos. Sistemas Operacionais, Sistemas
Arquitetura de Computadores, Arquitetura de Computadores Organização de Computadores, Conjunto de Instruções, Sistemas Operacionais, Sistemas Operacionais, Sistemas Mecanismos de Interrupção e de Exceção,
Leia maisLinguagens Formais e Autômatos. Apresentação do Plano de Ensino
Linguagens Formais e Autômatos Apresentação do Plano de Ensino Linguagens Formais e Autômatos LFA Código - CMP4145 Turma C01 Engenharia da Computação e Ciência da Computação Horário: Terça e Sexta: 20:30
Leia maisMINERAÇÃO DE DADOS EM ARQUIVOS DE LOG GERADOS POR SERVIDORES DE PÁGINAS WEB
MINERAÇÃO DE DADOS EM ARQUIVOS DE LOG GERADOS POR SERVIDORES DE PÁGINAS WEB Acadêmico: Leonardo José Correia Orientador: Prof. Ricardo Alencar Azambuja Blumenau, Julho/2004 1 Roteiro Introdução Objetivo
Leia maisCompiladores - JACC. Fabio Mascarenhas
Compiladores - JACC Fabio Mascarenhas - 2013.1 http://www.dcc.ufrj.br/~fabiom/comp JACC Gerador de analisadores sintáticos LALR que gera código Java Sintaxe baseada na sintaxe do YACC (e de muitos outros
Leia maisProgramação de Computadores I Introdução PROFESSORA CINTIA CAETANO
Programação de Computadores I Introdução PROFESSORA CINTIA CAETANO Introdução Resolução de problemas Encontrar uma maneira de descrever este problema de uma forma clara e precisa. Encontremos uma seqüência
Leia maisLinguagens Formais. Aula 01 - Conceitos Básicos. Prof. Othon Batista Mestre em Informática
Linguagens Formais Aula 01 - Conceitos Básicos Prof. Othon Batista Mestre em Informática Sumário Introdução à Linguagem Alfabeto Cadeias de Símbolos, Palavras Tamanho de Palavra Prefixo, Sufixo ou Subpalavra
Leia maisComplexidade computacional
Complexidade computacional Marina Andretta ICMC-USP 15 de setembro de 2015 Baseado no livro Uma introdução sucinta a Algoritmos de Aproximação, de M. H. Carvalho, M. R. Cerioli, R. Dahab, P. Feofiloff,
Leia maisEspecificação do TP3
Especificação do TP3 Data de Entrega: 21/05/2008 1 Descrição do Problema O problema a ser resolvido neste trabalho é conhecido na literatura como o problema de isomorfismo de sub-grafos Uma definição formal
Leia maisComplexidade de Algoritmos
Compleidade de Algoritmos Prof. Diego Buchinger diego.buchinger@outlook.com diego.buchinger@udesc.br Prof. Cristiano Damiani Vasconcellos cristiano.vasconcellos@udesc.br Reduções de Problemas X NP-Completo
Leia maisAnálise empírica de algoritmos de ordenação
Análise empírica de algoritmos de ordenação Mario E. Matiusso Jr. (11028407) Bacharelado em Ciências da Computação Universidade Federal do ABC (UFABC) Santo André, SP Brasil mario3001[a]ig.com.br Resumo:
Leia maisAnálise Sintática Introdução
Análise Sintática Introdução Renato Ferreira Linguagens e Automatas Linguagens formais são importantes em Computação Especialmente em linguagens de programação Linguagens regulares A linguagem formal mais
Leia maisComo construir um compilador utilizando ferramentas Java
Como construir um compilador utilizando ferramentas Java p. 1/2 Como construir um compilador utilizando ferramentas Java Aula 1 - Introdução Prof. Márcio Delamaro delamaro@icmc.usp.br Como construir um
Leia maisCompilação: Erros. Detecção de Erros: * Analisadores Top-Down - Preditivo Tabular (LL) - Feito a mão. * Analisadores Botton-Up: - Shift-Reduce (SLR)
Compilação: Erros Detecção de Erros: * Analisadores Top-Down - Preditivo Tabular (LL) - Feito a mão * Analisadores Botton-Up: - Shift-Reduce (SLR) * Erros no Lex * Erros no Yacc * Erros na Definição da
Leia maisLinguagens de Programação Aula 5
Aula 5 Celso Olivete Júnior olivete@fct.unesp.br Na aula anterior Ambiguidade Análise léxica Exercício calculadora 2/@ Na aula anterior AF calculadora 3/@ Na aula de hoje Análise léxica implementação Gramática
Leia maisConstrução de Compiladores Aula 17 - Análise Sintática Descendente
Construção de Compiladores Aula 17 - Análise Sintática Descendente Bruno Müller Junior Departamento de Informática UFPR 3 de Novembro de 2014 1 Análise Sintática Descendente Eliminação de retrocessos Converter
Leia maisTokens, Padroes e Lexemas
O Papel do Analisador Lexico A analise lexica e a primeira fase de um compilador e tem por objetivo fazer a leitura do programa fonte, caracter a caracter, e traduzi-lo para uma sequencia de símbolos lexicos
Leia maisBehavioral Patterns - Interpreter
Interpretador de gramática Motivação vem da necessidade de associar a uma representação de gramática a um objeto que pode interpretá-la. Situação em que um objeto necessite de informações que devem passar
Leia maisComplexidade de Algoritmos. Edson Prestes
Edson Prestes A classe P consiste nos problemas que podem ser resolvidos em tempo Polinomial (Problemas tratáveis) A classe NP consiste nos problemas que podem ser verificados em tempo polinomial (Problemas
Leia maisCompiladores - Gramáticas
Compiladores - Gramáticas Fabio Mascarenhas - 2013.1 http://www.dcc.ufrj.br/~fabiom/comp Análise Sintática A análise sintática agrupa os tokens em uma árvore sintática de acordo com a estrutura do programa
Leia maisAnálise Sintática. Compiladores Cristina C. Vieira. Compiladores 2012/2013
Análise Sintática Compiladores Cristina C. Vieira 1 Árvore Sintática Nós internos: símbolos não-terminais Folhas: símbolos terminais Arcos: de símbolos não-terminais do LHS da produção para nós do RHS
Leia maisApresentação. !! Familiarização com os métodos de construção de compiladores de linguagens e com as técnicas de compilação mais habituais.
Apresentação Universidade dos Açores Departamento de Matemática www.uac.pt/~hguerra/!! Aquisição de conceitos sobre a definição de linguagens de programação.!! Familiarização com os métodos de construção
Leia maisLinguagens Regulares. Prof. Daniel Oliveira
Linguagens Regulares Prof. Daniel Oliveira Linguagens Regulares Linguagens Regulares ou Tipo 3 Hierarquia de Chomsky Linguagens Regulares Aborda-se os seguintes formalismos: Autômatos Finitos Expressões
Leia maisIntrodução Análise Sintática Descendente Análise Sintática Ascendente. Aula Prática. Fernando Antônio Asevedo Nóbrega
Análise Sintática Aula Prática Fernando Antônio Asevedo Nóbrega Instituto de Ciências Matemáticas e de Computação USP SCC-206 Introdução à Compilação 9 de maio de 2012 1 / 16 Agenda 1 Introdução 2 Análise
Leia maisTeoria da Computação. Máquinas Universais Máquina com Pilhas
Máquinas Universais Máquina com Pilhas Cristiano Lehrer Introdução A Máquina com Pilhas diferencia-se das Máquinas de Turing e de Post principalmente pelo fato de possuir uma memória de entrada separada
Leia maisUNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO Prof.ª Danielle Casillo Diferencia-se das máquinas de Turing e Post principalmente pelo fato de possuir a memória de entrada separada
Leia maisCampeonato de Gamão. 1. Regras. 2. Servidor
Campeonato de Gamão 1. Regras O campeonato de gamão será disputado de acordo com as regras tradicionais do jogo, facilmente encontradas na Internet. As duas cores tradicionais das pedras do jogo serão
Leia maisLinguagens de Programação
O estudante estuda muito. Regras: 7 9 12 14. . Regras: 2 4 . Regras: 1 Representar através de uma árvore de derivação. 77 O estudante estuda muito.
Leia maisCapítulo 6: Linguagens de Programação
Capítulo 6: Linguagens de Programação Ciência da Computação: Uma Visão Abrangente 11a Edição by J. Glenn Brookshear Copyright 2012 Pearson Education, Inc. Capítulo 6: Linguagens de programação 6.1 Perspectiva
Leia maisSemântica no Reconhecedor Gramatical Linguístico
Workshop de Tecnologias Adaptativas WTA 2015 Semântica no Reconhecedor Gramatical Linguístico Ana Contier, Djalma Padovani, João José Neto Linguagem Natural - Desafios Crescente quantidade de documentos
Leia maisLinguagens Formais e Autômatos P. Blauth Menezes
Linguagens Formais e Autômatos P. Blauth Menezes blauth@inf.ufrgs.br Departamento de Informática Teórica Instituto de Informática / UFRGS Linguagens Formais e Autômatos - P. Blauth Menezes 1 Linguagens
Leia maisAula 05: - Recursão (parte 1)
MCTA028 Programação Estruturada Aula 05: - Recursão (parte 1) Prof. Jesús P. Mena-Chalco jesus.mena@ufabc.edu.br 3Q-20107 1 Recursão: Se você ainda não entendeu; Ver: "Recursão". Efeito Droste Anuncio
Leia maisACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO
ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO 2. Linguagens Livres-do-Contexto Referência: SIPSER, M. Introdução à Teoria da Computação. 2ª edição, Ed. Thomson Prof. Marcelo S. Lauretto marcelolauretto@usp.br
Leia maisGramáticas ( [HMU00], Cap. 5.1)
Gramáticas ( [HMU00], Cap. 5.1) Vimos que a seguinte linguagem não é regular L = {0 n 1 n n 0} Contudo podemos fácilmente dar uma definição indutiva das suas palavras: 1. ɛ L 2. Se x L então 0x1 L L é
Leia maisEstrutura geral de um compilador programa-fonte
Análise léxica Função, interação com o compilador Especificação e reconhecimento de tokens Implementação Tratamento de erros Prof. Thiago A. S. Pardo 1 Estrutura geral de um compilador programa-fonte analisador
Leia maisAnálise Sintática. Fabiano Baldo
Compiladores Análise Sintática Fabiano Baldo Gramáticas Livre de Contexto (GLC) É utilizada na especificação formal lda sintaxe de uma linguagem de programação. É um conjunto de produções ou regras gramaticais
Leia maisImplementação do Analisador Léxico
Implementação do Analisador Léxico Ricardo Mendes do Nascimento Universidade Regional Integrada do Alto Uruguai e das Missões (URI) Santo Ângelo RS Brasil rnascom@urisan.tche.br Resumo. Este artigo tem
Leia maisUma gramática é ambígua se existe alguma cadeia para qual ela tem mais de uma árvore sintática
Ambiguidade Uma gramática é ambígua se existe alguma cadeia para qual ela tem mais de uma árvore sintática De maneira equivalente, se existe mais de uma derivação mais à esquerda para uma cadeia Ou se
Leia mais