#!/usr/bin/perl use strict; use warnings; use utf8; use Data::Dumper; use Lingua::FreeLing; use Lingua::FreeLing::Simple; binmode(STDOUT, ":utf8"); my $str1 = "mudanças é que é bonito."; print "'$str1'\n"; my $st = Lingua::FreeLing::Simple::jjtag($str1); print( join("\n", map { join("\t",@$_)} @$st),"\n"); Lingua::FreeLing::Simple::dt1($st, cola=> sub{ print join("\n\n",@_)}, pf => sub{join("=",@_)}); package Lingua::FreeLing::Simple; use Encode; my %analysers = (); sub dt1{ my $s=shift; my %h=@_; $h{cola}( map {$h{pf}( @$_) } @$s ); } sub jjtag{ my $s0 = shift; my $l = shift || "pt"; $s0 = encode("iso-8859-1", $s0); $analysers{$l} = new Lingua::FreeLing::Simple($l) if not $analysers{$l}; my $s1 = $analysers{$l}->analyse($s0); my @sentence = (); for my $s (@$s1) { my $ws = $s->get_words; for my $w (@$ws) { my $form = decode("iso-8859-1", $w->get_form); my $lemma = decode("iso-8859-1",$w->get_lemma); my $tag = decode("iso-8859-1",$w->get_parole); push(@sentence,[$form , $lemma, $tag]); } } return \@sentence }