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 107
| #!/usr/bin/perl
#ligne de commande : perl extraction_phrase.pl -file <fichier.html> -list <fichier-formeverbales+lemmes>
#====================================================================
use strict;
use warnings;
use locale;
use utf8;
use Encode;
use Getopt::Long;
use HTML::TreeBuilder;
ActiverAccents();
#====================================================================
# options
my $corp;
my $listverbs;
GetOptions( "file=s", \$corp, "list=s", \$listverbs, );
my $ref_tabformesV = FormesV($listverbs);
Lecture_et_traitement($corp, $ref_tabformesV);
sub FormesV {
my $file_liste = shift;
my %tabformesV;
open my $fh, '<:encoding(UTF-8)', $file_liste or die "impossible d'ouvrir '$file_liste' \n";
print "Lecture du fichier\n";
while ( my $ligne = <$fh> ) {
chomp $ligne;
next if ( $ligne =~ /^#/ );
#print "===$ligne===\n";
my ( $forme, $infinitif ) = split( /\|/, $ligne );
if ( my ( $forme, $infinitif ) = split( /\|/, $ligne ) ) {
$tabformesV{ lc($forme) } = $infinitif;
}
}
return \%tabformesV;
}
sub Lecture_et_traitement {
my ($fichier, $ref_tabformesV) = @_;
open my $fh, '<:encoding(UTF-8)', $fichier or die "impossible d'ouvrir '$fichier' \n";
print "Lecture et traitement du document \n";
my $root = HTML::TreeBuilder->new_from_file($fh);
my @tabphrases = $root->look_down( '_tag', 'p' );
foreach my $p (@tabphrases) {
my $phrase = $p->as_text;
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 $ref_tabformesV->{ lc($verbe) } ) {
print "$verbe ==> " . $ref_tabformesV->{ lc($verbe) } . "\n";
#print "===>$phrase", "\n";
}
else {
print "++++$verbe++++\n";
}
}
}
close($fh);
}
sub ActiverAccents {
my $encodage;
# Windows
if ( lc($^O) eq 'mswin32' ) {
eval {
my ($codepage) = ( `chcp` =~ m/:\s+(\d+)/ );
$encodage = "cp$codepage";
foreach my $h ( \*STDOUT, \*STDERR, \*STDIN, ) {
binmode $h, ":encoding($encodage)";
}
};
}
else {
$encodage = `locale charmap`;
eval {
foreach my $h ( \*STDOUT, \*STDERR, \*STDIN, ) {
binmode $h, ":encoding($encodage)";
}
};
}
return $encodage;
} |
Partager