Corretor Gramatical Para o Emacs - IME-USP - Instituto de ...

[Pages:42]Instituo de Matem?tica e Estat?stica Universidade de S?o paulo

Corretor GErmamacastical Para o

Aluno: Thiago Maciel Batista (5749922) (Orientador : Prof. Dr. Marcelo Finger)

S?o Paulo, 01 de Dezembro de 2010

Sum?rio

I Parte Objetiva

3

1 Introdu??o

3

2 PLN

4

2.1 Utilidades de PLN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2.2 PLN estat?stico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2.3 Token . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2.4 n-grama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

2.5 Modelos de n-gramas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.6 O princ?pio da m?xima entropia . . . . . . . . . . . . . . . . . . . . . . . . 11

2.7 Processamento de Linguagens Naturais e o Princ?pio da M?xima Entropia . 11

2.8 Corpus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2.9 Aprendizagem de M?quina . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

3 Cogroo

15

3.1 OpenNLP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

3.2 Maxent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3.3 Tipos de Erros Detectados Pelo Cogroo . . . . . . . . . . . . . . . . . . . . 17

3.4 M?dulos do N?cleo do Cogroo . . . . . . . . . . . . . . . . . . . . . . . . . 19

4 Emacs

23

4.1 Emacs Lisp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

4.2 Comandos no Emacs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

4.3 Arquivo .emacs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

4.4 Adicionando uma extens?o ao emacs . . . . . . . . . . . . . . . . . . . . . 25

4.5 Subprocessos no emacs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

5 Processo de Acoplamento

27

5.1 Interfaces Para Prover Comunica??o . . . . . . . . . . . . . . . . . . . . . 27

5.2 Script cogrooemacs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

5.3 Arquivos auxiliares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

5.4 Modelo do Acoplamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

5.5 Instalando o Corretor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

1

5.6 Testes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

6 Resultados e Produtos Obtidos

32

II Parte Subjetiva

38

1 Escolha do Tema

38

2 Desenvolvimento do trabalho, Desaos e Frustra??es

38

3 Futuro

39

4 Disciplinas Relevantes

40

2

Parte I

Parte Objetiva

1 Introdu??o

As linguagens que, normalmente, s?o compreendidas e manipuladas por computadores s?o formais e precisas, diferentemente de linguagens humanas, que possuem caracter?sticas que dicultam ao computador compreend?-las, como por exemplo, presen?a de ambiguidade, depend?ncia de contexto externo, caracter?sticas culturais, regras gramaticais etc.

Processamento de linguagem natural (PLN) ? uma ?rea da computa??o que pesquisa e desenvolve algoritmos para processar uma linguagem natural, de modo a torn?-la compreens?vel para um computador. Dessa forma, um computador ser? capaz de interpretar e de gerar textos em linguagens naturais, tornando a comunica??o homem-m?quina o mais natural poss?vel.

PLN ? uma ?rea em plena evolu??o e que ainda tem muito a evoluir, mas j? existem muitas aplica??es que utilizam os conceitos de PLN. Alguns exemplos da utilidade de PLN s?o, extra??o de informa??o, recupera??o de informa??o, tradu??o autom?tica, gera??o e interpreta??o de linguagem natural, resumos e corre??o de textos. Nenhum destes aplicativos est? livre de erros, que s?o advindos, principalmente, da diculdade dos computadores em trabalhar com uma linguagem natural.

Um exemplo de programa que utiliza PLN ? o cogroo[Col10a]. Um corretor gramatical para a l?ngua portuguesa do Brasil totalmente acopl?vel ao [ope10b], desenvolvido por alunos da Universidade de S?o Paulo. O cogroo utiliza an?lise sint?tica, morfol?gica e regras gramaticas para detectar erros em textos. Para fazer a an?lise gramatical de um texto, o cogroo realiza um processo que ? dividido em fases, que s?o executadas uma ap?s a outra. Atualmente, o cogroo ? composto por m?dulos e cada m?dulo realiza uma fase do processo.

Apesar de ser feito, a princ?pio, para o OpenOce, o cogroo pode ser acoplado a outros aplicativos. Aproveitando essa mobilidade do cogroo, este trabalho tem como objetivo estudar formas de acoplar o corretor gramatical ao editor de textos Emacs[GNU10], que apesar de ser um editor de texto popular no contexto de software livre, ainda n?o possui um corretor para a l?ngua portuguesa do Brasil. Ao nal do acoplamento, o emacs usar? o cogroo para analisar e encontrar erros em textos digitados pelos usu?rios.

O cogroo processar? um trecho de um texto enviado pelo emacs a procura de erros e

3

devolver? ao emacs os erros encontrados e sugest?es para corre??o, quando existirem. O emacs poder? usar os erros apontados pelo cogroo para mostrar ao usu?rio onde os erros ocorreram no texto, de forma que o usu?rio possa identic?-los e arrum?-los. Para isso, o emacs destacar? os trechos do texto em que foram detectados erros.

Ao decorrer do trabalho teremos a deni??o formal de PLN e a descri??o de conceitos utilizados em PLN, assim como uma descri??o do corretor gramatical cogroo, mostrando seus m?dulos, t?cnicas e algoritmos utilizados. Ao m, haver? a descri??o de como foi feito o acoplamento do cogroo ao emacs e como o emacs utiliza o corretor, apresentando os resultados nais.

2 PLN

Linguagens naturais s?o as linguagens utilizadas pelas pessoas para se comunicarem por interm?dio da fala ou da escrita, como por exemplo, portugu?s e ingl?s. Estas linguagens s?o usadas de forma intuitiva pelas pessoas, mesmo quando suas regras n?o s?o conhecidas profundamente. Processar uma linguagem natural ? a capacidade de compreend?-la e de se expressar coerentemente, por interm?dio da fala ou escrita, usando a linguagem.

Para que os computadores sejam capazes de manipular uma linguagem, esta precisar ser extremamente formal e precisa. Por?m, tais linguagens n?o s?o intuitivas para a maioria das pessoas, tornando a intera??o com a m?quina mais dif?cil. Para superar essa diculdade e oferecer novas funcionalidades e aplica??es, pesquisadores tentam encontrar um modo de tornar as interfaces dos computadores mais natural usando linguagens naturais. Esta, ? a ?rea de pesquisa na computa??o chamada de processamento de linguagem natural.

Processamento de linguagem natural (PLN ou NLP do ingl?s, Natural Language Processing ) ? uma ?rea da intelig?ncia articial que se concentra no desenvolvimento de

algoritmos para manipular linguagens naturais, de forma a torn?-las compreens?veis para o computador. Sendo capaz de reconhecer e manipular uma linguagem natural, o computador poder? interpretar e gerar textos em linguagem humana. Para realizar estas tarefas, um computador ter? que ser capaz de identicar contextos, fazer an?lise sint?tica, morfol?gica, sem?ntica e l?xica.

Desenvolver m?todos que realizam o processamento de textos n?o ? f?cil. Uma linguagem natural possui caracter?sticas que dicultam ao computador seu completo entendimento. Ambiguidade, contexto externo, culturas locais e regras gramaticais s?o algumas dessas caracter?sticas que tornam PLN uma ?rea extremamente dif?cil e desaante.

4

Para resolver alguns dos problemas citados, os sistemas de PLN necessitam de grande conhecimento do mundo externo para que possa reconhecer todas caracter?sticas e varia??es da linguagem. Al?m disso, pode ser aplicado conceitos de estat?stica ? linguagem. A utiliza??o de estat?stica para processar uma linguagem ? chamada de processamento estat?stico de linguagem natural. Abaixo temos algumas aplica??es de PLN, uma descri??o mais detalhada de PLN estat?stico e seus conceitos.

2.1 Utilidades de PLN

Apesar de ser uma ?rea em desenvolvimento, com v?rias diculdades e n?o possuir solu??es t?o ecazes para alguns problemas encontrados, processamento de linguagem natural ? aplicado em diversos dispositivos que manipulam textos, ou at? mesmo, arquivos de ?udios. Abaixo exemplicamos algumas dessas aplica??es.

? Extra??o de Informa??o:

Extra??o de informa??o(EI) ? uma ?rea que pesquisa maneiras de se fazer buscas

por informa??es espec?cas em um texto. A busca n?o precisa compreender o texto

por completo e nem devolver um arquivo, mas sim identicar trechos que supram

a necessidade do usu?rio. Usa-se extra??o de informa??o em grandes conjuntos de

dados n?o estruturados para responder ? consultas de usu?rios. Os resultados ob-

tidos de uma consulta devem possuir informa??es que sejam relevantes ao usu?rio.

Uma das t?cnicas utilizadas em EI ? a busca baseada em palavras chaves. Para

tornar a busca mais ecaz, pode ser aplicado os conceitos de PLN. Atualmente, com

a grande quantidade de conte?dos de textos na internet, a extra??o de informa??o

web tem sido empregada nas buscas de informa??es na

.

? Recupera??o de Informa??o:

Recupera??o de informa??o (RI) tem como objetivo trabalhar com armazenamento

de grande quantidade documentos, cujo conte?do, geralmente, s?o textos. Seu prin-

cipal objetivo ? desenvolver maneiras ecazes e ecientes de recuperar arquivos , de

forma que os documentos encontrados contenham informa??es relevantes para uma

web pesquisa do usu?rio. Atualmente, os dispositivos de busca na

s?o as aplica??es

mais usadas, que empregam conceitos de recupera??o de informa??o. Como maior

5

google exemplo, podemos citar o

, o motor de pesquisa mais utilizado no mundo. Ou-

tro exemplo importante da utiliza??o de RI s?o os dispositivos de busca em banco

de dados relacionais.

Geralmente, confundi-se RI com EI. Sistemas de RI respondem ? uma consulta com um conjunto de documentos relevantes ao usu?rio. Ent?o, o usu?rio pode selecionar um documento deste conjunto que ele julgue como a melhor resposta para sua consulta. Em sistemas de EI, as buscas s?o, apenas, por trechos de textos.

Um sistema de RI vai al?m da procura por documentos. Ele deve ser capaz de fazer indexa??o dos documentos, realizar buscas e fazer um ranqueamento dos resultados obtidos. Al?m disso, pode fazer uma classica??o dos documentos conforme seu conte?do.

Algumas t?cnicas aplicadas ? RI s?o, buscas por palavras chaves, indexa??o de arquivos, busca por padr?es de compara??o, utiliza??o de n-gramas, linguagem natural, dentre outras t?cnicas. O uso de PLN pode melhorar os resultados por meio de interpreta??o da consulta e dos textos dos documentos. Por?m, PLN ? pouco usado em sistemas de buscas, principalmente por que as consultas dos usu?rios, normalmente, s?o feitas com palavras chaves e n?o com uma frase espec?ca.

? Tradu??o Autom?tica:

Tradu??o autom?tica, tamb?m chamada apenas de TA, ? uma ?rea da lingu?stica computacional voltada para o desenvolvimento de softwares que sejam capazes de traduzir, automaticamente, textos de uma linguagem natural para outra. A tarefa de tradu??o entre duas linguagens n?o ? simples. N?o h? tradutores autom?ticos no mercado que estejam livres de erros. As diferen?as entre as caracter?sticas das linguagens, como regras gramaticais, sintaxe, morfologia, sem?ntica e palavras com mais de um sentido s?o alguns dos principais empecilhos na constru??o de um tradutor autom?tico. Mesmo com esses problemas, os sistemas de tradu??o autom?tica tornaram-se populares. A maioria deles usam t?cnicas de estat?stica e corpus bil?ngues. Por?m, dessa forma os resultados da tradu??o s?o dependentes das caracter?sticas do corpus.

? Interpreta??o de Linguagem Natural:

Ao receber dados de textos ou comandos em linguagem natural, o computador ? capaz de interpret?-los. Dessa forma, a comunica??o com computadores pode ser

6

feita de maneira mais f?cil. Pode ser aplicado em dispositivos que fazem reconhecimento de voz para entender comandos.

? Resumo de Textos

Usando t?cnicas e conceitos de PLN, alguns sistemas conseguem resumir um texto automaticamente, mantendo a coer?ncia do conte?do. Identica-se pontos importantes nos textos originais, que s?o utilizados no resumo nal. Geralmente, esses sistemas obt?m melhores resultados com textos que possuem uma estrutura bem denida, como artigos, documentos cient?cos etc.

? Corre??o de Textos

PLN pode ser utilizado para fazer corre??o gramatical e ortogr?ca de textos. S?o utilizados conceitos de lingu?stica, estat?stica e a utiliza??o de corpus. Como exemplos, temos o corretor gramatical cogroo e os dispositivos de corre??o ortogr?ca e gramatical dispon?veis em editores de textos.

2.2 PLN estat?stico

O processamento estat?stico de linguagem natural emprega conceitos de estat?stica para realizar o processamento de textos em linguagens naturais. Em PLN estat?stico utiliza-se um corpus, modelos probabil?sticos e t?cnicas de aprendizado de m?quina. Corpus ? uma base de dados com arquivos de textos em uma linguagem natural. A partir dele coleta-se caracter?sticas da linguagem, como sintaxe, morfologia etc. Os modelos probabil?sticos s?o usados para gerar uma distribui??o de probabilidade para linguagem. Analisando-se o corpus observa-se que a linguagem segue um padr?o com rela??o ?s caracter?sticas citadas anteriormente. Esses padr?es s?o modelados para um modelo estat?stico. O modelo formado possui as caracter?sticas de um modelo de markov. O aprendizado de m?quina ? aplicado ao sistema para que este possa adquirir os conhecimentos necess?rios para processar um texto. O sistema de PLN estat?stico tem que ser capaz de generalizar o conhecimento obtido, a partir do corpus, para todos as ocorr?ncias da linguagem.

Com a utiliza??o de estat?stica para processamento de textos, tenta-se resolver alguns problemas que s?o comuns em sistemas de PLN. Problemas como ambiguidade e an?lise da estrutura de senten?as, por exemplo, podem ser resolvidos com mais ecacia com o uso de modelos probabil?sticos.

7

................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download