LingÌística Computacional
Versão Inicial: Renata Vieira e Vera Lúcia Strube de Lima
Curador: Renata Vieira e Vera Lúcia Strube de Lima
Índice de conteúdo |
Introdução
O desenvolvimento da informática proporcionou, nas últimas décadas, grandes mudanças nos estudos das ciências em geral. A computação, no caso particular do estudo das línguas naturais, possibilitou o surgimento de novas abordagens a problemas descritivos e práticos das línguas que antes não podiam ser tratados adequadamente.
Uma destas abordagens é a lingüística baseada em corpus, que utiliza computadores para o armazenamento e acesso a textos escritos ou falados. Um corpus lingüístico legível por máquina pode ser rapidamente pesquisado para obtenção de informações a respeito da regularidade da língua, tais como frequência de palavras, de formas ou de construções. Desta maneira, pode-se obter dados a respeito da linguagem real, em uso por falantes da língua, permitindo fazer comparações entre língua escrita e falada, entre os usos da língua em diferentes épocas, ou ainda, entre o português do Brasil e de Portugal, para citar alguns exemplos.
Outros trabalhos em linguística computacional são voltados ao processamento da linguagem natural, isto é, à construção de programas capazes de interpretar e/ou gerar informação fornecida em linguagem natural (sendo este o formato de entrada e saída do processamento). Para o processamento da língua natural, vários subsistemas podem interagir para dar conta dos diferentes aspectos da língua: sons, palavras, sentenças e discurso nos níveis estruturais, de significado e de uso. Alguns exemplos são apresentados a seguir.
Para ter uma comunicação efetiva, os usuários da língua costumam seguir certas convenções. Uma destas convenções permite ao falante nativo reconhecer uma sequência de expressões como sendo uma sentença válida da língua. O processamento lingüístico, a esse nível, é tarefa dos analisadores sintáticos. Para verificar a validade de sequências de palavras numa certa língua, o sistema precisa que a língua seja especificada por um léxico e uma gramática. O procedimento é similar à verificação de sintaxe de um programa em uma linguagem de programação, a sintaxe da língua natural é, no entanto, bem mais complexa e é preciso levar em consideração problemas particulares como a concordância, por exemplo. Esse tipo de tratamento é útil ao desenvolvimento de corretores ortográficos e gramaticais. As aplicações desenvolvidas para lidar com a língua, porém, vão além do processamento sintático, como será mostrado a seguir.
Podemos, inicialmente, observar a diferença entre os sistemas que lidam com a língua escrita e a língua falada. Para lidar com a língua falada é necessária uma tecnologia especial que faz a interpretação da fala através do reconhecimento do sinal sonoro e da manipulação da representação de conhecimento fonético-fonológico.
Um outro aspecto da língua, diz respeito ao significado que é evocado por uma sentença válida. Uma sentença pode expressar o conhecimento de mundo ou uma intenção do falante em relação ao ouvinte. Para desenvolver sistemas com essas características é preciso recorrer a técnicas de representação do conhecimento e, em certas situações, especificar algoritmos capazes de estabelecer relações entre os diversos componentes e segmentos de um texto ou discurso. Esses são os sistemas de tratamento semântico da língua, que podem envolver a construção de um modelo de representação do domínio, correspondente à interpretação de um texto, ou podem lidar com questões mais pontuais, como reconhecer um sentido específico, dentro de um contexto, para palavras ambíguas (por exemplo, banco como instituição financeira ou banco como um artefato utilizado para sentar).
O significado da língua natural está sempre relacionado à situação de uso; no entanto, muitos modelos, utilizados para explicar e descrever o significado, procuram isolar esses fatores. A semântica, portanto, caracterizou-se como uma área de estudo que considera o significado das expressões lingüísticas de maneira independente de quem as usa ou de como são usadas. O estudo de questões relacionadas ao uso da língua acaba caracterizando uma outra área de conhecimento denominada pragmática.
Na pragmática são estudadas questões ligadas ao uso da linguagem, abordando-se aquilo que é relativo a quem usa e ao contexto de uso (a teoria dos atos de fala é um exemplo de tais estudos). Sistemas que trabalham nesse nível de representação costumam considerar o contexto lingüístico (discurso) na interpretação das expressões da língua. O contexto lingüístico é o mais fácil de tratar computacionalmente, pois refere-se ao que é explicitado no texto. Sistemas que podem ser citados como exemplos são os de resolução de anáfora intersentencial e resolução de co-referência textual em geral. É mais difícil tratar computacionalmente o contexto imediato, ou contexto situacional de uma expressão, devido à dificuldade de se chegar a uma representação adequada do conhecimento compartilhado entre os participantes de uma conversação ou comunicação. Podemos considerar como conhecimento compartilhado, por exemplo, o conhecimento comum entre o leitor e o escritor de artigos de um jornal, que decorre de serem habitantes de uma mesma cidade.
Outros exemplos de aplicação de propósito mais geral, e que podem englobar vários dos níveis mencionados acima, são os sistemas de tradução automática, geração de resumos e extração de informação.
O processamento da linguagem natural
Nesta seção iremos apresentar uma introdução aos princípios básicos que regem o desenvolvimento de sistemas de processamento da linguagem natural, procurando dar uma idéia do que está por trás de cada uma das aplicações que podemos presenciar hoje em dia. Um sistema para processar linguagem natural reúne, geralmente, alguns módulos organizados de acordo com a divisão vista nos estudos da lingüística. Cada uma das etapas do processamento exige um conhecimento de natureza diferenciada sobre a língua, e as soluções propostas irão variar de acordo com a natureza dos conhecimentos envolvidos. Para proporcionar ao leitor uma compreensão geral dos trabalhos realizados na área, iremos apresentar, nas próximas subseções, diferentes focos do processamento da língua natural, associados às etapas lingüísticas de processamento da língua.
Análise léxico-morfológica
O léxico ou dicionário é uma estrutura fundamental para a maioria dos sistemas e aplicações. É a estrutura de dados contendo os itens lexicais e as informações correspondentes a estes itens. Em realidade, os itens que constituem as entradas em um léxico podem ser palavras isoladas (como lua, mel, casa, modo) ou composições de palavras as quais, reunidas, apresentam um significado específico (por exemplo, lua de mel ou Casa de Cultura ou a grosso modo). Entre as informações associadas aos itens lexicais, no léxico, encontra-se a categoria gramatical (part-of-speech ou POS) do item, além de valores para variáveis morfo-sintático-semânticas como gênero, número, grau, pessoa, tempo, modo, regência verbal ou nominal etc. Também são associadas ao item lexical, no léxico, uma ou mais representações ou descrições semânticas. Bem mais raramente, encontram-se associações a representações contextuais.
Entre as estruturas mais utilizadas para reunir os itens de um léxico, duas se destacam: a estrutura de formas e a estrutura de bases. Um léxico pode conter todos os itens lexicais (sejam palavras ou unidades maiores que palavras) por extenso – neste caso será um dicionário de formas. A seguir apresentamos exemplos de entradas em um dicionário desse tipo:
a artigo feminino singular
determina um nome
a preposição
para, em direção a
a substantivo masculino singular normal
primeira letra do alfabeto
a pronome feminino singular 3a pessoa
indica um referente feminino
O analisador léxico-morfológico tradicionalmente decompõe a sentença em itens lexicais e realiza uma varredura, tratando item a item, e decompondo-os em seus morfemas. Verifica, a partir das informações armazenadas no léxico e nos morfemas, a estrutura, características e informações associadas a um determinado item, tais como gênero e número para substantivos, ou pessoa, número, modo e tempo, para os verbos, por exemplo.
Dada uma determinada sentença, o analisador léxico-morfológico identifica os itens lexicais que a compõem e obtém, para cada um deles, as diferentes descrições correspondentes às entradas no léxico (isto é, categorias em que estes itens podem estar atuando e demais informações). A ambigüidade léxico-morfológica ocorre quando uma mesma palavra apresenta diversas categorias gramaticais. Em nível léxico-morfológico é importante que todas as formas possíveis de categorização sejam buscadas e informadas, independente de ocorrer ambigüidade. A ambigüidade será tratada em níveis mais avançados de análise.
A implementação de analisadores léxico-morfológicos pode ser feita através de sistemas de índices, através de percurso em árvore, através de autômatos finitos, ou através de outras técnicas. O etiquetador gramatical (ou pos tagger) é um sistema responsável por identificar, em uma sentença, para cada um dos itens lexicais, a categoria a que este item pertence.
Os algoritmos para etiquetagem fundamentam-se em dois modelos mais conhecidos: os baseados em regras e os estocásticos. Os algoritmos baseados em regras, como o nome o diz, fazem uso de bases de regras para identificar a categoria de um certo item lexical. Neste caso, novas regras vão sendo integradas à base à medida que novas situações de uso do item vão sendo encontradas. Os algoritmos baseados em métodos estocásticos costumam resolver as ambigüidades através de um corpus de treino, marcado corretamente (muitas vezes através de esforço manual), calculando a probabilidade que uma certa palavra ou item lexical terá de receber uma certa etiqueta em um certo contexto. O etiquetador Eric Brill (1995), bastante conhecido na literatura, faz uso de uma combinação desses dois modelos.
Análise sintática
Enquanto o analisador léxico-morfológico trabalha em nível de sentença, o analisador sintático trabalha em nível de frase (ou sintagma), e irá reconhecer uma seqüência de palavras como constituindo uma frase da língua ou não. Poderá também construir uma árvore de derivação, que explicita as relações entre as palavras que compõem a sentença. O analisador sintático faz uso do léxico, que reúne o conjunto de itens lexicais da língua, e de uma gramática, que define as regras de combinação dos itens na formação das frases.
A gramática utilizada para representar uma linguagem natural deve apresentar um bom balanço entre sua expressividade e o processo de reconhecimento. Chomsky (1956) classificou as gramáticas em quatro tipos: tipo 3, regulares, tipo 2, livres de contexto, tipo 1, sensíveis ao contexto e tipo 0, sistemas de reescrita geral. As gramáticas do tipo 3, ou regulares, são as mais restritas, e por isso são as mais fáceis de serem reconhecidas. São, no entanto, insuficientes para expressar as regras de formação da linguagem natural. Gramáticas do tipo 2, livres de contexto, mais poderosas, permitem a representação de linguagens com um grau maior de complexidade; estas ainda apresentam problemas para expressar dependências, como é o caso da concordância verbal. O próximo nível de gramáticas, sensíveis ao contexto, resolve o problema das dependências, mas apresenta problemas de complexidade no reconhecimento. Decidir se uma sentença pertence a uma gramática sensível ao contexto é uma função exponencial sobre o tamanho da sentença, o que torna a implementação do procedimento de verificação uma questão complexa, do ponto de vista computacional.
A gramática adotada pode ser escrita através de diversos formalismos. Entre eles, podemos destacar (Woods, 1970; Fuchs e Le Goffic, 1992; Jurafsky e Martin, 2000) as redes de transição, (Gazdar, 1982) gramáticas de constituintes imediatos (PSG ou phrase structure grammar), (Gazdar, Klein e Pullum, 1982) gramáticas de constituintes imediatos generalizadas (GPSG), (Kay, 1979) gramáticas de unificação funcional, (Shieber, 1971) PATR-II e (Pollard, 1994) HPSG (head-driven phrase-strutcture grammar).
A decisão em relação ao melhor formalismo para representação da linguagem natural não tem ainda solução: as pesquisas têm proposto trabalhar em modelos que se situem em um nível intermediário entre as gramáticas livres de contexto e sensíveis ao contexto. Tendo apresentado noções gerais sobre a gramática e os formalismos de representação, veremos a seguir diferentes métodos de análise sintática: os analisadores top-down, bottom-up, left-corner e tabular.
A linguagem de programação Prolog possui um formalismo para representação de gramáticas livres de contexto denominado DCG (Definite Clause Grammar), associado a um analisador top-down descendente recursivo. A conversão de regras da gramática vista anteriormente, de constituintes imediatos, em cláusulas Prolog, é muito simples. Para o exemplo precedente, temos:
f --> sn, sv.
n --> det, subst.
sv --> verbo, sn.
det --> [o].
subst --> [menino]; [chapéu].
verbo --> [usa].
Através dessa especificação, o interpretador Prolog irá reconhecer o menino usa chapéu como uma sentença válida da linguagem especificada, respondendo sim para uma consulta.
A possibilidade de inclusão de argumentos faz da DCG uma gramática poderosa, permitindo tratar também a concordância. Com esses argumentos, o analisador só aceitará os sintagmas nominais nos quais determinante e substantivo concordem em número e gênero.
A estrutura dos sintagmas verbais é variável de acordo com o verbo. Alguns verbos não exigem complementos além do sujeito, são os verbos intransitivos. Outros verbos só fazem sentido com a presença de um ou mais complementos. O tipo de complemento associado a cada verbo é denominado subcategorização. Note que os complementos podem variar em número e em tipo, alguns complementos são acompanhados de preposição (objeto indireto) ou não (objeto direto). O verbo dar, por exemplo, refere-se a uma ação onde alguém, o sujeito, dá algo (objeto direto) a alguém (objeto indireto). O verbo dar requer, portanto, dois complementos: um sintagma preposicional, e um sintagma nominal. Para isso, regras diferentes para sintagmas verbais devem ser adicionadas à gramática, onde o tipo de subcategorização associado a cada verbo pode ser representado.
Veja em Covington (1994) e Barros e Robin (1996) mais sobre Prolog e DCG.
Análise semântica
Certas aplicações necessitam lidar com a interpretação das frases bem formadas, não bastando o conhecimento da estrutura, mas sendo necessário o conhecimento do significado dessas construções. Podemos querer que respostas sejam dadas a sentenças ou orações expressas em língua natural as quais, por exemplo, provoquem um movimento no braço de um robô. Ou podemos querer extrair conhecimentos sobre o tema ‘indústria automotora’ a partir de uma base de dados textuais.
Num tratamento automático, a análise semântica (Fuchs e Le Goffic, 1993) consiste em associar, a uma seqüência de marcadores lingüísticos, uma ‘representação interna’, entendida como a representação do significado desta sentença. A seqüência de marcadores aqui citada geralmente é a proveniente da análise sintática. Em comparação às linguagens naturais, as linguagens formais, tais como a linguagem lógica, apresentam uma semântica bem definida. Por isso, existe uma grande influência da lógica nos estudos da semântica computacional da linguagem natural. De acordo com a estrutura sintática de uma sentença, é possível estabelecer uma representação lógica correspondente, onde o verbo indica uma relação entre os argumentos expressos por sujeito e complemento verbal (objeto direto ou indireto).
As seqüências cujo significado o analisador semântico deve descrever, normalmente, se compõem de itens lexicais, analisados do ponto de vista léxico-morfológico e agrupados em estruturas por um processo de análise sintática. Essas organizações permitem desdobrar a semântica em estudos de duas naturezas distintas: uma semântica dita lexical, e uma semântica dita gramatical. A semântica lexical, ou semântica das palavras, está mais claramente associada às categorias de palavras como verbos, substantivos e adjetivos (também conhecidos como ‘palavras cheias’). Já as preposições e artigos (conhecidos como ‘palavras vazias’) estão mais associados à semântica gramatical. É costume associar-se, às palavras cheias, uma representação conceitual que descreva seu significado.
Alguns fenômenos ditos semânticos já são bastante estudados, como é o caso da ambigüidade proveniente da polissemia. Outras situações de interesse dizem respeito às relações interproposicionais (ou seja, entre frases distintas), às relações de referência, determinação e temporalidade. Esses fenômenos podem envolver conhecimentos adicionais além do conhecimento semântico, sendo estudados em um nível pragmático de tratamento.
Análise pragmática
A pragmática relaciona a língua e seu uso. Esse uso inclui uma abrangência maior do que, simplesmente, sentenças isoladas, e a unidade de estudo passa a ser o discurso. Entende-se por discurso o texto ou a fala, compostos de várias unidades menores, que seriam as sentenças. Em nível de análise do discurso iremos encontrar algoritmos para resolução de referência, compreensão de diálogos e modelos de interpretação de textos em geral.
O problema da resolução de anáforas diz respeito a encontrar os antecedentes que participam no processo de interpretação de determinadas expressões, por exemplo, os pronomes, sendo um tema na área limítrofe entre semântica e pragmática. A interpretação de um pronome (ele, ela, isso, essa etc) é relativa ao contexto de uso e, geralmente, em textos escritos, é relativa ao contexto lingüístico (isto é, é baseada em um antecedente lingüístico). Diversos algoritmos foram propostos para fazer a identificação do antecedente anafórico de pronomes, e novos modelos teóricos foram desenvolvidos para dar conta de questões relacionadas. Um exemplo é a teoria de representação do discurso (DRT discourse representation theory) (Kamp e Reyle, 1993). Outro é o da teoria de Centering (apud Jurafsky e Martin, 2000).
Além do processamento simbólico, tomado como base principal da descrição da área até aqui, é possível encontrar abordagens que fazem uso de outros métodos de análise. Particularmente, deve-se observar o destaque que vem sendo proporcionado aos métodos estatísticos ou aos métodos híbridos (Manning e Schütze, 1999).
Aplicações e desenvolvimento
Sistemas reconhecedores da fala têm sido utilizados para fins de ditado, onde o sistema faz a transcrição da fala em texto; em interfaces de comando por voz, por exemplo, para comandar o seu editor de texto ou navegar na Internet falando com o computador; ou em acesso a serviços automatizados de informação por telefone.
Há diversos sistemas tradutores que se tornaram produtos comerciais, ou que são de distribuição gratuita e disponíveis pela Internet. Esses sistemas de tradução são considerados preliminares, no sentido de que fazem uma tradução não refinada; é freqüente a ocorrência de erros e imperfeições no resultado final obtido. Uma análise detalhada da qualidade do resultado obtido por esses tradutores é apresentada em (Oliveira, 2000). Mais informações sobre tradutores automáticos podem ser obtidos em Jurafsky e Martin (2000).
A geração de textos pode ser vista como o processo inverso da interpretação: o gerador recebe como entrada elementos de conteúdo e objetivos de comunicação, para produzir um texto lingüisticamente correto. Deve determinar o que será dito e de que forma, organizando o discurso e as frases.
Os geradores de resumo constituem um recurso bastante útil no processo de busca de informação. Resumos gerados automaticamente podem auxiliar uma pessoa na decisão sobre a relevância de um determinado documento. A geração de resumos deve proporcionar o máximo de informação no mínimo de espaço, e isso envolve o estudo do uso da linguagem para veicular informação de forma concisa.
A recuperação de informação é a área de aplicação envolvida com a obtenção de documentos relevantes dado um determinado tema, e não está diretamente envolvida com a obtenção de uma informação específica ou com a obtenção de resposta a uma dada pergunta. Recuperação de informação pode, então, ser definida como sendo o conjunto de técnicas que servem ao propósito de encontrar documentos relevantes de acordo com uma necessidade de informação. Em geral são empregadas abordagens baseadas em técnicas estatísticas que medem a similaridade de textos e da consulta, e não em compreensão de texto. A compreensão automática de texto é ainda uma área com baixa efetividade em domínios irrestritos. Pode excepcionalmente ser uma opção mais adequada em domínios restritos. Uma obra importante que apresenta bons elementos para os estudos da área é a de Baeza-Yates e Ribeiro-Neto (1999).
Enquanto sistemas de recuperação de informação encarregam-se de encontrar documentos relevantes em relação a um determinado tema, sistemas de extração de informação encarregam-se de analisar e transformar a maneira de apresentação da informação contida em um conjunto de documentos relevantes, isolando informações relevantes contidas em determinados segmentos, e apresentando a informação encontrada em um formato coerente. Sistemas de extração de informação podem ‘ler’ um texto não estruturado e coletar informação a ser armazenada em um banco de dados tradicional. A área de extração de informação popularizou-se com a série de competições americana intitulada Message Understanding Conferences (MUCs), atualmente, ACEs. Mais informação sobre a área pode ser obtida em Cowie e Lehnert (1996).
Conclusão
A área de lingüística computacional envolve um amplo conjunto de atividades voltadas ao objetivo de tornar possível a compreensão e a produção da linguagem humana (escrita e falada) pelo computador. A comunicação das pessoas com as máquinas, utilizando as habilidades naturais de comunicação humana, seria um dos resultados a ser alcançado. A pesquisa na área inclui o reconhecimento, interpretação, tradução e geração de linguagem e requer um esforço de convergência entre várias disciplinas: lingüística, computação e psicologia, por exemplo. A área tem um papel muito importante para a sociedade do conhecimento. Avanços no processamento de fala, texto e imagem são necessários para tornar mais acessível, e possibilitar o melhor uso, da grande quantidade de informação que está hoje disponível na rede mundial de computadores. É uma área promissora, especialmente em relação à língua portuguesa. É importante considerar a necessidade de formação de recursos humanos nessa área relativamente nova, que atualmente, no Brasil, se faz presente mais em cursos de pós-graduação do que na graduação.
Referências Bibliográficas
BAEZA-YATES, R.; RIBEIRO-NETO, B. Modern Information Retrieval. New York: ACM Press, 1999. 513 p.
BARROS, F. e ROBIN, J. Processamento de linguagem natural. Jornada de Atualização em Informática JAI, Anais do XVI Congresso da Sociedade Brasileira de Computação 1996.
BRILL, E. Transformation-based error-driven learning and natural language processing: a case study in part-of-speech tagging. Computational Linguistics, 21(4), 543-566. 1995.
CHOMSKY, N. Three models for the description of language. IRE Transactions PGIT, 2. (pp. 113-124), 1956.
COVINGTON, M. A. Natural language processing for Prolog programmers. New Jersey, Prentice Hall. 1994.
COWIE, J. and LEHNERT, W. Information Extraction. Communications of the ACM, Vol.39, Nº 1, January, 1996.
FUCHS, C., LE GOFFIC, P. Les Linguistiques Contemporaines. Paris, Hachette, 1992. 158p.
GAZDAR, G. Phrase Structure Grammar. In Jacobson and Pullum, (eds): The Nature of Syntactic Representation. Reidel, Dordrecht. 1982.
GAZDAR, G., KLEIN, E. PULLUM, G. and SAG, I. Generalized Phrase Structure Grammar. Basil Blackwell, 1985.
JURAFSKY, D., MARTIN, J. Speech and Language Processing. New Jersey, Prentice-Hall, 2000. 934p.
KAY, M. Functional grammar. In Proceedings of the 5th Annual Meeting of the Berkeley Linguistic Society, 1979.
KAMP, H. and REYLE, U. From discourse to logic. Dordrecht, Kluwer.
MANNING, C. and SCHÜTZE, H. Foundations of Statistical natural language processing. Cambridge, MA: The MIT Press, 1999. 680p.
OLIVEIRA, N. O., et al. A critical analysis of the performance of English-Portuguese-English MT systems. Anais do V Encontro para o Processamento do Português Escrito e Falado. (pp. 85-92) Atibaia-SP, Novembro, 2000.
POLLARD, C. and SAG, I. A. Head-driven phrase structure grammar. Chicago, The University of Chicago Press. 1994.
SHIEBER, S. M. The design of a computer language for linguistic information. Proceedings of the 10th International Conference on Computational Linguistics COLING, (pp. 362-366), California USA, 1984.
WOODS, W. A. Transition network grammars for natural language analysis. Communications of the ACM, 13(10), (pp. 591-606), 1970.
