#!/usr/bin/perl -s our($id); $id ||= "__jj1-constituicao"; my @l = (); my @inv =(direction => "<~"); use NAT::Client; use Data::Dumper; $Data::Dumper::Indent=1; $Data::Dumper::Terse=1; my $client = NAT::Client->new( Local => "$id"); while(<>){ chomp; my %r = (); my $ws = split(/\s+/,$_); my $word = $_; print "\n"; ## pre ngrams if ($ws==2){ for (sngrams({max=>10},"* $word")){ next unless $_; next if /\(null\)/; printf("%-13s |", "$_->[3] $_->[0]"); print "\n"; } } elsif($ws == 1){ for (sngrams({max=>10},"* $word")){ next unless $_; next if /\(null\)/; $tmp = ""; for (sngrams({max=>10},"* $_->[0] $word")){ next unless $_; next if /\(null\)/; $tmp .= "$_->[0] |"; } printf("%85s| %s\n", substr($tmp,0,85), "$_->[2] $_->[0]"); } } print "===== $word =====\n"; if ($ws==2){ for (sngrams({max=>10},"$word *")){ next unless $_; next if /\(null\)/; printf("%-13s |", "$_->[3] $_->[2]"); print "\n"; } } elsif($ws == 1){ for (sngrams({max=>10},"$word *")){ next unless $_; next if /\(null\)/; printf("%-13s |", "$_->[2] $_->[1]"); for (sngrams({max=>10},"$word $_->[1] *")){ next unless $_; next if /\(null\)/; print ("| $_->[2] "); } print "\n"; } } print "\n"; } sub sngrams{ my %opt =(max => 50); if(ref($_[0]) eq "HASH") {%opt = (%opt , %{shift(@_)}) } ; my $exp=shift; my $ng=split(/\s+/,$exp); if($opt{max}){ # grep {$_} ((sort {$b->[$ng]<=>$a->[$ng]} @{$client->ngrams($exp)})[0..$opt{max}-1]) } else { (sort {$b->[$ng]<=>$a->[$ng]} @{$client->ngrams($exp)}) } } __END__ =head1 NAME jj-10 - compact trigrams from 1 or 2 words =head1 SYNOPSIS =head1 DESCRIPTION (Previously: jj-1 -> to create the corpus) Print compact tetragrams . Example of output: que |para |todos |impediam |particularmente |(null) || os assegurar |mínimo |asseguram |indemnizações |ajudas |financeiras || aos rendimentos |e |reconversão |favor |representantes |tratamento || dos criadas |ou || por individuais || a familiares |agrupamentos || de , || especialmente exigidas || pelos anos || como ====== pescadores ===== 9 e || os | prejudicou | a | dos | aos | cientistas | proprietários 9 , || as | mas | no | e | bem | administrações | têm 6 . || (null) 4 um || rendimento 4 que || , | pretendem 3 da || união | pequena 3 ou || aquicultores | que 2 com || vista | menos In order to be accurate a big corpus is necessary... =head1 AUTHOR J.Joao Almeida, jj@di.uminho.pt =head1 SEE ALSO perl(1). =cut