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