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 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
|
#!/usr/bin/perl -w
#ligne de commande : perl extraction_phrase.pl -file <fichier.html> -list <fichier-formeverbales+lemmes>
#====================================================================
use strict;
use locale;
use utf8;
use Encode;
use Getopt::Long;
use HTML::TreeBuilder;
#binmode STDOUT, 'utf8';
binmode STDIN, 'utf8';
#====================================================================
# options
sub usage {
warn "Usage :
-file # fichier à analyser
-list # fichier contenant les verbes+lemmes
\n"
}
my $corp;
my $listverbs;
unless (&GetOptions(
"file=s", \$corp,
"list=s", \$listverbs,
))
{
warn "Probleme d'options\n";
&usage;
die;
}
#=====================================================================
my $ligne;
my @lignes;
my $forme;
my $infinitif;
my %tabformesV;
sub FormesV{
my ($f) = $_[0];
open (F, $f) or die "impossible d'ouvrir '$f' \n" ;
warn "Lecture du fichier \n";
binmode(F, ':utf8');
while (<F>) {
next if (/^#/);
$ligne = $_;
chomp ($ligne);
#print "===$ligne===\n";
($forme, $infinitif) = split (/\|/, $ligne);
$tabformesV{lc($forme)} = $infinitif;
}
}
&FormesV($listverbs);
sub Lecture_et_traitement {
my ($c) = $_[0];
open (C, $c) or die "impossible d'ouvrir '$c' \n" ;
warn "Lecture et traitement du document \n";
binmode(C, ':utf8');
my $tree = HTML::TreeBuilder->new; # empty tree
$tree->parse_file($c);
my $root = HTML::TreeBuilder->new_from_file($c);
my @tabphrases = $root->look_down('_tag', 'p');
foreach my $p(@tabphrases){
my $phrase = $p->as_text;
#print "$phrase", "\n";
my @tabverbes = $p->look_down('_tag', 'b');
foreach my $v (@tabverbes){
my $verbe = $v->as_text;
#print "$verbe\n";
chomp ($verbe);
$verbe =lc($verbe);
$verbe =~ s/^ //g;
$verbe =~ s/j' |j'|je |tu |elle |nous |vous |ils |elles |il |lui |lui-même |me |moi |moi-même |te |toi |toi-même |elle-même |nous-même |vous-même |eux |eux-même |soi-même |toi-meme |elle-meme |nous-meme |vous-meme |soi-meme |toi meme |elle meme |nous meme |vous meme|eux meme |soi meme |soi même |toi même |elle même |nous même |vous même |moi-même |moi meme| moi-meme eux |eux meme |m' |ma |t' |ne |pas |y |ça |ce |n' |s' |c' |en |on |l' |le |la |les |leurs |pas //ig;
$verbe =~ s/q' |que |qu' //ig;
$verbe =~ s/ $//g;
if (exists $tabformesV{lc($verbe)}) {
print "$verbe ==> $tabformesV{$verbe}\n";
#print "===>$phrase", "\n";
}
else{
print "++++$verbe++++\n";
}
}
}
$tree = $tree->delete;
}
&Lecture_et_traitement($corp);
Merci d'avance pour vos proposition :) |
Partager