Analisadores Gramaticais em Prolog (Projeto de pesquisa)∗ Luiz Arthur Pagani http://people.ufpr.br/arthur [email protected] Resumo Neste texto, apresenta-se ao Departamento de Lingüística, Letras Vernáculas e Clássicas, da Universidade Federal do Paraná, um pro jeto de pesquisa no qual diversas técnicas para a implementação de analisadores gramaticais em Prolog serão avaliadas. Este recenseamento dos analisadores gramaticais visa a embasar o trabalho que vem sendo desenvolvido para a implementação de modelos computacionais para as Gramáticas Categoriais. Introdução Ao contrário do que acontece nas áreas da Lingüística Computacional e do Processsamento Automático de Língua Natural, nas quais uma máquina precisa executar por si só uma análise gramatical, na tradição dos estudos puramente lingüísticos sempre se deu mais atenção à gramática e à análise gramatical do que ao processo de construção da análise gramatical. Os lingüistas elaboram gramáticas para as línguas, que depois justicam as análises gramaticais para determinadas expressões lingüísticas (as expressões gramaticais) e a exclusão das expressões que não fazem parte da língua descrita (as expressões agramaticais); no entanto, eles normalmente pressupõem que a aplicação destas gramáticas na construção destas análises gramaticais não O presente texto foi preparado no sistema L T X, através de uma de suas implementações para Linux o TeTEX e de um ambienteE de integração de trabalho ( , ) o Kile ambos instalados em computadores funcionando com o sistema operacional Kurumin; tudo dentro das diretrizes do chamado . Expresso assim o meu reconhecimento à enorme equipe anônima que desenvolve todos esses recursos e os disponibilisa gratuitamente. A ∗ Integrated Desktop Environment IDE software li- vre 1 precisa receber o mesmo tratamento explícito e formal que costuma ser dispensado principalmente às gramáticas. Contudo, este processo de construção de análises gramaticais a partir de uma gramática constitui uma questão bastante complexa, que merece a atenção dos lingüistas, e que ainda pode servir como um dos possíveis critérios para se avaliar gramáticas, além do tradicional critério de economia, postulado por Chomsky (segundo o qual uma gramática seria melhor que outra quando a primeira analisa as mesmas expressões lingüísticas que a segunda, mas empregando uma quantidade menor de regras): se uma gramática exige uma operação que é impossível de se realizar, esta gramática é pior do que outra que só recorre a operações realizáveis; ou ainda, se uma gramática exige uma operação de realização mais custosa do que a outra, e ambas têm a mesma abrangência empírica e só diferem nesta operação, então a gramática que permite a realização de análises gramaticais menos custosa é melhor do que a outra. Além disso, a observação das condições para a construção de análises gramaticais é pertinente para a compreensão do processamento lingüístico humano: quando sabemos que determinadas operações só podem se realizar de um determinado jeito, e não de outro, somos capazes de postular que, dadas certas limitações na produção efetiva das expressões lingüísticas e na compreensão de seu signicado, esse processamento lingüístico é (in)compatível com algum tipo de gramática; um exemplo deste tipo de compromisso entre uma gramática e seu processamento aparece em gramáticas de estrutura sintagmática com regras recursivas à esquerda (como SN → SN SP , por exemplo) processadas por analisadores gramaticais descendentes (que partem das regras para chegar à expressão analisada) e da esquerda para a direita (que satisfazem o lado direito das regras de reescrita a partir do símbolo mais à esquerda), que entram em recursão inntia, já que sempre é possível reescrever um SN por um SN SP (SN =⇒ SN SP =⇒ SN SP SP =⇒ . . . =⇒ SN SP . . . SP ). Vale lembrar também que, ao aprendermos o funcionamento de determinados algoritmos computacionais, estamos ainda nos capacitando melhor para testar empiricamente, na Lingüística, algumas previsões feitas pela chamada metáfora computacional das ciências cognitivas. 2 1 Fundamentos 1.1 Análise Gramatical Ainda que a dimensão mais evidente de uma manifestação lingüística seja a sua seqüenciação no tempo, 1 o eixo sintagmático também dispõe de uma se- gunda perspectiva; nas palavras de Lyons [7, p. 78], as relações sintagmáticas não pressupõem necessariamente uma ordenação das unidades em seqüência linear, de maneira que a realização substancial de um elemento deva preceder, no tempo, a realização de outro elemento. Nas palavras de Gra [6, 2 os sintagmas não são uma simples sucessão de palavras individuais, p. 76], mas são constituídos por grupos de palavras hierarquicamente organizados. Assim, para descobrir esta organização hierárquica, normalmente chamada de estrutura de constituintes, os lingüistas recorrem a diversos testes para constatar a maior ou menor coesão entre os elementos dos supostos grupos, como os testes de comutação, de coordenação, de clivagem e mesmo de passivização, que servem para determinar a estrutura de constituintes (ou estrutura sintagmática), como por exemplo em Lyons [7, ps. 219226] (apresentado de uma maneira um pouco intuitiva), Gra [6, ps. 7591], Mioto, Silva & Lopes [10, ps. 4549], ou mesmo Chierchia [2, cap. 3]. Através deste tipo de teste, é possível observar, nas sentenças abaixo, que uma mulher é um consituinte, já que ele se mantêm coeso em todas as posições que ele ocupa nas referidas sentenças. 1. Todo homem ama uma mulher. 2. Uma mulher, todo homem ama. 3. É uma mulher que todo homem ama. 4. Uma mulher é amada por todo homem. Estas duas dimensões do eixo sintagmático parecem car ainda mais claras na lingüística computacional, já que certas operações só podem ser realizadas depois que esta dimensão secundária é revelada. Gazdar e Mellish [5, p. 5], por exemplo, se referem exatamente a isto quando dizem que: Rero-me aqui ao fato de que as enunciações são constituídas pelo encademanto temporal de fones Esta citação de [6] e as de [5], que serão usadas a seguir, foram todas traduzidas por mim. 1 2 3 os objetos lingüísticos são objetos estruturados. Mas eles não manifestam explicitamente sua estrutura. A compreensão do signicado de uma sentença depende essencialmente de uma habilidade, que provavelmente é inconsciente para o falante nativo da língua em questão, em reconstruir esta estrutura. Neste caso, os autores mencionam explicitamente um aspecto cognitivo da gramática: a construção mental de uma representação gramatical. No entanto, mesmo para aqueles que não estão diretamente interessados nas manifestações cognitivas lingüísticas, não há como fugir de uma representação gramatical, ainda que ela seja considerada apenas uma entidade teórica: da mesma maneira que a reconstrução mental da estrutura gramatical ajuda a explicar nossas capacidades lingüísticas, a construção teórica de uma estrutura de constituintes nos ajuda a explicar as relações entre as expressões lingüísticas. 1.2 Gramática Uma análise gramatical não é um objeto aleatório: ela segue critérios bastante especícos que a relacionam com uma certa expressão lingüística, determinados pelo que se convencionou chamar de gramática. Uma apresentação deste tipo de concepção de gramática é feita, por exemplo, por Gazdar e Mellish [5, p. 100]: O conjunto de expressões lingüísticas compostas em uma língua natural não é nito, portanto não podemos simplesmente listá- uma máquina lenta, uma máquina muito lenta, uma máquina muito muito lenta, . . . ). Até onde se sabe, las uma-a-uma (cf. nenhuma língua natural é uma língua nita. O domínio das construções que tornam uma língua innita normalmente é bastante grande. Em português, uma palavra como e nos permite com- binar um número indeterminado de sintagmas, e as sentenças relativas podem conter sintagmas verbais que podem conter sintagmas nominais, que por sua vez podem conter outras sentenças relativas . . . . Por isso, precisamos de sistemas formais (ou seja, matemáticos) que denam os membros de conjuntos innitos de expressões lingüísticas e atribuam uma estrutura a cada um dos membros destes conjuntos. Estes sistemas formais são as 4 gramáticas. A relação entre a gramática e a análise gramatical também é reconhecida por Gazdar e Mellish [5, p. 101] da seguinte maneira: Da perspectiva do PLN [Processamento de Língua Natural], o estudo da gramática é um ramo da representação do conhecimento: uma gramática é apenas uma maneira de representar determinados aspectos do que conhecemos sobre uma língua e que é explícito e formal o suciente para ser compreendido por uma máquina. 1.3 Analisador Gramatical Da noção de gramática como representação do conhecimento lingüístico e da determinação da estrutura hierárquica das expressões lingüísticas, Gazdar e Mellish [5, p. 5] denem o que é um analisador gramatical (parser ): um artefato computational que infere estrutura a partir de uma seqüência gramatical de palavras é conhecido como analisador gramatical, e a maior parte da história do PLN nos últimos 20 anos foi dedicada à formulação de analisadores gramaticais. A distinção entre gramática e analisador gramatical pode ser equiparada à distinção entre competência e desempenho: a gramática estaria no domínio da competência, enquanto o analisador gramatical estaria relacionado ao desempenho. Pode-se perceber esse tipo de distinção nas seguintes palavras de Gazdar e Mellish [5, p. 5]: Conceitualmente, o analisador gramatical e a gramática são coisas de tipos bem distintos: uma gramática é apenas uma denição abstrata de um conjunto de objetos estruturados bem-formados, enquanto que um analisador gramatical é um algoritmo ou seja, um conjunto preciso de instruções para se chegar a tais objetos. Nesse sentido, esta distinção remete diretamente a toda uma discussão que tem ocorrido no âmbito da psicolingüística moderna sobre a relação entre a gramática e o analisador gramatical. Nesta discussão, podemos encontrar posições que vão da separação radical entre gramática e analisador (como a proposta pela hipótese da competência forte, de Bresnan [1]) à negação desta separação (como geralmente acontece nas propostas coneccionistas), passando por posições intermediárias que defendem uma distinção teórica mediada por um processo de pré-compilação da gramática a ser empregada pelo analisador (como a de Merlo [9]). 1.4 Prolog A escolha do Prolog como linguagem de programação é bastante natural para quem lida com o PLN, já que este foi um dos principais motivos que levou 5 à criação desta linguagem. Além disso, para um lingüista acostumado com o cálculo de predicados, o Prolog é uma linguagem bastante simples de se aprender, porque ela é fortemente inspirada num subconjunto decidível do cálculo de predicados de primeira ordem. Finalmente, talvez o melhor de todos os motivos para escolher o Prolog seja a disponibilidade das fontes. Além do já mencionado livro de Gazdar e Mellish [5], podemos mencionar ainda os livros de Pereira e Shieber [11], de Covington [3], de Dougherty [4] e de Matthews [8], todos dedicados exclusivamente ao PLN em Prolog. 2 Proposta 2.1 Objetivos O objetivo principal deste projeto é o de propor o recenseamento das várias técnicas de implementação de analisadores gramaticais disponíveis em Prolog. Depois que os algoritmos forem identicados nas fontes citadas, eles serão minuciosamente compreendidos tanto em seu funcionamento quanto em suas limitações. Para esse m, além dos critérios normalmente empregados relacionados à estrutura sintática, serão consideradas ainda questões de ordem da interpretação semântica, já que um dos principais motivos da postulação deste projeto é o embasamento para a implementação de modelos computacionais para as Gramáticas Categoriais, que se caracterizam pelo respeito ao princípio de composicionalidade (que prevê que o signicado de uma expressão complexa deve ser resultado exclusivamente dos signicados das expressões mais simples que a compõem e da forma como estas expressões mais simples se combinam; ou, dito de outra maneira, que cada operação sintática deve corresponder a uma operação semântica); além disso, questões relativas à possibilidade de aplicação destes modelos computacionais para a explicação do comportamento lingüístico humano também serão levadas em consideração. Como um objetivo secundário, pretende-se que os resultados deste recenseamento sejam disponibilizados através de uma página de internet, a ser sediada no endereço http://people.ufpr.br/arthur. Além disso, ainda em relação à divulgação, espera-se que os conteúdos sejam reunidos em formato de livro a ser submetido a algumas editoras para publicação. 6 2.2 Cronograma Como a maior parte do trabalho consistirá na resenha de livros, deu-se preferência para a organização do cronograma baseada nas obras resenhadas. Assim, os livros devem ser lidos e comentados na seguinte ordem: • 2006: • 3 junho a agosto: resenha de [11] setembro a novembro: resenha de [5] dezembro: férias 2007 janeiro e fevereiro: continuação da resenha de [5] março e abril: resenha de [4] maio a julho: resenha de [3] agosto e setembro: resenha de [8] outubro e novembro: revisão das informações disponibilizadas na internet • dezembro: férias 2008 janeiro a abril: preparação do manuscrito do livro maio: preparação do relatório nal do projeto Referências [1] Joan Bresnan, editor. lations. The Mental Representation of Grammatical Re- The MIT Press, Cambridge, Massachusetts, 1982. [2] Gennaro Chierchia. Semântica. Edunicamp & Eduel, Campinas & Lon- drina, 2003. Traduzido por Luiz Arthur Pagani, Lígia Negri e Rodolfo Ilari. O cronograma inicial era para apenas um ano e se iniciava em abril de 2006. No entanto, como o projeto só foi aprovado em reunião departamental no dia 18 de maio de 2006, postergou-se seu início para junho de 2006; e atendendo o parecer apresentado nesta reunião, que recomendava que o projeto fosse executado em mais tempo, o cronograma foi extendido para dois anos. 3 7 [3] Michael A. Covington. grammers. Natural Language Processing for Prolog Pro- Prentice Hall, Englewood Clis, 1994. Natural Language Computing An English Generative Grammar in Prolog. Lawrence Erlbaum Associates, Hillsdale, [4] Ray C. Dougherty. NJ, 1994. Natural Language Processing in Prolog An Introduction to Computational Linguistics. Addison-Wesley, [5] Gerald Gazdar and Chris Mellish. Wokingham, 1989. [6] Giorgio Gra. [7] John Lyons. Sintassi. Il Mulino, Bologna, 1994. Introdução à Lingüística Teórica. Ed. Nacional & EDUSP, São Paulo, 1979. Trad. Rosa Virgínia Mattos e Silva & Hélio Pimentel. [8] Clive Matthews. rough Prolog. [9] Paola Merlo. An Introduction to Natural Language Processing th- Longman, London, 1998. Parsing with Principles and Classes of Information. Kluwer, Dordrecht, 1996. [10] Carlos Mioto, Maria Cristina Figueiredo Silva, and Ruth Elisabeth Vasconcellos Lopes. Manual de Sintaxe. Insular, Florianópolis, 1999. [11] Fernando C. N. Pereira and Stuart M. Shieber. Language Analysis. CSLI, Stanford, 1987. 8 Prolog and Natural-