#/usr/bin/perl <$output0")) { die "Pb a l'ouverture du fichier $output0"}; #close(FILEOUT); # sortie xml my $output="$rubrique-surface-etiq.xml"; if (!open (FILEOUT,">$output")) { die "Pb a l'ouverture du fichier $output"}; #---------------------------------------- début fichier sortie xml print FILEOUT "\n"; print FILEOUT "\n"; print FILEOUT "Manying Zhang\n"; close(FILEOUT); #---------------------------------------- # Lancement procédure de récursion &parcoursarborescencefichiers($rep); #---------------------------------------- fin fichier sortie xml open (FILEOUT, ">>:encoding(utf-8)", $output); print FILEOUT "\n"; close(FILEOUT); exit; #---------------------------------------------- sub parcoursarborescencefichiers { #SOUSPROGRAMME identique à BAO1 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) { print " ==> ",$file,"\n"; &parcoursarborescencefichiers($file); print " ==> ",$file,"\n"; } if (-f $file) { # TRAITEMENT à réaliser sur chaque fichier if ($file =~/$rubrique.+\.xml$/) { # si c'est xml, c'est la SURFACE print "<",$i++,"> ==> ",$file,"\n"; $codage = "utf-8"; open (FIC, "<:encoding($codage)", $file); #open (OUT, ">>:encoding($codage)", "$rubrique.txt"); #Si l'on voulait ce fichier txt, on voit directement BAO1 résultat. open (OUT2, ">>:encoding($codage)", $output); print OUT2 "\n"; my $texte=""; while (my $ligne = ) { chomp $ligne; $ligne =~ s/\r//g; $texte = $texte . $ligne; } close FIC; $texte =~ s/>\s+([^<]+?)<\/title><link>(?:[^<]+?)<\/link><description>([^<]+?)<\/description>/g) { my $titre = $1; my $description = $2; $titre=~s/<.+?>//g; # Nettoyage titre $titre.="."; $titre=~s/\?\.$/\?/; $description=~s/<.+?>//g; # Nettoyage description if (!(exists $dico{$titre})) { $dico{$titre} = 1; #print OUT "$titre\n"; #print OUT "$description\n\n"; my ($titretag, $descriptiontag) = &etiquetage($titre, $description); # depuis ça, les valeurs des variables $titre et $description sont étiquettées print OUT2 "<item>\n<title>$titretag\n$descriptiontag\n\n"; } } print OUT2 "\n"; #close OUT; close OUT2; } } } } #---------------------------------------------- # SOUS-PROGRAMME D'ETIQUETAGE sub etiquetage { my ($t, $d) = @_; # Attribution des valeurs d'une liste a des variables # traitement du titre open(TMP, ">:encoding(utf8)", "titre.txt"); print TMP $t; close TMP; # Commande de tokenisation system("perl tokenise-utf8.pl titre.txt | ./tree-tagger -token -lemma -no-unknown french-oral-utf-8.par > titre_tag.txt"); # Commande d'etiquetage system("perl treetagger2xml-utf8.pl titre_tag.txt"); # resultat sur titre_tag.txt.xml open(TMP2, "<:encoding(utf8)","titre_tag.txt.xml"); my $t_tag = ""; #my $trash = ; my $ligne= ; # lecture 'pour rien' pour que la boucle lise a partir de la deuxieme ligne et comme ça on garde pas l'entete xml dans la variable de texte a etiqueter while (my $ligne = ) { chomp $ligne; $t_tag .= $ligne; } close TMP2; # traitement de la description open(TMP, ">:encoding(utf8)", "description.txt"); print TMP $d; close TMP; system("perl tokenise-utf8.pl description.txt | ./tree-tagger -token -lemma -no-unknown french-oral-utf-8.par > description_tag.txt"); # Commande d'etiquetage system("perl treetagger2xml-utf8.pl description_tag.txt"); open(TMP2, "<:encoding(utf8)","description_tag.txt.xml"); my $d_tag = ""; my $ligne= ; #my $trash= ; while (my $ligne = ) { chomp $ligne; $d_tag .= $ligne; } close TMP2; return($t_tag, $d_tag); } #----------------------------------------------