O documento apresenta o CoGrOO, um corretor gramatical para o português do Brasil que pode ser usado em suítes de escritório livres. O CoGrOO analisa textos, identifica possíveis erros gramaticais e sugere correções utilizando regras gramaticais e análise estatística de corpus de treinamento. Ele foi desenvolvido por pesquisadores da USP e vem sendo utilizado em diversos projetos de pesquisa.
Corretor gramatical CoGrOO apresentado em evento de software livre
1. O Corretor Gramatical CoGrOO
Apresentado no 5 de junho de 2012
IX EVIDOSOL e VI CILTEC-online
IX Encontro Virtual de Documentação em Software Livre
e VI Congresso Internacional de Linguagem e Tecnologia online
Arthur Branco Costa
William Colen
http://cogroo.sourceforge.net 1
2. O que é o CoGrOO?
CoGrOO é um corretor gramatical para
português do Brasil, que pode ser usado nas
principais suítes livres de escritório.
http://cogroo.sourceforge.net 2
3. Exemplo
● Usuário digita um texto
● O verificador executa
uma análise
gramatical, buscando
padrões de erros na
estrutura gerada
● O verificador sugere correções
http://cogroo.sourceforge.net 3
7. Analisador de Textos
● Delimitador de sentenças e tokens
● Etiquetador morfológico
● Identificador de sintagmas
● Identificador de sujeitos
● Etc...
http://cogroo.sourceforge.net 7
8. Analisador de Textos
● USP
● Pesquisa IME/Hospital AC Camargo: análise de laudos clínicos (CID)
● IME: auxilia a extração automática de ontologias de transcrições de
vídeos e entrevistas (OnAir)
● Poli: interação homem-máquina (robô sociável)
● UFMG
● Projeto Dados Semiótica: análise automatizada dos dados coletados
● PUC-PR
● Classificação automática de laudos clínicos (CID)
● UFPA
● Auxílio na transcrição e geração automática de texto (projeto Fale)
http://cogroo.sourceforge.net 8
9. Analisador de textos que vocês podem usar
● Análise automatizada inicial de corpus
● Parte de um processamento mais complexo
...
Livremente!
● Mas... cite nossos artigos :)
● Divulgue nosso trabalho
● Colabore com o desenvolvimento
http://cogroo.sourceforge.net 9
10. Como funciona?
● Processamento de Linguagem Natural probabilística +
sistema de regras:
● Aprendizado de máquina usando corpus na fase de análise
● Regras de erros são aplicadas nas estruturas resultantes
● Usa bibliotecas livres como Apache OpenNLP
(aprendizado de máquina), Jspell (léxico) e
Morfologik-Stemming (compactação do léxico)
Apache
http://cogroo.sourceforge.net 10
11. Como funciona?
http://ccsl.ime.usp.br/cogroo/comunidade/grammar
http://cogroo.sourceforge.net 11
12. Como funciona?
http://ccsl.ime.usp.br/cogroo/comunidade/grammar
http://cogroo.sourceforge.net 12
13. Como funciona?
http://ccsl.ime.usp.br/cogroo/comunidade/rules
http://cogroo.sourceforge.net 13
14. Recursos linguísticos: corpus para treinamento
● Usado no treinamento dos módulos estatísticos
● CoGrOO “aprende” português
● Usamos os corpora Bosque e Floresta Virgem do projeto
Floresta Sintática (abertamente distribuídos)
● Textos jornalísticos (Folha): sem primeira pessoa, linguagem jornalística
● Apesar de revisados ainda encontramos erros: o CoGrOO aprende
errado
● Os conhecimentos que ele obtém no treinamento são
usados para analisar novos textos.
http://cogroo.sourceforge.net 14
15. Recursos linguísticos: corpus para treinamento
SOURCE: CETENFolha n=904 cad="Esporte" sec="des" sem="94a"
CF904-1 Desorganização e violência marcam torneio que consolida o 'efeito Copa'.
A1
STA:fcl
=SUBJ:cu
==CJT:np
===H:n('desorganização' <np-idf> F S) Desorganização
==CO:conj-c('e' <co-subj>) e
==CJT:np
===H:n('violência' <np-idf> F S) violência
=P:vp
==MV:v-fin('marcar' PR 3P IND) marcam
=ACC:np
==H:n('torneio' <np-idf> M S) torneio
==N<:fcl
===SUBJ:np
====H:pron-indp('que' <rel> M S) que
===P:vp
====MV:v-fin('consolidar' <fs-rel> PR 3S IND) consolida
===ACC:np
====>N:art('o' <artd> M S) o
===='
====H:n('efeito' M S) efeito
====N<:np
=====H:prop('Copa' F S) Copa
===='
=.
http://cogroo.sourceforge.net 15
16. Recursos linguísticos: corpus para avaliação
● Corpus Metrô
● Textos extraídos do site institucional do Metrô de São Paulo.
● Erros anotados manualmente (aproximadamente 800 sentenças e 51
erros)
● Corpus Probi
● Desenvolvido pelo NILC (USP São Carlos – UFSCAR) para o projeto
ReGra (corretor gramatical proprietário do MS Office)
● 11.624 sentenças, 2.616 com alguma erros
http://cogroo.sourceforge.net 16
17. Recursos linguísticos: regras
● Desenvolvidas por linguistas
● Regras simples que podem ser descritas usando
sequência de tokens em um arquivo de configuração
http://cogroo.sourceforge.net 17
18. Recursos linguísticos: regras
● Regras mais complexas são desenvolvidas em linguagem
de programação
● Por exemplo, estamos trabalhando hoje no mecanismo
para regras de regência verbal
● Inspirado no artigo:
Software livre e gramática: regência verbal no revisor de textos do BrOffice
dos estudantes Luana Flávia Cotta Drumond, Cinara Kelly Alves Cruz e
Felipe da Fonseca Martins, para o UEADSL 2011.1
● As estudantes Cinara Cruz e Ana Paula Queiroz continuam colaborando
com o projeto.
http://cogroo.sourceforge.net 18
19. JSpell – o que é?
● Analisador morfológico:
Gera a partir de palavras básicas as suas derivações, utilizando-se de regras
simples.
Realizado pelo Projecto Natura, da universidade do Minho, Portugal;
● Como funciona:
● O banco de dados contém, por exemplo, a palavra alugar com algumas
etiquetas;
● Para cada etiqueta uma regra de formação de palavras lhe é aplicada;
● Assim, criam-se todas as suas conjugações verbais, bem como, as palavras:
alugador, alugável, subalugar e alugamento; e
● as derivações dessas, como: alugadoras, alugáveis, subalugou-se,
subalugadores, subalugá-lo-íamos, alugamentos, etc;
● Resultado: a partir da palavra alugar, foram geradas 209 palavras.
http://cogroo.sourceforge.net 19
20. JSpell
Vantagens:
● Abrangência: contém mais de 900.000 verbetes;
● Código Livre;
● Feito manualmente, a quantidade de erros é notoriamente menor que a
de geradores automáticos;
● Regras simples, de fácil compreensão e que podem ser redefinidas.
Problemas:
● Ainda contém alguns erros, algumas regras devem ser melhor
formuladas, devido à quantidade de exceções na língua portuguesa.
● Feito para português de Portugal: é necessário atualizar diversas
palavras.
Colabore conosco nessa parte! =]
http://cogroo.sourceforge.net 20
22. JSpell – funcionamento de uma flag
Flag: m → Adiciona o sufixo -mente nas “palavras válidas”
“CAT = adj, N = s” → palavras válidas: adjetivos no singular
que tenham a flag m.
Terminação Mudança de
Acréscimo do sufixo Exemplo
da palavra classificação
-O -O, AMENTE; “CAT = Adv”
(palavras terminadas (elimina a letra 'o' e (o adjetivo torna-se # Abertamente
com a letra 'o') acrescenta “amente”) um advérbio)
-U AMENTE; “CAT = Adv” # Cruamente
- [^V][^E][^L] MENTE;
(palavras que não (acrescenta o “CAT = Adv” # Anteriormente
acabam com -vel) sufixo -mente)
-ÁVEL, AVELMENTE;
- ÁVEL “CAT = Adv” # Miseravelmente
(perda do acento)
- ÍVEL -ÍVEL, IVELMENTE; “CAT = Adv” # Horrivelmente
http://cogroo.sourceforge.net 22
23. Obrigado pela oportunidade e pela atenção!
http://cogroo.sourceforge.net
http://ccsl.ime.usp.br
http://cogroo.sourceforge.net 23