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
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
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
Integração BrOffice.org




       http://cogroo.sourceforge.net   4
Integração BrOffice.org




       http://cogroo.sourceforge.net   5
Integração BrOffice.org




       http://cogroo.sourceforge.net   6
Analisador de Textos
●   Delimitador de sentenças e tokens
●   Etiquetador morfológico
●   Identificador de sintagmas
●   Identificador de sujeitos
●   Etc...




                         http://cogroo.sourceforge.net   7
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
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
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
Como funciona?




     http://ccsl.ime.usp.br/cogroo/comunidade/grammar
 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/rules
 http://cogroo.sourceforge.net                          13
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
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
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
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
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
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
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
JSpell – entradas do dicionário
Justo / #a/msIfp/

Lema                    Etiquetas



#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.
                       http://cogroo.sourceforge.net             21
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
Obrigado pela oportunidade e pela atenção!


         http://cogroo.sourceforge.net
              http://ccsl.ime.usp.br




               http://cogroo.sourceforge.net   23

O corretor gramatical CoGrOO - IX Evidosol

  • 1.
    O Corretor GramaticalCoGrOO 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
  • 4.
    Integração BrOffice.org http://cogroo.sourceforge.net 4
  • 5.
    Integração BrOffice.org http://cogroo.sourceforge.net 5
  • 6.
    Integração BrOffice.org http://cogroo.sourceforge.net 6
  • 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 textosque 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: corpuspara 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: corpuspara 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: corpuspara 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 – oque é? ● 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
  • 21.
    JSpell – entradasdo dicionário Justo / #a/msIfp/ Lema Etiquetas #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. http://cogroo.sourceforge.net 21
  • 22.
    JSpell – funcionamentode 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 oportunidadee pela atenção! http://cogroo.sourceforge.net http://ccsl.ime.usp.br http://cogroo.sourceforge.net 23