ferramentas:jspell
Table of Contents
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 09:51 by ambs
