use strict; use locale; my %tags; my %verbe; while (my $ligne = ){ chomp($ligne); my ($forme, $lemme, $tag) = split(/\t/, $ligne); if ($tag =~ /^V/){ $verbe{$lemme}{$tag} ++; $tags{$tag} ++; } } my @liste_verbes = sort keys %verbe; my (@tags_normaux, @tags_exceptionnels); foreach my $t (sort keys %tags) { if ($tags{$t} < 0.8 * $#liste_verbes){ push(@tags_exceptionnels, $t); } else { push(@tags_normaux, $t); } } foreach my $v (@liste_verbes){ my @res; foreach my $t (@tags_normaux){ if (defined($verbe{$v}{$t})){ if ($verbe{$v}{$t} != 1){ push(@res, $t. " " . $verbe{$v}{$t}); } } else{ push(@res, $t . " 0"); } } foreach my $t (@tags_exceptionnels){ if (defined($verbe{$v}{$t})){ push(@res, $t . " " . $verbe{$v}{$t}); } } if (@res){ print $v, "\t", join(" ", @res), "\n"; } }