Linguagens e Programação Ano Lectivo 2006/2007 Relatório Trabalho Teórico Linguagem Natural Trabalho realizado por: Paulo Jorge Morais Costa - 1000334 Linguagens e Programação – 2006/2007 Índice 1 – Introdução 2 – Compreender a Linguagem Natural 3 – Linguagem Natural vs. Linguagem Artificial 4 – Níveis de PLN 5 – Conclusão 6 - Bibliografia Trabalho Teórico pág. 2/19 4 5 10 14 17 19 Linguagens e Programação – 2006/2007 “Furthermore, just to underline the difficulties described here, we need only point out that any attempt to give a complete description of a language is doomed to failure.” Annie Gal et al. Prolog For Natural Language Processing Trabalho Teórico pág. 3/19 Linguagens e Programação – 2006/2007 1-Introdução Tem como objectivo o presente relatório, ser o trabalho teórico da disciplina de Linguagens e Programação que decorre no 2º semestre de 2006/2007. Este trabalho consiste em pesquisar sobre um determinado tema. Sobre o tema escolhido – Linguagem Natural (LN) – é pedido que se faça um ponto de situação e que se perspective sobre o mesmo e a sua relação com as linguagens formais. Basicamente sobre LN todas as fontes estudadas são muito breves e, o tema é sobretudo relacionado com Inteligência Artificial (IA) conforme é salientado no enunciado. Além do mais, e apesar das várias técnicas com que a LN é associada, a mais clara e pertinente é feita com o Processamento de Linguagem Natural (PLN) em que mais do que se falar sobre LN, descreve-se como esta é entendida, interligada e trabalhada com as linguagens artificiais. Os objectivos de pesquisa em LN cobrem principalmente as seguintes áreas: Desenvolver e modelar sistemas linguísticos Conceber e implementar modelos e sistemas de PLN Avaliar tais sistemas do ponto de vista de interface Homem-Máquina Sobretudo, e tendo em conta o conteúdo programático da disciplina Linguagens e Programação, é a utilização de métodos para analisar expressões bem formadas numa qualquer Linguagem Artificial (LA). Trabalho Teórico pág. 4/19 Linguagens e Programação – 2006/2007 2 – Compreender a Linguagem Natural Segundo a descrição fornecida pela Wikipedia a linguagem natural é uma linguagem que é falada, escrita ou sinalizada (visual ou gestualmente) por seres humanos para efeitos de comunicação, assim como é distinguida das linguagens de programação para computadores ou as “linguagens” utilizadas no estudo de lógica formal, especialmente matemática lógica. Esta perspectiva que nada traz de novo na medida em que os seres humanos usam várias formas de comunicar entre si (visual, gestual ou verbalmente) desde os primórdios da humanidade, salienta o facto de existir uma distinção entre a LN e as várias linguagens artificiais, tais como as linguagens de programação ou as linguagens matemáticas que estão na base da tecnologia conhecida como Inteligência Artificial. Se, de facto, existem linguagens artificiais que os computadores conseguem processar, trata-se de uma viciação pois os computadores são capazes de comunicar aquilo que estão programados à priori para transmitir. A Linguagem Natural é utilizada para aplicações tais como: Compreensão de frases isoladas Compreensão de texto Geração de texto Tradução automática Apoio a interfaces com o utilizador Interface com Linguagens de Interrogação de Bases de Dados O que se pode entender como compreender uma linguagem natural? Na utilização de uma língua estão ímplicitos processos cognitivos complexos onde são empregues grandes quantidades de conhecimento – do domínio e da língua – mesmo quando são utilizadas frases simples. Trabalho Teórico pág. 5/19 Linguagens e Programação – 2006/2007 Um computador tem que ser capaz de analisar a forma, ou seja, a sintaxe das frases para poder processar uma linguagem. Porém, e apesar de já ser uma operação atómica é por si só, insuficiente. O nível dos significados, ou semântica, é de vital importância. Uma capacidade mais interessante terá também em conta o nível pragmático onde é verificado o significado em contexto. Pode-se efectuar uma associação neste momento às linguagens formais tendo como referência que “A compreensão de uma linguagem natural abarca duas direcções fundamentais do fluxo de informação: Análise e Síntese.” (Helder Coelho, 1995) e com a descrição leccionada nas aulas até ao momento: Tal como é leccionado na disciplina de Linguagens e Programação um compilador lê de uma fonte uma determinada linguagem (de baixo ou de alto nível) processa os tokens na análise léxica, “constrói” uma árvore de parse (na realidade pode não construir, mas para todos os efeitos a árvore de parse existe nem que seja de uma forma abstracta) e faz uma análise de semântica. Todo este processo faz parte da Trabalho Teórico pág. 6/19 Linguagens e Programação – 2006/2007 análise. Terminadas estas etapas e partindo do princípio que foi introduzido através do ficheiro fonte a linguagem correctamente, é gerado código intermédio para ser interpretado na fase de síntese. No entanto, a compreensão de uma LN como o Português complica-se pois estes três níveis (sintáctico, semântico e pragmático) têm ligações entre si; certos fenómenos linguísticos (omissões ou elipses e referências ou anáforas de palavras) não se podem classificar apenas no nível de sintaxe ou no da semântica, e o significado de uma frase depende de conhecimento prévio, não contido explicitamente na frase. Qualquer máquina para a compreensão deve, pelo menos em teoria, ser capaz de responder à questão central da reversabilidade daquele fluxo. Mas existem várias questões que têm que ser ponderadas, em particular: o formalismo das representações (sistema lógico ou estrutural, via enquadramento ou guiões), o subconjunto da língua, a metodologia da compreensão, incluindo os fenómenos linguísticos a considerar (as elipses, anáforas, elisões...), a definição de quantificadores e a sua hierarquização, o formalismo e a técnica de descrição do aparelho gramatical, a eficiência e eficácia da maquinaria de análise sintáctica (“parsing”), de tradução e de avaliação, e a extensão da maquinaria cognitiva (detecção e reparação de erros, etc). Se a interacção entre o agente artificial e um ser humano não for uma sequência linear de pares pergunta-resposta, mas sim uma sequência não linear, próximo de uma conversa, então temos de ponderar também como as interacções serão governadas, do ponto de vista sintáctico, semântico e pragmático (gramáticas das formas de diálogo e discurso), o que implicará uma extensão ao formalismo adoptado numa maquinaria adicional com capacidade de planeamento, a gestão de contextos, a modelização dos interlocutores, a gestão das suas crenças, e ainda uma capacidade de encenação (gestão de cenários de conversa). Do ponto de vista metodológico mais simples, pode-se considerar que o processamento de frases do Português se reduz apenas a duas etapas: Tradução Avaliação semântica Trabalho Teórico pág. 7/19 Linguagens e Programação – 2006/2007 A primeira etapa – tradução – onde cada frase do ser humano utilizador é transformada numa lista de palavras e sinais de pontuação. Um teste revela se cada palavra é ou não reconhecida. Uma gramática de cláusulas definidas de um subconjunto do Português realiza a análise sintáctica e semântica sobre essa lista, do ponto de vista computacional, de modo a traduzi-la numa estrutura lógica (a representação do seu significado ou do modo como a entendemos). A gramática é uma extensão das gramáticas ditas de contexto livre, sendo capaz de extrair uma leitura apropriada, a partir de um conjunto de leitura possíveis e também reconhece se a frase de entrada pertence ou não pertence ao subconjunto do Português. A segunda etapa é a avaliação da estrutura lógica contra uma base de conhecimentos, e de acordo com um certo sistema lógico. Este sistema difere, em geral, da lógica de predicados, na medida em que os quantificadores adoptados para traduzir os determinantes (artigos) estão mais ajustados à semântica da linguagem natural, as variáveis podem denotar quer indivíduos ou conjuntos, e existe um terceiro valor de verdade “ambíguo”, além dos valores “verdadeiro” e “falso”. A compreensão de uma Linguagem Natural, como o Português, envolve a construção de um interface capaz de analisar a frase do ponto de vista linguístico (sintaxe e semântica) através da tradução de estruturas superficiais (cadeias de caracteres) em estruturas profundas (forma contendo a descrição do seu significado), de avaliar logicamente essas estruturas contra um certo mundo ou realidade (obtenção de um valor de verdade), e de sintetizar uma resposta apropriada. Estas tarefas levantam questões quanto à representação do conhecimento, às metodologias de análise e de síntese, e ainda aos instrumentos para o processamento simbólico que possam estar disponíveis. Em relação aos aspectos de análise (“parsing”) de uma linguagem e também sobre a concepção da maquinaria gramatical. Como traduzir uma regra tão simples como “uma frase reescreve-se como um Sintagma Nominal seguido por um Sintagma Verbal”? Em linguística adopta-se a notação geral das gramáticas livres de contexto e escrever-se-ía: frase --> SN e SV Trabalho Teórico pág. 8/19 Linguagens e Programação – 2006/2007 onde SN e SV são os símbolos não terminais correspondentes ao Sintagma Nominal e ao Sintagma Verbal, respectivamente. Trabalho Teórico pág. 9/19 Linguagens e Programação – 2006/2007 3 – Linguagem Natural vs. Linguagem Artificial As LA co-existem com as LN por vários séculos (pensando em lógica, por exemplo). Foram criadas por seres humanos por razões específicas e estão debaixo de completo controlo humano. As LA são sistemas simbólicos, e em alguns casos a metáfora da linguagem – a sintaxe e a semântica de LA – é um “bocado” enganadora. O objectivo de uma LA é – com ajuda de um vocabulário muito restricto e estruturas relativamente simples – descrever com precisão certas tarefas (e/ou fenómenos). Uma LA permite modelar e representar fenómenos num nível abstracto. Algumas qualidades são a não-ambiguidade e ausência de dados não explícitos. Cada palavra da linguagem tem de ter um significado único. A primeira diferença essencial é que a LN consiste num conjunto de frases bem construídas e indeterminadas, i.e., ninguém consegue caracterizar todas as frases de uma linguagem de uma maneira finita. Esta indeterminação também se pode considerar ao nível de uma LA que inclua recursividade mas o não-determinismo das LN ocorre em vários níveis: O vocabulário de uma LN não é completamente conhecido, em particular por causa de vocabulários especializados (técnico, médico,...) O conjunto de construções semânticas não é totalmente determinado O conjunto de sentidos atribuidos a cada palavra não está predeterminado especialmente porque uma palavra muitas vezes não tem um significado preciso fora de um contexto particular. Uma consequência deste tipo de dificuldades é que, os sistemas de PLN podem tratar apenas um subconjunto de LN muito restricto e muito bem definido semanticamente. É necessário também ter em conta o aspecto evolutivo de uma LN caracterizado por fenómenos tais como: Trabalho Teórico pág. 10/19 Linguagens e Programação – 2006/2007 Invenção de novas palavras Conjugação de novas frases Palavras que deixam de ser utilizadas Frases que deixam de ser utilizadas Sendo que muitas palavras e frases muitas vezes têm um tempo de vida muito curto, ou seja “são moda” durante um breve período de tempo. Na LA as regras e palavras têm que estar previamente definidas. Numa LN as palavras e/ou frases podem ser “inventadas” em qualquer altura (as frases “bué de engraçado” ou “basar daqui para fora” são dois exemplos das mais recentes alterações do vocabulário da língua nacional) sendo que após a adopção popular das ditas palavras e frases estas são incluidas e registadas no vocabulário da linguagem. A questão da robustez também tem que ser levada em conta. Uma frase em LN pode ser semanticamente incorrecta e no entanto é compreendida; num sistema computacional iria conduzir a um erro de compilação, à suspensão das tarefas em execução mesmo em sistemas com capaciadade de recuperação de erros sofisticada. A existência de ambiguidades numa LN é a principal causa de uma série de problemas complexos. Tais ambiguidades que podem ocorrer em níveis diferentes de linguagem, e que para os seres humanos muitas vezes se apercebem da existência das mesmas pois a interpretação dessas frases parece óbvia. Tal situação ocorre pois os seres humanos conseguem através de outros mecanismos resolver as ambiguidades de uma maneira natural. Tal mecanismo de resolução de ambiguidades é de impossível implementação quando se trata de criar uma máquina para analisar frases. Seria necessário dotar a máquina de capacidades como senso comum ou conhecimento geral que ajuda os seres humanos a resolver as ambiguidades. E como se poderia estruturar o senso comum, isto para não mencionar factores como: ➢ Incerteza ➢ Preferências ➢ Credos (políticos e/ou religiosos) Pode-se catologar a ambiguidade em dois tipos: ambiguidade lexica e ambiguidade sintáctica. Trabalho Teórico pág. 11/19 Linguagens e Programação – 2006/2007 Na ambiguidade lexica a homografia é o exemplo mais evidente: existem palavras que se escrevem e pronunciam exactamente da mesma maneira e no entanto têm significados completamente diferentes. Exemplo: O João casa com a Maria. O João foi para casa. A ambiguidade sintactica é muito comum: O homem viu a rapariga com o telescópio. Este género de frases levanta dúvidas do género: Quem estava com o telescópio? Mesmo para seres humanos e sem outros elementos para ajudar a perceber o contexto, é difícil de perceber quem estava com o telescópio, se o homem ou a rapariga... Uma diferença importante entre LN e LA é a presença de elementos implícitos. Numa frase alguma informação é compreendida ou absorvida como uma contracção, para evitar repetições aborrecidas, por exemplo: Sócrates prometeu que ele iria criar 150.000 novos postos de trabalho. Nesta frase, o pronome ele pode representar o nosso actual primeiro ministro ou alguém por quem o primeiro ministro é responsável. Outro exemplo de significado implícito na LN é a existência de elipses. Uma estrutura usada numa frase é omitida em vez de ser repetida. Trabalho Teórico pág. 12/19 Linguagens e Programação – 2006/2007 O João vai jantar com a Maria amanhã à noite e o Paulo com a Susana. em que a segunda parte da frase é entendida como: ... e o Paulo vai jantar com a Susana amanhã à noite. Trabalho Teórico pág. 13/19 Linguagens e Programação – 2006/2007 4 – Níveis de PLN Existem vários níveis sobre os quais uma LN pode ser processada: ➢ Nível fonético ➢ Nível fonológico ➢ Nível morfológico ➢ Nível léxico ➢ Nível sintáctico ➢ Nível semântico ➢ Nível pragmático O nível fonético ocupa-se da composição do som de discurso e corresponde principalmente em associações entre sinais de fala e a que sons esses sinais devem corresponder. Basicamente trata-se da percepção e produção de sons. O nível fonológico tem a ver (em linguística) com o estudo do sistema sonoro de um idioma. A maneira como os sons combinam para formar palavras e frases. Existem conjuntos de regras bem precisas que descrevem como pronunciar um texto escrito que é a síntese do discurso – ou como transvcrever uma sequência de sons – reconhecimento do discurso. O nível morfológico lida com a forma das palavras numa frase: conjugações verbais, plurais de substantivos. Este nível também lida com aspectos mais complexos tais como as palavras que podem derivar de outras palavras: adjectivos de substantivos coragem > corajoso ou nomalizações de verbos: Trabalho Teórico pág. 14/19 Linguagens e Programação – 2006/2007 pintar > pintor, pintando O conjunto de palavras de uma linguagem é armazenada no que é conhecido como vocabulário ou léxico. As diferentes formas morfológicas de uma palavra são acessíveis por regras morfológicas, ou seja, inflexões ou formas derivadas podem ser analisadas ou geradas pela aplicação dessas regras. Pode acontecer que certas formas já existam no vocabulário o que irá indicar a informação associada, assim como a palavra-mãe das quais são derivadas. O nível léxico trata-se do conjunto de palavras de uma linguagem. Estas palavras podem ser classificadas em categorias tais como: ➢ Substantivos ➢ Adjectivos ➢ Verbos ➢ Conjunções ➢ Advérbios ➢ Preposições ➢ Interjeições O nível sintáctico tem a ver com a combinação possível das palavras para formar frases correctas. Existem muitas maneiras de escrever as regras de acordo com as quais as frases podem ser formadas, correspondendo as descrições informais fornecidas por livros gramaticais para línguas estrangeiras de uma forma ge(ne)rativa transformacional desenvolvida por Chomsky. O nível semântico lida com o significado das palavras, grupos de palavras e frases. É muitas vezes relacionado com o nível pragmático que lida com a relação entre a capacidade de discursar ou frases e o seu contexto sócio-cultural. Cada palavra, no nível léxico, está associado a representações semânticas que podem variar de teoria para teoria. Por exemplo nas linguagens lógicas o estudo da representação semântica corresponde às equações em lógicas formais, consistindo em constantes, predicados e Trabalho Teórico pág. 15/19 Linguagens e Programação – 2006/2007 fórmulas. As regras de composição semântica estão associadas com regras sintácticas e descrevem como a representação interna de uma construção pode ser deduzida ou calculada a partir das sub-estruturas de que essa estrutura é composta (também conhecido como princípio da proporcionalidade). Quando este cálculo tem mais que uma solução ou resultado (ambiguidade sintáctica), elementos para lá da estrutura são levados em conta. Factores como a posição de outras palavras na frase, ou regras ou até senso comum. O componente pragmático tem o trabalho de localizar uma frase no seu contexto, que pode ser um texto, uma conversação. Este componente utiliza elementos muito complexos. Existem vários elementos empíricos inspirados directamente por psicologia cognitiva as quais são relativamente eficientes mas cuja portabilidade para outras áreas de aplicação é ineficiente ou mesmo impraticável. Trabalho Teórico pág. 16/19 Linguagens e Programação – 2006/2007 8 – Conclusão Relacionar as Linguagens Formais com uma qualquer Linguagem Natural é tentar perceber como funciona uma LN em si. É conseguido ao nível de uma quantificação de palavras contidas num vocabulário ou léxico, que – no caso das linguagens formais – tem que ser finito. Os verdadeiros problemas têm a ver com as várias possibilidades de trabalhar cada palavra presente no vocabulário da linguagem. Além das análises (sobretudo no que toca às linguagens formais - sintáctica, semântica e pragmática) é possível a escrita de gramáticas que através de árvores de identificação (“parsing”) permitem “dissecar” cada frase. Frase SN SV SN Artigo Nome SN Nome SV Verbo SN SV Verbo Artigo o | a Nome rapaz | Maria | bola Verbo conhece | joga Esta gramática pode originar a seguinte árvore de parsing: Trabalho Teórico pág. 17/19 Linguagens e Programação – 2006/2007 Trata-se de um caso particular de uma Gramática Livre de Contexto (CFG- Context Free Grammar), que são definidas na forma Backus-Naur. Dotar os computadores de capacidade para entender e processar a LN é uma tarefa que não só durará várias décadas como – e é minha opinião pessoal – nunca serão os computadores a processar a LN mas serão sim LA desenvolvidas de forma que terão uma proximidade tal que se irão confundir com a LN. Da mesma forma que é “giro” alguém perguntar numa sala de aulas: “Já sabes a tua nota do trabalho teórico de LPROG?” e essa pessoa receba uma resposta do género: “Ainda não saiu o output...” O que significa que será mais fácil uma derivação linguística de encontro ao que as máquinas tenham capacidade de processar por parte dos seres humanos de modo que o famoso teste de Alan Turing se realize com sucesso... Trabalho Teórico pág. 18/19 Linguagens e Programação – 2006/2007 8 - Bibliografia Gal A., Lapalme G., Saint-Dizier P. e Somers H. (1991) Prolog for Natural Language Processing, John Wiley & Sons, England Coelho, Helder (1995) Inteligência Artificial em 25 lições, Fundação Calouste Gulbenkian, Lisboa, Portugal Ramos, Carlos (2007), Apontamentos de Língua Natural, Instituto Superior de Engenharia do Porto – ISEP, Porto, Mar. 2007 http://en.wikipedia.org/wiki/Natural_language Trabalho Teórico pág. 19/19