#/usr/bin/perl
my $rep="$ARGV[0]";
# on s'assure que le nom du répertoire ne se termine pas par un "/"
$rep=~ s/[\/]$//;
# on initialise une variable contenant le flux de sortie
my $DUMPFULL1="";
#----------------------------------------
my $output1="etiquetage.xml";
if (!open (FILEOUT,">$output1")) { die "Pb a l'ouverture du fichier $output1"};
my $output2="etiquetage.txt";
if (!open (OUTPUT2,">$output2")) { die "Pb a l'ouverture du fichier $output2"};
my $output3="mot.txt";
# Si le fichier mot.txt ne peut s'ouvrir ce message apparait.
if (!open (OUTPUT3,">$output3")) { die "Pb a l'ouverture du fichier $output3"};
#----------------------------------------
&parcoursarborescencefichiers($rep); #recurse!
#----------------------------------------
print FILEOUT "<?xml version=\"1.0\" encoding=\"iso-8859-1\" ?>\n";
print FILEOUT "<PARCOURS>\n";
print FILEOUT "<NOM>Kozhina Natalia</NOM>\n";
print FILEOUT "<FILTRAGE>".$DUMPFULL1."</FILTRAGE>\n";
print FILEOUT "</PARCOURS>\n";
print OUTPUT2 $cont;
close(FILEOUT);
close(FILEOUT2);
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 =~ /^\.\.?$/;
$file = $path."/".$file;
if (-d $file) {
&parcoursarborescencefichiers($file); #recurse!
}
if (-f $file) {
&ouvre;
&entete;
open (INFILE,"$file");
open (FICHIER, ">>ttagger.txt");
print FICHIER "<fichier>\n<name>".$file."</name>\n";
close (FICHIER);
while ($ligne = <INFILE>){
if ($ligne=~/<description>([^<]+)<\/description>/) {
$arv= "<FICHIER><NOM>".$file."</NOM><CONTENU>".$1."</CONTENU></FICHIER>";
$temp =$1."\n";
$temp=~ s/([^A-Za-zéèàëêâùïçôîÉÈÀÊÔÂÎÏËÙÇ'])/\n$1\n/g;
$temp=~s/(&#39;)/\n'\n/g;
$temp=~s/(&#34;)/\n"\n/g;
$temp=~s/([,])/\n$1/g;
$temp=~s/(é|é)/é/g;
$temp=~s/ê/ê/g;
$temp=~s/è/è/g;
$temp=~s/ô/ô/g;
$temp=~s/Ã[^.*]/à/g;
$temp=~s/[ ]/\n/g;
print OUTPUT3 $temp;
close (OUTPUT3);
my $texte="mot.txt";
$ENV{'PATH'} = " ./bin;";
system("set $ENV{'PATH'}");
system(" ./bin/tree-tagger.exe -token -lemma -no-unknown ./lib/french.par $texte >>ttagger.txt");
&traitement;
open (OUTPUT3,">mot.txt");
$DUMPFULL1 = $DUMPFULL1 . $arv ;
$cont=$cont.$temp;
}
}
open (FICHIER, ">>ttagger.txt");
print FICHIER "</fichier>\n";
close (FICHIER);
close (INFILE);
print $i++,"\n";
}
&fin;
&ferme;
}
}
sub ouvre {
my $FichierEntree="ttagger.txt";
open(Entree,$FichierEntree);
$FichierSortie=$FichierEntree . ".xml";
open(Sortie,">$FichierSortie");
}
# Entête de document XML
sub entete {
print Sortie "<?xml version=\"1.0\" encoding=\"iso-8859-1\" standalone=\"no\"?>\n";
print Sortie "<PARCOURS>\n";
print Sortie "<NOM>Kozhina Natalia</NOM>\n";
print Sortie "<ETIQUETAGE>\n";
}
# Traitement
sub traitement {
while ($Ligne = <Entree>)
{
if ($Ligne!~/\ô\¯\:\\ô\¯\:\^C\^Q/) {
# Remplacement des guillemets par <![CDATA["]]> (évite erreur d'interprétation XML)
$Ligne=~s/\"/<![CDATA[\"]]>/g;
$Ligne=~s/([^\t]*)\t([^\t]*)\t(.*)/<element>\n <data type=\"type\">$2<\/data>\n <data type=\"lemma\">$3<\/data>\n <data type=\"string\">$1<\/data>\n<\/element>/;
print Sortie $Ligne;
}
}
}
# Fin de fichier
sub fin {
print Sortie "</fichier>\n";
print Sortie "</ETIQUETAGE>\n";
print Sortie "</PARCOURS>\n";
}
# Fermeture des tampons
# sub ouvre.
sub ferme {
close(Entree);
close(Sortie);
}