Instalando o CoGrOO no Ubuntu

Iniciado por marcoscg72, 01 de Setembro de 2006, 02:17

tópico anterior - próximo tópico

marcoscg72

Quando eu  tentei instalar o Corretor Gramatical no meu Broffice  me deparei com um monte de erros que sequer permitiam a instalação do software. Após realizar algumas pesquisas na net descobri as dependências que eu precisava instalar. A instalação a partir daí correu bem. Ao testar o corretor ortográfico ele retornava um erro de que não foi possível conectar-se ao corretor gramatical e o broffice fechou em seguida na minha cara sem a menor cerimônia  :( . Voltei a pesquisar na net e descobri que ele não funcionava adquadamente com distribuições baseadas em UTF-8, como o nosso querido Ubuntu. Então decidi fazer funcionar na unha.

Dependências:

sudo apt-get j2re1.4
sudo apt-get j2re1.4-mozilla-plugin


Instalar o CoGrOO:

Baixe o CoGrOO:

wget -c http://cogroo.incubadora.fapesp.br/portal/down/builds/cogroo_installer_linux_v1_1.bin

chmod +x cogroo_installer_linux_v1_1.bin

sudo ./cogroo_installer_linux_v1_1.bin

Após a instalação são necessários alguns ajustes finos:

Ao iniciar o CoGrOO procura pelo code page pt_BR.ISO-8859-1 e como Ubuntu trabalha com o pt_BR.UTF8 isso provoca um erro semelhante a esse:

sudo /etc/init.d/cogroo start
Starting CoGrOO tcp service... done.
root@lnxmcg:/etc/init.d# Invalid locale pt_BR at tg/bin/tgStructure.pm line 44.

Aqui começa a festa :-)

Faça um backup do diretório /urs/local/CoGroo

cd /urs/local/

sudo cp -a CoGroo  CoGroo_original


Estão edite o arquivo tgStructure.pm

sudo nano /usr/local/CoGroo/cogroo/tg/bin/tgStructure.pm

localize a linha:

(setlocale(LC_CTYPE, 'pt_BR.ISO_8859-1') or die "Invalid locale pt_BR");

Mude para:

(setlocale(LC_CTYPE, 'pt_BR.UTF8') or die "Invalid locale pt_BR");

Agora localize a linha:

checkPT_BR() || die;

comente-a deixando assim:

#checkPT_BR() || die;


Eu repeti esse processo várias vezes, sempre editando os arquivos que apresentavam o mesmo erro. Até não retornar mais nenhum erro.

Depois eu converti todos o arquivos de pt_BR.ISO_8859-1 para pt_BR.UTF8 usando o seguinte comando:

sudo iconv -f iso-8859-1 -t utf-8 arquivo.pm > arquivo.pm.utf8

depois eu renomei os arquivos *.utf8 sobrescrevendo os originais.

sudo mv arquivo.pm.utf8 arquivo.pm

Repeti o processo em todos os arquivos com as extenções *.pm e *.pl, assim como os arquivos textos que encontrei abaixo do diretório /usr/local/CoGroo.

Depois dessa trabalheira toda, o corretor gramatical passou a funcionar normalmente.

Valeu apena o esforço :-).

rjbgbo

#1
Vendo o link: http://www.guiadohardware.net/dicas/openoffice-corretores-gramatical-ortografico.html

Me interessei, tentei seguir os passos, inclusive no passo:

CitarA seguir vamos fazer o download do arquivo, com um:

# wget http://www.deso-se.com.br/downloads/pt_BR-2700.zip


Notei que o link estava ausente, procurei pelo Google e achei um novo, eis no o comando que dei no terminal p/ baixar s/ problemas:
$ wget http://www.deso-se.com.br/downloads/download.php?arquivo=pt_BR-2700g
Encontrado no seguinte link: http://www.broffice.org/?q=node/191/print
Preferi seguir os passos indicados pelo marcosg72, por ser também Ubuntu.



Tive dificuldade nas etapas:
cd /urs/local/
sudo cp -a CoGroo  CoGroo_original
Deu arquivo não achado, o que tentei renomear conforme estava no pacote e nada.

Passei p/ a etapa:
CitarEstão edite o arquivo tgStructure.pm
sudo nano /usr/local/CoGroo/cogroo/tg/bin/tgStructure.pm

Então me apareceu a seguinte tela:



Tentei dar algum comando ^[letra] + Enter e nada

também tentei acessar o arquivo tgStructure.pm pelo endereço, mas como não estava como root não consegui fazer as correções devidas.

Desde já agradeço a atenção.
Linux User #440843 | Ubuntu User #11469

alarcon

#2
Citação de: marcoscg72 online 01 de Setembro de 2006, 02:17
Quando eu  tentei instalar o Corretor Gramatical no meu Broffice  me deparei com um monte de erros que sequer permitiam a instalação do software. Após realizar algumas pesquisas na net descobri as dependências que eu precisava instalar. A instalação a partir daí correu bem. Ao testar o corretor ortográfico ele retornava um erro de que não foi possível conectar-se ao corretor gramatical e o broffice fechou em seguida na minha cara sem a menor cerimônia  :( . Voltei a pesquisar na net e descobri que ele não funcionava adquadamente com distribuições baseadas em UTF-8, como o nosso querido Ubuntu. Então decidi fazer funcionar na unha.

Dependências:

sudo apt-get j2re1.4
sudo apt-get j2re1.4-mozilla-plugin


Instalar o CoGrOO:

Baixe o CoGrOO:

wget -c http://cogroo.incubadora.fapesp.br/portal/down/builds/cogroo_installer_linux_v1_1.bin

chmod +x cogroo_installer_linux_v1_1.bin

sudo ./cogroo_installer_linux_v1_1.bin

Após a instalação são necessários alguns ajustes finos:

Ao iniciar o CoGrOO procura pelo code page pt_BR.ISO-8859-1 e como Ubuntu trabalha com o pt_BR.UTF8 isso provoca um erro semelhante a esse:

sudo /etc/init.d/cogroo start
Starting CoGrOO tcp service... done.
root@lnxmcg:/etc/init.d# Invalid locale pt_BR at tg/bin/tgStructure.pm line 44.

Aqui começa a festa :-)

Faça um backup do diretório /urs/local/CoGroo

cd /urs/local/

sudo cp -a CoGroo  CoGroo_original


Estão edite o arquivo tgStructure.pm

sudo nano /usr/local/CoGroo/cogroo/tg/bin/tgStructure.pm

localize a linha:

(setlocale(LC_CTYPE, 'pt_BR.ISO_8859-1') or die "Invalid locale pt_BR");

Mude para:

(setlocale(LC_CTYPE, 'pt_BR.UTF8') or die "Invalid locale pt_BR");

Agora localize a linha:

checkPT_BR() || die;

comente-a deixando assim:

#checkPT_BR() || die;


Eu repeti esse processo várias vezes, sempre editando os arquivos que apresentavam o mesmo erro. Até não retornar mais nenhum erro.

Depois eu converti todos o arquivos de pt_BR.ISO_8859-1 para pt_BR.UTF8 usando o seguinte comando:

sudo iconv -f iso-8859-1 -t utf-8 arquivo.pm > arquivo.pm.utf8

depois eu renomei os arquivos *.utf8 sobrescrevendo os originais.

sudo mv arquivo.pm.utf8 arquivo.pm

Repeti o processo em todos os arquivos com as extenções *.pm e *.pl, assim como os arquivos textos que encontrei abaixo do diretório /usr/local/CoGroo.

Depois dessa trabalheira toda, o corretor gramatical passou a funcionar normalmente.

Valeu apena o esforço :-).


Seguindo os seus passos consegui fazer, após muito trabalho, com que o mesmo funcionasse no meu OpenOffice aqui do Ubuntu Dapper, entretanto nos textos das sugestões do programa as palavras que tem qualquer tipo de acentuação aparecem com quadrados nos seus lugares. Gostaria de saber se isso ocorre com você?

De resto está funcioando, depois de sual sugestões que são bem trabalhosas, pois são muitos os arquivos que se tem de editar.

Quero fazer uma correção nas suas instruções:

Onde tem:

sudo cp -a CoGro  CoGro_original

Leia-se:

sudo cp -a CoGro  CoGro_original

e onde tem:

sudo nano /usr/local/CoGro/cogroo/tg/bin/tgStructure.pm

Leia-se:

sudo nano /usr/local/CoGro/cogroo/tg/bin/tgStructure.pm

Por isso que o camarada logo acima não conseguiu encontrar a pasta e fazer os procedimentos comentados. Um pequeno erro de digitação.

Detalhe:

Não precisei destas dependências: j2re1.4 e j2re1.4-mozilla-plugin e utilizei o gedit com o nautilus aberto como root para abrir e salvar os arquivos comentados (*.pm, *.pl e *.txt) em UTF-8 e as outras alterações já comentadas pelo autor deste tópico.

rjbgbo

Valeu mesmo alarcon pela tua atenção.

Sou iniciante e ainda tive problemas c/ os tais comandos, mas peguei uma dica sua de entrar como root e fiz o seguinte: pelo terminal digitei sudo nautilus. E pronto! Consegui buscar a pasta e editar os comandos.

Citar#!/usr/bin/perl
############################################################################
#   
#   CoGrOO - a grammar checker to OpenOffice.org
#   
#   Version: 1.0
#   
#   File: tgStructure.pm
#   
#   Remarks: Analyses the sentence and determines in which position each word or punctuation mark begin and end.
#   
#   The Contents of this file are made available subject to
#   the terms of GNU Lesser General Public License Version 2.1.
#   
#   
#   GNU Lesser General Public License Version 2.1
#   =============================================
#   Copyright 2006 by
#   CoGrOO Team (cogrooteam AT gmail DOT com)
#   LTA, PCS (Computer and Digital Systems Engineering Department),
#   Escola Politécnica da Universidade de São Paulo
#   Av. Prof. Luciano Gualberto, trav. 3, n. 380
#   CEP 05508-900 - São Paulo - SP - BRAZIL
#   
#   http://cogroo.incubadora.fapesp.br
#   
#   This software is free software; you can redistribute it and/or
#   modify it under the terms of the GNU Lesser General Public
#   License version 2.1, as published by the Free Software Foundation.
#   
#   This software is distributed in the hope that it will be useful,
#   but WITHOUT ANY WARRANTY; without even the implied warranty of
#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.   See the GNU
#   Lesser General Public License for more details.
#   
#   You should have received a copy of the GNU Lesser General Public
#   License along with this software; if not, write to the Free Software
#   Foundation, Inc., 59 Temple Place, Suite 330, Boston,
#   MA   02111-1307   USA
#   
############################################################################
use POSIX 'locale_h';
use locale;
setlocale(LC_CTYPE, 'portuguese-brazil') ||
(setlocale(LC_CTYPE, 'pt_BR.UTF8') or die "Invalid locale pt_BR");

use strict;
package tgStructure;
# use cpCheckfiles;
# use cpGlobalvars;
# use Lingua::Ispell qw( spellcheck );
# Lingua::Ispell::allow_compounds(1);

sub checkPT_BR {
   my $string = "ração";
   my @array = split (/\W+/, $string);
   if (@array > 1) {
      return 0;
      print "ATENÇÃO: verificou-se que PT_BR não foi carregado!\n";
   }
   return 1;
}

#checkPT_BR() || die;

sub main {
   my $ent = shift; # Receives string (a couple sentences).
   
   my @carac = split (//, $ent); # Split characters.
   # Create @ori, @ini, @end.
   # @ori holds the original sentence. A position in the array is associated for each word or punctuation mark.
   # @ini and @end hold the position of the initial and final character of a word in the sentence, respectively.
   # e.g.: O Sr. Madruga é doido!
   #          (0, 1,  2,    3,    4,   5,   6) => array position
   #   @ori = (O, Sr, ., Madruga, é, doido, !)
   #   @ini = (0, 2,  4, 6,      14, 16,   21)
   #   @end = (0,  3, 4,      12,14,    20,21)
   my $string;
   my (@ori, @ini, @end);
   my $c;
   
   # State chart
   # 0: Waits for a new valid entry.
   # 1: Recognized alphanumeric sequence. Reconheceu inicio de sequencia alfanumerica.
   # 2: Alphanumeric sequence. Sequencia alfanumerica.
   # 3: Recognized punctuation mark sequence. Reconheceu inicio de sequencia pontuacao.
   # 4: Punctuation mark sequence. Sequencia pontuacao.
   # 5: Sequence type change or end of processing. Mudanca de tipo de sequencia ou fim.
   my %recSent = (
      # "state entry" => next state
      "0 w"   =>   "1",
      "0 p"   =>   "3",
      "0 s"   =>   "0",
      "0 p1"   =>   "6",
      "0 &"   =>   "9",
      "0 \\"   =>   "8",
      "0 r"   =>   "7",
      
      "5 w"   =>   "1",
      "5 p"   =>   "3",
      "5 s"   =>   "0",
      "5 p1"   =>   "6",
      "5 r"   =>   "7", # return char
      "5 &"   =>   "9",
      "5 \\"   =>   "8",
         
      "9 r"   =>   "7",
      "9 X"   =>   "ERRO",
      
      "8 w"   =>   "1",
      "8 p"   =>   "3",
      "8 s"   =>   "0",
      "8 p1"   =>   "6",
      
      "1 w"   =>   "2",
      #"1 W"   =>   "5",
      "1 X"   =>   "5",
      
      "2 w"   =>   "2",
      #"2 W"   =>   "5",
      "2 X"   =>   "5",
      
      "3 p"   =>   "4",
      #"3 P"   =>   "5",
      "3 X"   =>   "5",
      #"3 p1"   =>   "6",
      
      "4 p"   =>   "4",
      #"4 P"   =>   "5",
      "4 X"   =>   "5",
      
      "6 p1"   =>   "6",
      #"3 P"   =>   "5",
      "6 X"   =>   "5",
      
      #"7 r"   =>   "5",
      "7 X"   => "5",
   );
   
   my $est = 0;
   my $nest;
   my ($p, $w, $s);
   {
      my $escapeChar = 0;
      my $i;
      for ($i = 0; $i < @carac; ) {
         # Vamos descobrir qual o tipo de caracter
         #print "$carac[$i]\n $est\n";
         if ($est != 9) { # pula estado de escape
            if ($carac[$i] =~ /\w/) {
               $c = "w";
            } elsif ($carac[$i] =~ /\n/) {
               $c = "r";
            } elsif ($carac[$i] =~ /\s/) {
               $c = "s";
            } elsif ($carac[$i] =~ /[\.\@\,]/ && $carac[$i+1]=~ /[\w]/) {
               $c = "w";
            } elsif ($carac[$i] =~ /[\-]/ && ($carac[$i+1]=~ /\w/)) { # Ou sera melhor deixar fala $- se ???
               $c = "w";
            # Deleted because of the links (script died if the sentence had &).
            # Seems to be not used.
#            } elsif ($carac[$i] =~ /^[\\&]$/ && $est != 8) { # exp char: "&" "\" (escape)
#               $c = $carac[$i]; # escape!
#            } elsif ($carac[$i] =~ /[\/\(\)\]\[\}\{\"\']/) { # Until 05/11/16.
            } elsif ($carac[$i] =~ /[\(\)\[\]\{\}\"\']/) {
               $c = "p1";# nao acumula
            } elsif ($carac[$i] =~ /[\W\S]/) {
               $c = "p";
            }
         } else { # no caso de escape
            if ($carac[$i] =~ /r/) {
               $c = "r";
               $carac[$i] = "\n";
            } else {
               $c = "ERRO";
            }
         }
         
         # Which is the next state?
         if (exists $recSent{"$est $c"}) {
            $nest = $recSent{"$est $c"}
         } elsif (exists $recSent{"$est X"}) {
            $nest = $recSent{"$est X"}
         } else {
            print "nao consegui andar\n";
            die;
         }
         #print "$nest\n";
         # vamos dar as funbcoes para cada estado
         
         if ($nest =~ /[1367]/) { # Beginning of sequence.
            if ($est != 6) {   # Patch for the case (((blabla)) and the like.
                           # Multiple instances of (, ), [, ] etc.
                           # Avoids including it more than once in @ini.
               push(@ini, $i - $escapeChar);
            }
            $string = $carac[$i];
            $i++; # Ao consumo de um token
         } elsif ($nest =~ /[24]/) { # During sequence.
            $string .= $carac[$i];
            $i++; # Ao consumo de um token
         } elsif ($nest =~ /[5]/) { # End of sequence.
            push(@end, $i - 1 - $escapeChar);
            push(@ori, $string);
            $string = $carac[$i];
            # Aqui nao há consumo de token
         } elsif ($nest =~ /[0]/) { # Beginning of sequence.
            $string = "";
            $i++; # Ao consumo de um token
         } elsif ($nest =~ /[89]/) { # escape char
            $string = "";
            $i++; # Ao consumo de um token
            #$escapeChar++;
         } elsif ($nest =~ /[7]/) { # escape char XXX Acho que não usa.
            $string = "&r";
            $i++; # Ao consumo de um token
            #$escapeChar++;
         } else {
            print "ERROR in tgStructure.pm: transition to next state not defined.";
            # TODO Needs error recovery.
            die; # Without error recovery, just die.
         }
         $est = $nest; # Transition.
      }
      unless ($string eq "") {
         push(@end, $i - 1);
         push(@ori, $string);
      }
   }
   my $pronto;
   return (\@ori, \@ini, \@end);
}

# Module test unit. Uncomment to use.
#print "Type a sentence:\n";
#my $sentence = <STDIN>;
#main($sentence);

1;

__END__

# GNU Lesser General Public License
# Copyright (C) 2005 Escola Politécnica da Universidade de São Paulo - Laboratório de Linguagens e Técnicas Adaptativas (LTA)
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

=head1 NAME

tgStructure

=head1 SYNOPSIS

Analyses the sentence and determines in which position each word or punctuation mark begin and end.

=head1 DESCRIPTION

Analyses the sentence and builds three arrays: @ori, @ini and @end.

@ori holds the original sentence. A position in the array is associated to each word or punctuation mark.
@ini and @end hold the initial and final character position of a word or punctuation mark in the sentence, respectively.

e.g.: O Sr. Madruga é doido!

          (0, 1,  2,    3,    4,   5,   6) => array position
   @ori = (O, Sr, ., Madruga, é, doido, !)
   @ini = (0, 2,  4, 6,      14, 16,   21)
   @end = (0,  3, 4,      12,14,    20,21)

=head1 AUTHOR

Escola Politécnica da Universidade de São Paulo - Laboratório de Linguagens e Técnicas Adaptativas (LTA)

=head1 BUGS

None found at present.

=head1 SEE ALSO

Nothing.

=head1 COPYRIGHT

Copyright 2005, Escola Politécnica da Universidade de São Paulo - Laboratório de Linguagens e Técnicas Adaptativas (LTA). All Rights Reserved. This program is under GNU-LGPL.

=cut


Então a tela ficou assim, iniciei o OpenOffice, abri um texto mas não vi o resultado, além também de não ver o tal ícone:


Desculpem-me este incomodo p/ vcs.


Linux User #440843 | Ubuntu User #11469

alarcon

#4
Caro rjbgbo eu fiz assim, editei todos os arquivos com extensão .pm e .pl que possuíam estas informações;

(setlocale(LC_CTYPE, 'pt_BR.ISO_8859-1') or die "Invalid locale pt_BR");

e

checkPT_BR() || die;

e alterei, conforme o autor deste texto, para:

(setlocale(LC_CTYPE, 'pt_BR.UTF8') or die "Invalid locale pt_BR");

e

#checkPT_BR() || die;

respectivamente, em todos os arquivos com extensões .pm e .pl que estão contidos em /usr/local/CoGrOO/cogroo e suas subpastas, ou seja é muito trabalhoso isso.

Também salvei todos estes arquivos no formato UTF8 através do salvar como do gedit.

Bom, depois disso basta você abrir um arquivo de texto do OpenOffice e clicar no ícone e caso o seu texto precise de correções ele mostrará numa janela as possíveis sugestões.

Se esqueci de algo, por favor verifique o texto original do autor deste tópico para maiores detalhes.

Há outra coisa é preciso ter o java instalado.

Axl_Kurt

putz...
num tem nenhuma outra forma mais simplificada não?
Axl_Kurt

alarcon

Citação de: Axl_Kurt online 06 de Fevereiro de 2007, 22:08
putz...
num tem nenhuma outra forma mais simplificada não?

Trabalhoso é, mas pelo menos funciona depois destas mudanças sugeridas pelo autor deste tópico. O problema é que este programa foi feito, na versão linux, para quem tem uma distribuição baseada no KDE e não no Gnome, pois neste dá erro devido a codificação.

Pode ser que se possa fazer um script para se automatizar estas mudanças, mas aí são outros quinhentos.  ;D

Axl_Kurt

alguém sabe se já existe um script que automatize a instalação deste corretor?
Axl_Kurt