#/usr/bin/perl
use HTML::Entities ;
<du fichierdu filtrage
DOC
#-----------------------------------------------------------
my $rep="$ARGV[0]";
# on s'assure que le nom du répertoire ne se termine pas par un "/"
$rep=~ s/[\/]$//;
# on initialise deux variables contenant le flux de sortie
my $DUMPFULL1="";
my $DUMPFULL2="";
my %dico;
my $codage = "utf-8" ;
my $rubrique = "$ARGV[1]";
#----------------------------------------
my $output1="$rubrique.xml";
my $output2="$rubrique.txt";
if (!open (FILEOUT1,">:encoding($codage)",$output1)) { die "Pb a l'ouverture du fichier $output1"};
if (!open (FILEOUT2,">:encoding($codage)",$output2)) { die "Pb a l'ouverture du fichier $output2"};
print FILEOUT1 "\n";
print FILEOUT1"\n";
print FILEOUT1 "HELMAn_Agathe\n";
close (FILEOUT1);
close (FILEOUT2);
#----------------------------------------
&parcoursarborescencefichiers($rep); # on lance la récursion.... et elle se terminera après examen de toute l'arborescence
#----------------------------------------
open (FILEOUT1,">>:encoding(utf-8)", $output1);
print FILEOUT1 "\n";
close(FILEOUT1);
exit;
#----------------------------------------------
sub parcoursarborescencefichiers {
my $path = shift(@_);
opendir(DIR, $path) or die "can't open $path: $!\n";
my @files = readdir(DIR);
closedir(DIR);
foreach my $file (@files) {
next if $file =~ /^\.\.?$/;
next if $file =~ /^\._/;
next if $file =~ /^fil/;
$file = $path."/".$file;
if (-d $file) {
print " ==> ",$file,"\n";
&parcoursarborescencefichiers($file); #recurse!
print " ==> ",$file,"\n";
}
if (-f $file) {
if ($file =~ /$rubrique.+\.xml$/) {
print "<",$i++,"> ==> ",$file,"\n";
$codage = "utf-8";
open (FIC, "<:encoding($codage)", $file);
open (OUT1, ">>:encoding($codage)", "$output1");
open (OUT2, ">>:encoding($codage)", "$output2");
#ramener tout le flux textuel de FIC sur une seule ligne
my $texte="";
while (my $ligne = ) {
chomp $ligne; # Suppression du retour a la ligne
$ligne =~ s/\r//g; # Suppression des éventuels retours à la ligne Windows
$texte = $texte . $ligne; # Concaténation de la ligne lue dans la variable $texte
}
close FIC;
$texte =~ s/>\s+>.*?([^<]+?)<\/title>.*?([^<]+?)<\/description>/g) { # Recherche des titres et des descriptions à l'intérieur des balises -
my $titre = $1;
my $description = $2;
# Nettoyage du texte extrait
$titre=~s/<.+?>//g;
$titre.=".";
$titre=~s/\?\.$/\?/;
$titre=~s/&/&/g;
$description=~s/<.+?>//g;
$description=~s/&/&/g;
decode_entities($description) ;
decode_entities($description) ; # Conversion des entités html
if (!(exists $dico{$titre})) {
$dico{$titre} = 1;
print OUT2 "$titre\n"; # Impression sur le fichier texte
print OUT2 "$description\n\n";
my ($titretag,$descriptiontag) = &etiquetage($titre,$description); # Appel de la fonction d'étiquetage
print OUT1 "
- $titretag$descriptiontag
\n"; # Impression du texte taggé sur le fichier XML.
}
}
close OUT1;
close OUT2;
# fin de traitement du fichier
}
}
}
}
#----------------------------------------------
sub etiquetage {
my ($t,$d)= @_;
open(TMP,">:encoding(utf8)","titre.txt");
print TMP $t;
close TMP;
system("perl tokenise-utf8.pl titre.txt | tree-tagger.exe -token -lemma -no-unknown french-utf8.par > titre_tag.txt");
system("treetagger2xml-utf8.exe titre_tag.txt utf8"); # résultat qui est contenu dans titre_tag.txt.xml
open(TMP2, "<:encoding(utf8)","titre_tag.txt.xml");
my $t_tag="";
my $ligne = ;
while (my $ligne = ) {
#chomp $ligne;
$t_tag = $t_tag . $ligne;
}
close TMP2;
open(TMP,">:encoding(utf8)","description.txt");
print TMP $d;
close TMP;
system("perl tokenise-utf8.pl description.txt | tree-tagger.exe -token -lemma -no-unknown french-utf8.par > description_tag.txt");
system("treetagger2xml-utf8.exe description_tag.txt utf8"); # résultat qui est contenu dans titre_tag.txt.xml
open(TMP2, "<:encoding(utf8)","description_tag.txt.xml");
my $d_tag="";
my $ligne = ;
while (my $ligne = ) {
#chomp $ligne;
$d_tag = $d_tag . $ligne;
}
close TMP2;
return($t_tag,$d_tag);
}
#----------------------------------------------