1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| #!/usr/bin/perl
use warnings;
use strict;
use Data::Dumper;
use locale;
use POSIX qw(locale_h);
use utf8;
setlocale(LC_CTYPE, "fr_FR.ISO8859-1");
binmode(STDOUT, ":utf8");
my $text = "";
my $phrase_nb = 0;
my @occurrence = ();
# Si l'entrée standard contient un texte, on choisit celle-ci, sinon, on prend le texte après __DATA__ dans ce fichier
my $DATA = !-t STDIN ? *STDIN : *DATA;
while (<$DATA>) {
$text .= $_;
# Supprimer les retours à la ligne (indépendant du système de fichier)
$text =~ s/[\n\r]+/ /g;
# Traiter les phrases entières
foreach my $phrase ($text =~ /(.*?(?:\.(?:\.\.)?|\?|!))/gc) {
$phrase =~ s/^\s*//;
print "phrase ", $phrase_nb++, ": $phrase\n";
# Compter les occurences de chaque mot
my %mots;
$mots{$_}++ foreach $phrase =~ /(\w{3,})/g;
# Et enregistrer le résultat
push @occurrence, { %mots };
}
# Récupérer le résidus qui ne constitue pas une phrase
($text) = $text =~ /\G(.*)$/;
print "Résidu ", $text, "\n";
}
print Data::Dumper->Dump([\@occurrence], [qw(*occurrence)]);
__DATA__
il a fait 5 tours de vélo à travers la ville tout les soirs pendant 10 jours, puis à pied.
les tours à vélo c'est bien pendant l'été au bord de l'eau, la marche à pied en ville par contre au bout de 5 km...
en football il n'y a pas meilleur que lui en ville pour exécuter des tours de passe passe avec le pied même après 2h de match. |
Partager