o corretor gramatical cogroo - ix evidosol
DESCRIPTION
Apresentado no dia 05 de junho de 2012 no IX Evidosol http://gkosmos.com/evidosol/TRANSCRIPT
http://cogroo.sourceforge.net 1
O Corretor Gramatical CoGrOO5 de junho de 2012
Arthur Branco Costa
William Colen
Apresentado no
IX EVIDOSOL e VI CILTEC-onlineIX EVIDOSOL e VI CILTEC-onlineIX Encontro Virtual de Documentação em Software Livre e VI Congresso Internacional de Linguagem e Tecnologia online
http://cogroo.sourceforge.net 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 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 4
Integração BrOffice.org
http://cogroo.sourceforge.net 5
Integração BrOffice.org
http://cogroo.sourceforge.net 6
Integração BrOffice.org
http://cogroo.sourceforge.net 7
Analisador de Textos● Delimitador de sentenças e tokens
● Etiquetador morfológico
● Identificador de sintagmas
● Identificador de sujeitos
● Etc...
http://cogroo.sourceforge.net 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 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 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 11
Como funciona?
http://ccsl.ime.usp.br/cogroo/comunidade/grammar
http://cogroo.sourceforge.net 12
Como funciona?
http://ccsl.ime.usp.br/cogroo/comunidade/grammar
http://cogroo.sourceforge.net 13
Como funciona?
http://ccsl.ime.usp.br/cogroo/comunidade/rules
http://cogroo.sourceforge.net 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 15
Recursos linguísticos: corpus para treinamentoSOURCE: CETENFolha n=904 cad="Esporte" sec="des" sem="94a"CF904-1 Desorganização e violência marcam torneio que consolida o 'efeito Copa'.A1STA: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 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 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 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 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 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 21
JSpell – entradas do dicionário
#a: adjetivo
m: -mente → justamente - #av: advérbio
s: -íssimo → justíssimo
I: in- → injusto, injustamente
f: feminino → justa, justíssima, injusta
p: plural → justos, justíssimos, injustos, justas,
justíssimas, injustas.
Etiquetas
Justo / #a/msIfp/
Lema
http://cogroo.sourceforge.net 22
JSpell – funcionamento de uma flagFlag: 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 da palavra
Acréscimo do sufixo Mudança de classificação
Exemplo
- O(palavras terminadas
com a letra 'o')
-O, AMENTE;(elimina a letra 'o' e
acrescenta “amente”)
“CAT = Adv”(o adjetivo torna-se
um advérbio)# Abertamente
- U AMENTE; “CAT = Adv” # Cruamente
- [^V][^E][^L](palavras que não acabam com -vel)
MENTE;(acrescenta o sufixo -mente)
“CAT = Adv” # Anteriormente
- ÁVEL -ÁVEL, AVELMENTE;(perda do acento)
“CAT = Adv” # Miseravelmente
- ÍVEL -ÍVEL, IVELMENTE; “CAT = Adv” # Horrivelmente
http://cogroo.sourceforge.net 23
Obrigado pela oportunidade e pela atenção!
http://cogroo.sourceforge.nethttp://ccsl.ime.usp.br