Monday, January 11, 2010

Verificador Gramatical em um programa Java

Compatível apenas com CoGrOO 3.0.5, para versão de desenvolvimento veja aqui.
Que tal verificar a gramatica (crase, concordância etc) dos textos que o usuário do seu programa Java digitar? Isto é possível com o CoGrOO, o corretor gramatical para a língua portuguesa do BrOffice.org. Este pequeno tutorial pode servir como ponto de partida. Ele explica como utilizar o CoGrOO para verificar o texto digitado no console. Os requisitos são CoGrOO Base 3.0.5 e Java 1.5 ou melhor.
Obtenha o CoGrOO Base 3.0.5 aqui e extraia o conteúdo pasta. Isto resultará numa pasta com todos os jars necessários para executar o corretor gramatical, e ainda os arquivos de dados necessários (dicionários, modelos linguísticos e regras).
Todos os jars dessa pasta deverão ser incluídos no Java classpath do seu programa, e o diretório de execução deverá ser a raiz da pasta que contém os recursos (pastas bin, data e rules).
Vamos então criar nosso programa. Bem simples, ele aguarda o usuário digitar uma linha de texto e usa o método checkText da classe GrammarCheckerBrazilianPortuguese para obter a lista com dos possíveis erros. Dessa lista podemos extrair dados como o identificador da regra, texto de mensagem ao usuário (longo e curto), sugestões para correção (quando disponível) e a posição do erro no texto.
Vamos ao código. Crie o arquivo CorretorGramatical.java na pasta CoGrOOBase-3.0.5-bin com o seguinte conteúdo:
import java.util.List;
import java.util.Scanner;

import br.usp.pcs.lta.cogroo.entity.Mistake;
import br.usp.pcs.lta.cogroo.grammarchecker.GrammarCheckerBrazilianPortuguese;


public class CorretorGramatical {

public static void main(String[] args) {

// cria instância do corretor gramatical
GrammarCheckerBrazilianPortuguese corretorGramatical = new GrammarCheckerBrazilianPortuguese();
// prepara para obter o texto
Scanner kb = new Scanner(System.in);
System.out.println("Digite o texto seguido de Enter para verificar. Digite 't' seguido de Enter em uma nova linha para terminar: ");
String entrada = kb.nextLine();
// aguarda texto
while (!entrada.equals("t")) {
// verifica erros do texto
List<Mistake> erros = corretorGramatical.checkText(entrada);
int contador = 1;
// imprime detalhes de cada erro
for (Mistake erro : erros) {
System.out.println("Erro " + contador++ + " -");
System.out.println(" Regra '" + erro.getRuleIdentifier() + "'");
System.out.println(" Mensagem curta '" + erro.getShortMessage() + "'");
System.out.println(" Mensagem longa '" + erro.getFullMessage() + "'");
System.out.println(" Texto com erro '" + entrada.substring(erro.getStart(), erro.getEnd()) + "'");
System.out.print( " Sugestões " );
for (String sugestao : erro.getSuggestions()) {
System.out.print("[" + sugestao + "] ");
}
System.out.println();
}
// aguarda o próximo texto digitado
entrada = kb.nextLine();
}
}
}
Pronto, agora é só compilar e executar:
javac -classpath CoGrOOBase-3.0.5.jar CorretorGramatical.java
java -classpath CoGrOOBase-3.0.5.jar CorretorGramatical

2 comments:

Carlos said...

Após muito custo, consegui instalar a extensão Speechoo no Brwritter.

Mas há um problema.

Eu dito as palavras e o BrWritter não dá nenhum sinal de vida. O BrWritter devia digitar as palavras automaticamente após eu clicar no botão Start Dictation.

Eu tinha dúvida se o problema seria q meu microfone não está instalado, mas testei através do gravador de som e constatei q o notebook consegue captar minha fala, com um pouco de ruído, mas capta. Meu notebook é um HP DV 1378

Alguém aí sabe como faço para o Ubuntu 11.04 com o LibreOffice (+ a extensão Speechoo) reconhecer e digitar o q falo?

Alguém já conseguiu fazer este programinha Speechoo funcionar no Ubuntu 11.04?

Ou pelo menos em alguma outra distru Linux. Se for o caso, eu instalo a distru correta...

A propósito será q tem alguma coisa a ver com o fato de eu estar usando o Ubuntu a partir do Wubi?

William Colen said...

Oi, Carlos,

Desculpe, estou fora desse projeto agora. Participei mais no começo.
Vou tentar entrar em contato privado com você para tentar te colocar em contato com o pessoal que está trabalhando no SpeechOO hoje.

Um abraço,
William