User Tools

Site Tools


ferramentas:jspell

jSpell

O Jspell é um analisador morfológico derivado do corrector ortográfico ispell. (jspell = ispell++). O seu principal desenvolvimento tem sido com vista à sua utilização para a língua portuguesa. No entanto, existem dicionários para outras línguas.

Download

O método canónico para instalação do Jspell é a instalação do módulo Perl Lingua::Jspell. Em sistemas Unix:

  sudo cpan Lingua::Jspell

Em Windows, recomenda-se a instalação do Strawberry Perl e instalação do módulo na linha de comando com

  cpan Lingua::Jspell

A instalação de dicionários é feita com o comando

  jspell-installdic pt

(precedido de sudo nos sistemas Unix)

Versões antigas

Publicações

  • José João Almeida and Alberto Simões (2007). Jspellando nas morfolimpíadas: Sobre a participação do Jspell nas morfolimpíadas. In Diana Santos, editor, Avaliação conjunta: um novo paradigma no processamento computacional da língua portuguesa. IST Press, 2007.
  • Alberto Manuel Simões and José João Almeida (2001). jspell.pm — um módulo de análise morfológica para uso em processamento de linguagem natural. In Actas da Associação Portuguesa de Linguística, pages 485–495. PDF
  • José João Almeida e Ulisses Pinto (1995). Jspell – um módulo para análise léxica genérica de linguagem natural. In Actas do X Encontro da Associação Portuguesa de Linguística. PostScript

Algumas características

Os dicionários jspell:

  • são externos (pode haver vários…)
  • usam regras morfológicas que podem ser redefinidas jspell-aff

Vários modos de funcionamento:

  • como biblioteca C (libjspell.so)
  • como biblioteca perl (Man 3 jspell)
  • como corrector ortográfico
  • como comando Unix (Man jspell)
  • como interface online: (WebJspell)

Dos seus dicionários são gerados:

  • dicionários ispell
  • dicionários aspell
  • dicionários winedt
  • dicionários para abiword
  • dicionários myspell

Jspell.pm by example

Funções jspell_dict, setmode, featags

   #!/usr/bin/perl -s
   use jspell;
   
   jspell_dict("port");   # select portuguese dictionary
   setmode("+flags");     # show  feature "flag" in output
   
   while(<>){
     chop;
     if($tag){  print join(" ",featags($_)). "\n"}
     else    {  print any2str([fea($_)],1) . "\n"}
   }

Funções flags, rad, fea, any2str

   #!/usr/bin/perl
   use jspell;
   jspell_dict("port");
   
   setmode("+flags");
   while(<>){
     chop;
     print "\n($_)----------\nflags=";
     for(flags($_)){print "$_!";}
     print "----------\npossíveis radicais=";
     for(rad($_)){print "$_!";}
     print "\n----------\nanálise";
     print any2str([fea($_)],1). "\n";
     print "----------\n";
   }

Função nlgrep

   #!/usr/bin/perl -s
   
   use jspell;
   jspell_dict("port");
   
   %opt=();
   $opt{sep}=$sep if $sep;
   $opt{max}=$max if $max;
   $opt{radtxt}=$radtxt if $radtxt;
   
   my @a= nlgrep({%opt},@ARGV);
   
   print join("\n======\n",@a),"\n";

Função onethat

   #!/usr/bin/perl
   use jspell;
   use Data::Dumper;
   jspell_dict("port");
   
   print(any2str({onethat({CAT=>"np"},fea("Porto"))}, "compact"));
   print(any2str({onethat({CAT=>"np"},fea("Suíça"))}, "compact"));
ferramentas/jspell.txt · Last modified: 2016/09/14 11:51 by ambs