Comunicação. Capítulo 22



Documentos relacionados
Comunicação. Capítulo 22

A lógica de programação ajuda a facilitar o desenvolvimento dos futuros programas que você desenvolverá.

ALGORITMOS PARTE 01. Fabricio de Sousa Pinto

Bases Matemáticas. Aula 2 Métodos de Demonstração. Rodrigo Hausen. v /15

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008

Múltiplos Estágios processo com três estágios Inquérito de Satisfação Fase II

Especificação Operacional.

Informática II Cap. 3

Algumas vantagens da Teoria das Descrições Definidas (Russel 1905)

Instituto Superior Politécnico de VISEU. Escola Superior de Tecnologia

Informações sobre Filmes de Cinema em Cartaz em Linguagem Natural Relatório Final

INFORMAÇÃO PROVA DE EQUIVALÊNCIA À FREQUÊNCIA INGLÊS LE I (2 anos) 2015

¹CPTL/UFMS, Três Lagoas, MS,Brasil, ²CPTL/UFMS, Três Lagoas, MS, Brasil.

Arquitetura de Rede de Computadores

CAP. I ERROS EM CÁLCULO NUMÉRICO

O que queremos. Processamento Estatístico da Linguagem Natural. Parsing Morfológico. Regras Simples. Adicionando palavras. Regras Derivacionais

PARSER: UM ANALISADOR SINTÁTICO E SEMÂNTICO PARA SENTENÇAS DO PORTUGUÊS

Exemplo: programa --> regra; fato. Muito utilizada para definir gramáticas e para processamento de linguagem natural.

Construção de tabelas verdades

Desvios de redações efetuadas por alunos do Ensino Médio

Observação das aulas Algumas indicações para observar as aulas

Exercícios Teóricos Resolvidos

A VISTA BACKSTAGE PRINCIPAIS OPÇÕES NO ECRÃ DE ACESSO

Compiladores. Análise léxica. Plano da aula. Vocabulário básico. Motivação para análise léxica. Estrutura de um compilador

Jogos vs. Problemas de Procura

PARFOR 2014 CURSO INTENSIVO DE ATUALIZAÇÃO DE PROFESSORES DE PORTUGUÊS LÍNGUA MATERNA FLUP

Como enviar e receber correio eletrónico utilizando o Gmail

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2

1 Introdução. 1.1 Apresentação do tema

Agrupamento Vertical de Escolas de Salir Biblioteca Escolar 2008/2009. Como fazer um trabalho

5 Equacionando os problemas

TÉCNICAS DE PROGRAMAÇÃO

Este material traz a teoria necessária à resolução das questões propostas.

Agrupamento de Escolas de Porto de Mós Informação-Prova de Equivalência à Frequência

AMBIENTE DE PROGRAMAÇÃO PYTHON

Um compilador é um programa que lê um programa escrito numa dada linguagem, a linguagem objecto (fonte), e a traduz num programa equivalente

Dadas a base e a altura de um triangulo, determinar sua área.

Tecnologias da Informação e Comunicação: Sistema Operativo em Ambiente Gráfico

Departamento de Matemática - UEL Ulysses Sodré. Arquivo: minimaxi.tex - Londrina-PR, 29 de Junho de 2010.

Práticas de Programação em Lógica. José Romildo Malaquias

Conhecendo um pouco de matrizes e determinantes

Geração de código intermediário. Novembro 2006

Microsoft Access: Criar consultas para um novo banco de dados. Vitor Valerio de Souza Campos

Entendendo como funciona o NAT

Conceitos básicos de programação

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES

6.3 Equivalência entre Autômatos com Pilha Não-Determinísticos e Gramáticas Livre do Contexto

Programa de Formação Contínua em Matemática para Professores dos 1º e 2º Ciclos do Ensino Básico Tarefa: As roupas do Tomás

Vamos Criar um Ponto de Restauro no Windows

Data de Aplicação 2/04/2009

Tutorial: criação de uma Ficha de Voluntário online

Lógica Computacional. Argumentos válidos e sólidos. Métodos de Demonstração. Demonstrações formais. Regras de Inferência Igualdade

TIC Unidade 2 Base de Dados. Informação é todo o conjunto de dados devidamente ordenados e organizados de forma a terem significado.

O modelo do computador

Para criar a conta faça clique no separador. Abre um formulário com campos que terá que preencher. Basta ir seguindo

EXERCÍCIOS DE LÓGICA DE 1ª ORDEM

PHC XL CS. Reporting Financeiro em Microsoft Excel. O que ganha com este software:

Representação do Conhecimento

Modelos Conceptual e Mental

O papel do CRM no sucesso comercial

Prova de Aferição de Matemática

AMBIENTE PARA AUXILIAR O DESENVOLVIMENTO DE PROGRAMAS MONOLÍTICOS

Define claramente o tema, o seu objectivo e os aspectos a desenvolver. De seguida deves ser capaz de levantar questões sobre o que pretendes

Procedimentos para a divulgação de eventos no site da ECUM

Introdução aos critérios de consulta. Um critério é semelhante a uma fórmula é uma cadeia de caracteres que pode consistir em

CONCEITOS BÁSICOS DE UM SISTEMA OPERATIVO

Utilização do SOLVER do EXCEL

1. Sistemas de numeração

Algoritmos e Estrutura de Dados III. Árvores

Algoritmos não se aprendem: Copiando algoritmos Estudando algoritmos Algoritmos só se aprendem: Construindo algoritmos Testando algoritmos

LIMESURVEY. Introdução à criação de inquéritos. Maio 2012 Vítor Almeida, Nuno Cruz

Metodos de Programação

Ferramentas de Modelação e Análise de Sistemas baseadas em Redes de Petri (RdP)

Árvores Binárias Balanceadas

Licenciatura em Engenharia Informática Sistemas Distribuídos I 2ª chamada, 6 de Julho de º Semestre, 2004/2005

Orientação a Objetos

Diagrama de Classes. Um diagrama de classes descreve a visão estática do sistema em termos de classes e relacionamentos entre as classes.

Alguns exemplos de problemas resolvidos

Fórmulas e Funções 7

3 Dicas MATADORAS Para Escrever s Que VENDEM Imóveis

Linguagem Lógica Prolog

Os objetivos indicados aplicam-se a duas linguagens de programação: C e PHP

Introdução à Programação B Licenciatura em Engenharia Informática. Enunciado do trabalho prático. Quem quer ser milionário? 20 de Dezembro de 2007

PLANO DA LIÇÃO Aprender sobre Segurança Pessoal On-line

Aplicações de Escritório Electrónico

MICROSOFT ACCESS MICROSOFT ACCESS. Professor Rafael Vieira Professor Rafael Vieira

Relatório de Instalação do Windows 2003 Server

x0 = 1 x n = 3x n 1 x k x k 1 Quantas são as sequências com n letras, cada uma igual a a, b ou c, de modo que não há duas letras a seguidas?

4ª - Sim, já instalei o programa em casa e tudo. Vou fazer muitas músicas e gravar-me a cantar nelas também.

BIBLIOTECA ESCOLAR CENTRO DE RECURSOS EDUCATIVOS COMO FAZER UM TRABALHO DE PESQUISA

Conteúdo do pacote. Lista de terminologia. Powerline Adapter

Renata de Freitas e Petrucio Viana. IME, UFF 12 de março de 2015

PROGRAMAÇÃO LINEAR. Resolução de problemas de programação linear usando o comando Solver, no Excel.

Transcrição:

Comunicação Capítulo 22

Sumário Comunicação Gramáticas Análise sintáctica (parsing)

Comunicação Comunicar consiste em trocar informação através da produção e percepção de sinais, pertencentes a um sistema partilhado de sinais convencionais

Comunicação Grande parte dos animais usa sinais para representar mensagens importantes

Comunicação Num mundo parcialmente observável, a comunicação pode ajudar os agentes, pois podem aprender informação que é observada ou inferida por outros agentes

Comunicação Por exemplo, no mundo dos Wumpus um grupo de agentes exploradores pode ganhar (como grupo e como indivíduos) se forem capazes de: Inquirir outros agentes sobre particularidades do mundo Encontraram wumpus algures? Informar sobre o estado do mundo Cheira bem na posição 3 4 Pedir a outros agentes para executar acções Ajudas-me a carregar o ouro? Etc.

Comunicação Um agente pode produzir linguagem: a isto chamamos actos de discurso Enviar um mail, usar linguagem gestual, são tudo actos de discurso

Fundamentos da linguagem Linguagem formal: Conjunto de palavras (concatenação de símbolos terminais), eventualmente infinito Linguagens formais têm definições matemáticas rigorosas e.g. P Q em LP é uma frase; PQ não é Linguagem natural: Português, Inglês, Chinês, Não têm definições rigorosas Objectivo deste capítulo: estudar linguagem natural de um modo formal

Fundamentos da Linguagem Sintaxe / Gramática Conjunto de regras de uma linguagem e.g. se X e Y são expressões válidas, então X+Y é uma expressão válida e.g. Cuidado com o degrau é uma expressão sintacticamente válida em Português. Degrau com cuidado o não é uma expressão válida.

Fundamentos da Linguagem Semântica Significado da linguagem e.g. X+Y denota a soma de X com Y e.g. O que quer dizer Cuidado com o degrau? Quer dizer (interpretação literal) que devemos ter cuidado com um degrau. Mas podem existir outras interpretações...

Fundamentos da Linguagem Pragmática Significado em função do contexto: nova interpretação O que quer dizer Cuidado com o degrau se soubermos que degrau é o nome de um cão?

Modelo de Comunicação

Etapas na Comunicação Intenção: S (speaker) quer informar H (hearer) sobre P (proposition) A Maria quer pedir ao Pedro que abra a porta à sua amiga Berta Geração: S selecciona palavras W (words) para exprimir P no contexto C A Maria escolhe as palavras a usar para fazer o seu pedido Síntese: S emite palavras W A Maria diz: Pedro, por favor, abre a porta à Berta...

Etapas na Comunicação Percepção: H percebe W no contexto C Pedro percebe: Abre a porta aberta Análise: H infere possíveis significados P 1,,P n Pedro fica a pensar o que a Maria quer dizer: abrir a porta aberta ou... Abrir a porta à Berta. Esta fase inclui interpretação sintáctica (parsing), interpretação semântica e interpretação pragmática Desambiguação: H infere significado pretendido P i A porta está fechada e estão à espera da Berta, pelo que o Pedro percebe que a Maria lhe pediu para abrir a porta à Berta Incorporação: H incorpora P i na BC (Base de Conhecimento) Pedro compreende que lhe foi pedido para abrir a porta à Berta

Comunicação: exemplo

Sumário Comunicação Gramáticas Análise sintáctica (Parsing)

Gramática Formal G = (N, T, S0, P) N é o conjunto de símbolos não terminais T é o conjunto de símbolos terminais S0 é símbolo inicial P é um conjunto de regras de produção

Gramática Formal A maior parte dos formalismos gramaticais são baseados na ideia de que certas sequências de palavras formam sequências com diferentes categorias (sintagmas, phrases) que combinados formam frases (S, Sentence) Considerando o formato BNF (Bachus-Naur Form) uma regra de uma gramática poderá ter a forma: S NP VP» S é o símbolo de frase» S, NP e VP são símbolos não terminais» NP, Noun Phrase» VP, Verb Phrase NP Article Name VP Verb

Construção de Gramáticas Léxico: palavras permitidas na linguagem Agrupadas em classes (ou categorias): pronomes, artigos, nomes, verbos, etc. Classes abertas: Não é possível listar todos os elementos ou novos elementos são adicionados frequentemente» Ex: kunami Nomes, verbos, adjectivos, advérbios Classes fechadas: Os seus elementos podem ser enumerados; evolução a longo prazo Pronomes, artigos, proposições, conjunções

Léxico do Wumpus (linguagem ε 0 )

Gramática do Wumpus

Classificação de gramáticas Gramáticas são classificadas em função da capacidade gerativa (linguagens que podem representar) Supondo α, β, δ sequência de símbolos terminais e não terminais A, B símbolos não terminais a, b símbolos terminais As gramáticas regulares têm regras da forma: A B a a B ε ex: S as a As gramáticas livres de contexto têm regras da forma: A α ex: S asb as Sb a As gramáticas sensíveis ao contexto têm regras da forma: αaβ α δ β As gramáticas recursivamente enumeráveis não têm restrições nas regras Foi demonstrado que quase todas as línguas naturais podem ser caracterizadas por gramáticas livres de contexto

Avaliação de Gramáticas Linguagem formal L 1 pode diferir da linguagem natural L 2 Ajustar L 2 para ficar semelhante a L 1 é um problema de aprendizagem!

Avaliação de Gramáticas Problemas Supergeração: geração de frases incorrectas Me go Boston Subgeração: não é possível gerar frases que estão correctas I think the wumpus is smelly

Sumário Comunicação Gramática Análise sintáctica (Parsing)

Análise sintáctica: parsing Processo que gera uma árvore de parsing para os dados de entrada PARSE( I shoot the wumpus, ε 0, S) ε 0 é o léxico S é o símbolo inicial Parsing (básico) Top-down Começar com S como raiz da árvore; gerar árvore com palavras como folhas Bottom-up Começar com palavras como folhas

Parsing top-down Estado inicial [S:?] Função sucessores Selecciona o nó aberto mais à esquerda na árvore Procura regras cujo símbolo do lado esquerdo corresponda a esse nó Por cada regra cria um sucessor onde? é substituído pelo lado direito da regra correspondente Teste objectivo Folhas correspondem exactamente aos dados de entrada Nenhuma palavra dos dados de entrada está em aberto ou é desconhecida

Parsing top-down Exemplo Considerando a gramática do Wumpus, temos S -> NP VP S Conjunction S Para qualquer input, o primeiro passo de um algoritmo top-down é: [S: [NP:?][VP:?]] [S: [S:?][Conjunction:?][S:?]] Nota: [A:?] representa um símbolo não terminal ainda em aberto

Parsing bottom-up Estado inicial: Lista de palavras nos dados de entrada Função sucessores Procura emparelhar lado direito de uma regra com cada posição na lista Teste objectivo: Estado com uma única árvore com S na raiz

Parsing bottom-up Exemplo: I shoot the wumpus [I,shoot,the,wumpus] Dado que na gramática temos Pronoun I Cria-se a entrada [[Pronoun: I],shoot,the,wumpus]... [S:[NP:[Pronoun: I]][VP:[VP:[Verb:shoot]][NP:[Article:the][Noun:wumpus]]]]

Árvore de parsing Após uma análise top-down ou bottom-up, se a frase em análise pertencer à linguagem aceite pela gramática em causa, é criada pelo menos uma árvore de análise/parsing.

Árvore de Parsing (construída por um algoritmo bottom-up)

Árvore de Parsing (construída por um algoritmo bottom-up)

Árvore de Parsing (construída por um algoritmo bottom-up)

Árvore de Parsing (construída por um algoritmo bottom-up)

Árvore de Parsing (construída por um algoritmo bottom-up)

Parsing canto-esquerdo Caso particular de parser top-down, que opera da esquerda para a direita Inicialmente é feita uma recolha de todos os símbolos não terminais directamente ligados aos terminais que podem aparecer no canto esquerdo, numa análise feita a partir de S Ex: S -> NP VP VP NP -> Article Noun Pronoun VP -> Verb VP NP A partir de S consigo obter à esquerda: Article, Noun, Verb Assim evitamos ciclos infinitos derivados de regras X -> X

Análise sintáctica Quer a análise bottom-up quer a top-down têm os seus problemas: A bottom-up pode estar a construir sub-árvores que não levam ao símbolo inicial A top-down pode estar a construir sub-árvores que não levam aos símbolos terminais O parser canto esquerdo sempre resolve este problema Em qualquer dos casos podem haver redundâncias nos cálculos, pois sub-árvores que já foram construídas uma vez, voltam a sê-lo

Chart Parser Ideia base é um exemplo de programação dinâmica Cada vez que analisamos uma palavra guardamos o resultado num diagrama para não ser necessário analisá-la novamente Combina vantagens do parsing bottom-up com vantagens do parsing top-down Diagrama para uma frase de n-palavras consiste em n+1 vértices e um número de arcos que faz a ligação entre vértices

Chart Parser 6 vértices e 3 arcos Arco [0,5, S NP VP ] significa que a combinação de NP seguido por VP dá origem a S que abrange as palavras de 0 a 5 Símbolo separa o que já foi encontrado do que falta encontrar Arcos com símbolo no final são arcos completos

Chart Parser Função Chart-Parse(palavras,gramática) devolve diagrama diagrama array[0..comp(palavras)] de listas vazias AdicionaArco([0,0, S S]) para i 0:COMP(palavras) Scanner(i,palavras[i]) devolve diagrama Função AdicionaArco(arco) /* Adiciona arco ao diagrama, e vê se estende ou prediz outro arco.*/ se arco não está em diagrama[fim(arco)] junta arco a diagrama[fim(arco)] se arco não tem nada depois de então Estende(arco) senão Prediz(arco)

Chart Parser Função Scanner(j,palavra) bottom-up /* Cada arco à espera de uma palavra desta categoria é estendido.*/ para cada [i, j, A α B β] em diagrama[i] se palavra é da categoria de B então AdicionaArco([i, j+1, A α B β]) Função Prediz([i, j, A α B β] ) top-down /* Adiciona ao diagrama as regras para B que podem estender este arco.*/ para cada (B γ ) em RegraPara(B,gramática) AdicionaArco([j, j, B γ]) Função Estende([j, k, B γ ] ) /* Vê que arcos podem ser estendidos por este arco.*/ ε B arco recebido como argumento para cada [i, j, A α B β] em diagrama[j] se B=B então AdicionaArco([i, k, A α ε B β] bottom-up

Chart Parser Arcos completos Arcos incompletos

Chart Parser: exemplo Arco Função Derivação a b c d e f g h i j k l m Inicialização Prediz(a) Prediz(b) Scanner(c) Estende(b,d) Prediz(e) Prediz(e) Scanner(f) Estende(g,h) Prediz(g) Scanner(j) Estende(i,k) Estende(e,l) [0,0, S S] [0,0, S NP VP] [0,0, NP Pronoun] [0,1, NP Pronoun ] [0,1, S NP VP] [1,1, VP Verb] [1,1, VP VP NP] [1,2, VP Verb ] [1,2, VP VP NP] [2,2, NP Pronoun] [2,3, NP Pronoun ] [1,3, VP VP NP ] [0,3, S NP VP ]

Chart Parser Requer espaço e tempo polinomial Espaço O(kn 2 ) para guardar arcos n é o número de palavras k é uma constante que depende da gramática O algoritmo termina quando já não pode construir mais arcos Tempo O(n 3 ) no pior caso Estende é a função mais pesada (O(n 3 ))

Índice (cont.) Extensão do formalismo gramatical Definite Clause Grammars (DCGs) Semântica Pragmática Ambiguidade Desambiguiação Discurso Conclusões

Extensão do formalismo gramatical Considere-se a seguinte gramática para um pequeno fragmento do Português: Frase SN SV // SN sintagma nominal, SV verbal SN nome det nome // det determinante SV vi vt SN // vi, verbos intransitivos, vt transitivos nome sumo Maria det a vt bebe vi fugiu vi fugiram

Extensão do formalismo gramatical Fazem parte desta gramática frases como: A Maria bebe sumo A Maria fugiu Mas também: A Maria bebe a sumo A Maria fugiram Casos como A Maria bebe a sumo e A Maria fugiram não são correctos porque: No primeiro caso não há concordância em género entre o determinante a (feminino) e o nome comum sumo (masculino) No segundo caso não há concordância em número entre o sujeito A Maria (singular) e o predicado fugiram (plural).

Extensão do formalismo gramatical Uma maneira de resolver este problema é: Adicionar novas categorias: Por exemplo, nome passa a nome-fs, nome-ms, nome-fp, nome-mp f/m para feminino/masculino, s/p para singular/plural E reescrever as regras: Por exemplo, SN nome det nome passa a SN-ms nome-ms det-ms nome-ms SN-mp nome-mp det-mp nome-mp Etc. Só que esta abordagem multiplica o número de regras e símbolos e torna a gramática muito complicada

Extensão do formalismo gramatical Uma maneira alternativa consiste em estender o formalismo gramatical (augmented grammars): Por exemplo, SN nome det nome passa simplesmente a SN(NUM, GEN) nome(num, GEN) det(num, GEN) nome (NUM, GEN) Indicando que: O nome e o determinante têm de concordar em género e número O SN tem NUM como número e GEN como género.

Índice Extensão do formalismo gramatical Definite Clause Grammars Semântica Pragmática Ambiguidade Desambiguiação Discurso Conclusões

Definite Clause Grammars As DCG (Definite Clause Grammars) são uma extensão do Prolog que permite implementações directas de gramáticas aumentadas. De seguida vamos ver como usar DCG como um formalismo gramatical e, posteriormente, como uma gramática que também permite concordâncias.

Regras gramaticais Considere-se a gramática anterior, ligeiramente simplificada: Frase SN SV // SN sintagma nominal, SV verbal SN nome det nome // det para determinante SV vi vt SN // vi para verbos intransitivos, vt transitivos nome sumo Maria det a vt bebe vi fugiu

Símbolos terminais e não terminais Como é sabido, numa gramática alguns símbolos são usados para indicar a estrutura da língua (símbolos não terminais); outros correspondem a palavras usadas para comunicar (símbolos terminais). Exemplo: Não terminais: SN, nome, vt, etc. Terminais: Maria, sumo, fugiu, etc.

Regras gramaticais em Prolog O Prologo permite implementar gramáticas deste tipo directamente: No lugar de usar --> Separar os não terminais do lado direito por vírgulas Pôr um ponto final no fim de cada regra Colocar os terminais entre parêntesis rectos (não esquecer de usar plicas para os símbolo terminais que se iniciam com maiúsculas) Não usar maiúsculas na primeira letra dos símbolos não terminais

Exemplo A gramática anterior, corresponde então, em Prolog a: Ficheiro dcg.txt frase --> sn, sv. sn --> nome. sn --> det, nome. sv --> vi. sv --> vt, sn. nome --> [sumo]. nome --> [ Maria ]. det --> [a]. vt --> [bebe]. vi --> [fugiu].

E como é que o Prolog processa estas regras? O Prolog converte as regras DCG numa representação interna que as transforma em cláusulas Prolog tradicionais. Assim: aos símbolos não terminais são dados dois argumentos adicionais: Exemplo: frase --> sn, sv. passa a frase(in, Out) :- sn(in, TMP), sv(tmp, Out). Ou seja, uma sequência de símbolos In pode ser reconhecida como uma frase, devolvendo Out como o resto, se: Um sn for encontrado no início de In, deixando TMP como resto; Um sv for encontrado no início de TMP deixando Out como resto.

E como é que o Prolog processa estas regras? (cont) Os símbolos terminais são representados através de um predicado especial C, com três argumentos. Exemplo: nome --> [ Maria ]. passa a nome(in, Out) :- C (In, Maria, Out). Ou seja, uma sequência de símbolos In pode ser reconhecida como uma nome, devolvendo Out como o resto, se: O símbolo Maria for encontrado no início de In, deixando Out como resto.

O Predicado C Na verdade, o predicado 'C' é definido simplesmente do seguinte modo: 'C'( [Term List], Term, List ). Tendo sucesso se o seu segundo argumento é a cabeça do seu primeiro argumento e se o terceiro argumento é o resto.

Aplicações Podemos usar uma DCG como um reconhecedor: Para saber se a Maria fugiu faz parte da linguagem:?- frase([a, Maria, fugiu], []). Yes Para saber quem pode fugir :?-frase([x, fugiu], []). X = sumo ; X = 'Maria' ; No Para saber quais as frases possíveis da linguagem:?- frase(x, []).

Aplicações?- ['dcg.txt']. % dcg.txt compiled 0.00 sec, 0 bytes Yes?- frase(x, []) X = [sumo, fugiu] ; X = [sumo, bebe, sumo] ; X = [sumo, bebe, 'Maria'] ; X = [sumo, bebe, a, sumo] ; X = [sumo, bebe, a, 'Maria'] ; X = ['Maria', fugiu] ;.. X = [a, sumo, fugiu] ;.. X = [a, 'Maria', fugiu] ;.. X = [a, 'Maria', bebe, a, 'Maria']?-

Concordância Como se viu, pode ser útil obrigar a que exista concordância (por exemplo em género e/ou número) entre alguns elementos da gramática. Por exemplo a sumo não deveria ser um sn aceite pela gramática, dado que não há concordância em género entre o determinante feminino a e o nome masculino sumo

Concordância - Exemplo A gramática anterior pode então ser estendida do seguinte modo frase --> sn(_,num), sv(num). sn(gen, NUM) --> nome(gen,num). sn(gen, NUM) --> det(gen,num), nome(gen,num). sv(num) --> vi(num). sv(num) --> vt(num), sn(_, _). // ver Nota abaixo nome(masc, sing) --> [sumo]. nome(fem, sing) --> [ Maria ]. det(fem, sing) --> [a]. vt(sing) --> [bebe]. vi(sing) --> [fugiu]. Nota:» O Complemento directo não tem de concordar com o verbo transitivo

Concordância - Exemplo?- frase(x, []). X = [sumo, fugiu] ; X = [sumo, bebe, sumo] ; X = [sumo, bebe, 'Maria'] ; X = [sumo, bebe, a, 'Maria'] ; X = ['Maria', fugiu] ; X = ['Maria', bebe, sumo] ; X = ['Maria', bebe, 'Maria'] ; X = ['Maria', bebe, a, 'Maria'] ; X = [a, 'Maria', fugiu] ; X = [a, 'Maria', bebe, sumo] ; X = [a, 'Maria', bebe, 'Maria'] ; X = [a, 'Maria', bebe, a, 'Maria']?- frase([a, X, fugiu], []). X = 'Maria' ; No

Adicionando objectivos em Prolog Podem ser adicionados objectivos em Prolog às regras gramaticais. Colocados dentro de chavetas { } de modo a que o Prolog saiba que não devem ser processados como fazendo parte integrante da DCG.

Adicionando objectivos em Prolog Suponhamos que queríamos dizer que um símbolo num1a100 tem de ser um inteiro entre 1 e 100, inclusivamente. Pode ser escrita uma regra para cada número: num1a100 --> [1]. num1a100 --> [2].... num1a100 --> [100]. mas usando um objectivo em Prolog, é muito mais fácil: num1a100 --> [X], {integer(x), X >= 1, X =< 100}.

E mais? Podem-se usar DCGs para fazer mais do que reconhecimento: Podem usar-se DCGs para fazer análise (parsing) de frase.

Parsing com DCGs O método mais popular de parsing com DCGs recorre ao conceito de unificação para identificar o papel gramatical de cada palavra e mostra como estas devem ser combinadas em estruturas gramaticais maiores. Exemplo: frase(f(sn,sv)) --> sn(sn), sv(sv). Indica que a estrutura analisada de uma frase é dada por f(sn, SV) em que: SN é a estrutura analisada de um sn SV é a estrututa analisada de um sv Note-se que as regras para os sn e sv também têm de ser estendidas.

Exemplo Continuando com a nossa gramática frase(f1(sn,sv)) --> sn(sn,_,num), sv(sv,num). sn(sn1(n), GEN, NUM) --> nome(n, GEN,NUM). sn(sn1(d, N), GEN, NUM) --> det(d, GEN,NUM), nome(n, GEN,NUM). sv(sv1(v), NUM) --> vi(v, NUM). sv(sv1(v,sn), NUM) --> vt(v, NUM), sn(sn, _,_). nome(ncms(sumo), masc, sing) --> [sumo]. nome(ncfs('maria'), fem, sing) --> ['Maria']. det(detfs(a), fem, sing) --> [a]. vt(v(bebe), sing) --> [bebe]. vi(v(fugiu), sing) --> [fugiu].

Exemplo (2)?- frase(x, [a, 'Maria', fugiu], []). X = f1(sn1(detfs(a), ncfs('maria')), sv1(v(fugiu))) ; No?- frase(x, [a, 'Maria', bebe, sumo], []). X = f1(sn1(detfm(a), ncfs('maria')), sv1(v(bebe), sn1(ncms(sumo)))) ; No?- frase(x, [a, sumo, fugiu], []). No

Indução de gramáticas Para concluir a etapa dedicada às gramáticas, há ainda que explicar que nem todas as gramáticas são construídas à mão. Por vezes são induzidas baseadas em dados.

Índice Extensão do formalismo gramatical Definite Clause Grammars Semântica Pragmática Ambiguidade Desambiguiação Discurso Conclusões

Semântica Considere-se a frase O João adora alface. Uma maneira de representar esta informação é adora(joão, alface). Esta representação lógica pode ser vista como a semântica (significado literal) de O João adora alface.

Semântica A grande questão aqui é: Como mapear aquela frase no seu significado? Ou, mais genericamente, como mapear frases em Português (ou outra língua qualquer) na sua representação? Para isto há que responder às seguintes perguntas: Que representação atribuir às palavras? Qual a semântica de adora? E de João? E de o? Que representação atribuir às sequências de palavras? Qual a semântica de adora a Maria? Como combinar estes elementos de modo a obter a semântica final desejada?

Semântica Ao processo de mapear uma frase na sua representação chamamos análise semântica. A semântica a atribuir às palavras depende obviamente do modo como se decide representar o significado. O processo de análise semântica pode ser variado. Vamos ver de seguida um processo tradicional de análise semântica, baseado no princípio da composicionalidade, em que a semântica dos constituintes é calculada com base na semântica das palavras e em regras semânticas associadas a regras sintácticas.

Análise Semântica Uma maneira de fazer isto é usar cálculo-λ. Exemplo (x.sem representa a semântica associada a x): Frase -> SN SV {SV.sem (SN.sem)} SN -> det nome {nome.sem} SV -> v SN {v.sem (SN.sem)} nome -> João {JOÃO} Maria {MARIA} v -> adora {λx λy adora(y, x)} De acordo com as regras semânticas e com o léxico a semântica de a Maria (e de o João) é MARIA (e JOÃO). A semântica de adora a Maria é λx λy adora(y, x) (MARIA) = λy adora(y, MARIA). A semântica de O João adora a Maria é: λy adora(y, MARIA)(JOÃO) = adora(joão, MARIA).

Vincent likes Mia Exemplo S LIKES(VINCENT,MIA) NP VP V Vincent VINCENT likes LIKES(?,?) LIKES(?,MIA) NP Mia MIA

Pragmática Na análise semântica obtém-se uma possível representação para o significado literal de uma frase. A interpretação no domínio da pragmática já tem em conta o contexto. Por exemplo, palavras como Eu e ontem só são correctamente interpretáveis sabendo quem disse a frase e quando.

Discurso Um discurso é uma estrutura de sequência de frases de uma linguagem. Existem dois casos de estudo particularmente interessantes numa análise do discurso: Resolução de referência Detecção de relações de coerência

Discurso Resolução de referência Consiste na interpretação de um pronome (anáfora) ou de um sintagma nominal definido que se refere a um objecto no mundo. O João declarou-se à Maria e casaram-se. Eles foram passar a lua de mel na China. Eles = O João e a Maria O João declarou-se à Maria, arranjaram um padre e casaram-se. Eles foram passar a lua de mel na China. Eles = O João, a Maria e o Padre? Ups!

Discurso Detecção de relações de coerência Vários investigadores fizeram propostas de diferentes relações de coerência, tais como: Explicação: Cheguei tarde à escola. É que adormeci. Violação de expectativas: Esta aula é uma seca. No entanto, até estou a aprender umas coisas... Causa: Tomei um duche. Depois sequei o cabelo.» Secar o cabelo deriva do duche....

Ambiguidade Na maior parte das vezes, conseguimos comunicar sem nos apercebermos da ambiguidade presente nas frases que utilizamos. Nos anos 60, quando se fizeram as primeiras análises de língua natural por computador, os investigadores ficaram espantados com a quantidade de ambiguidade presente em quase tudo o que é dito.

Ambiguidade São várias as fontes de ambiguidade: Ambiguidade lexical: Palavras ambíguas Ex: Banco de jardim, banco instituição bancária. Ambiguidade sintáctica ou estrutural: Pode ocorrer com ou sem ambiguidade lexical Ex: Vi o homem no monte com o telescópio. Quem tem o telescópio? Quem estava no monte? Ambiguidade semântica: Pode ocorrer até em frases sem ambiguidade sintáctica ou lexical Por vezes, são aqui incluídas as expressões idiomáticas Bater as botas

Desambiguar Desambiguar é um processo de diagnóstico que consiste em determinar uma única interpetação para o que foi dito. Este processo usa informação de várias fontes incluído acústicas. Por exemplo, se alguém disser O Professor não corrigiu um exame, a interpretação pode variar entre: O Professor corrigiu tudo e só lhe falta mesmo corrigir um último exame O Professor não corrigiu um único exame O modo como a frase é dita vai ser fundamental para o processo de desambiguação.

Conclusões A área de comunicação (processamento de língua natural) é uma importante área do ramo de IA. Sintaxe, semântica, pragmática são alguns dos ingredientes em jogo. A ambiguidade da língua natural faz com que formalismos/técnicas usadas para línguas formais não tenham grande sucesso. São inúmeras as aplicações nesta área: Sistemas de pergunta/resposta Sistema de diálogo Sistemas de tradução automática Sumarização...

Slides adaptados a partir de: www.inf.ed.ac.uk/teaching/courses/aipp/lectur e_slides/11_ps_dcgs.ppt www.inf.ed.ac.uk/teaching/courses/aipp/lectur e_slides/10_dcg.ppt http://www.cse.nd.edu/courses/cse571/www/p resentations/chap22.pdf