Script Perl " Extraction, parcours arborescence, étiquetage Treetagger

Perl: De la magie

#document
 
	
			#/usr/bin/perl
<du fichierdu filtrage

DOC

#-----------------------------------------------------------
my $rep="$ARGV[0]";
my $type="$ARGV[1]";
my %dico;
# 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


#----------------------------------------
mkdir "output";
my $output1=".\/output\/$type.xml";
my $output2=".\/output\/$type.txt";
#----------------------------------------
open FILEOUT,">>:encoding(utf8)",$output1;
if (!open (FILEOUT,">:encoding(utf8)",$output1)) { die "Pb a l'ouverture du fichier $output1"};
open my $out, ">>:encoding(utf8)", $output2;

print FILEOUT "\n";
print FILEOUT "\n";
print FILEOUT "Zakaria MALEK & Ismail BZIZ\n";
print FILEOUT "";

#----------------------------------------
&parcoursarborescencefichiers($rep);	# on lance la récursion.... et elle se terminera aprés examen de toute l'arborescence
#----------------------------------------

print FILEOUT "\n";
print FILEOUT "\n";
close(FILEOUT);
close $out;
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 =~ /^\.\.?$/; # if fichier_nom[0]==".": continue (python)
		$file = $path."/".$file; # os.path.join(repertoire/nom_fichier)
		if (-d $file) { # interrogation de la nature du fichier
			print " --> \t$file\n";
			&parcoursarborescencefichiers($file);
      #recursivité, on rappelle la fonction dans la foncion si ce n'est pas un fichier
      # descente dans l'arborescence
			print " --> \t$file\n";
		}
		if (-f $file) {
					#si c'est un fichier contenant $type : 3208.xml
					if ($file =~ /$type.+\.xml/) {
						open my $input, "<:encoding(utf8)" ,$file;
						my $texte = "";
						while (my $ligne = <$input>) {
							chomp $ligne;
							$ligne =~ s/\r//g;
							$texte = $texte . $ligne ; # $text.=$ligne
              # print $texte;
						}
            # Nettoyage du texte
						$texte =~ s/> +((.+?)<\/link>)?(.+?)<\/title>(<link>(.+?)<\/link>)?<description>(.+?)<\/description>/g){
              my $titre=$3.".";
							my $description=$6;
              $description =~ s/<.+?>//g;
              # print "\n",$titre;
              # print "\n",$description,"\n";
							if (!(exists $dico{$titre})) {
              #---------------------------------
              # on étiquète la sortie XML (fichiers .txt qui deviennent .xml)
              # 1. segmentation
              # 2. étiquète
              # 3. convertion XML
							my ($xmltitre, $xmldescription) = &etiquette ($titre,$description);
                # print $out "\nFichier:\t$file\n\n";
								print $out "$titre\n"; # on imprime le titre
								print $out "$description\n\n"; # on imprime la description
                # print $out "-------------------------------------------------------------------------------------\n";
								print FILEOUT "<item><titre>$xmltitre</titre><description>$xmldescription</description></item>\n";
                $dico{$titre} = 1;
								#print $DUMPFULL1;

							}
						}
					close $input1;
          close $input2;
				}
			}
		}
}
#----------------------------------------------

sub etiquette {

my $var1 = shift(@_); #$_[0]
my $var2 = shift(@_); #$_[1]

my $output3=".\/output\/titre.txt";
my $output4=".\/output\/description.txt";

open my $f1, ">:encoding(utf8)", $output3;
open my $f2, ">:encoding(utf8)", $output4;

print $f1 $var1;
print $f2 $var2;
close $f1;
close $f2;

system("perl  tokenise-utf8.pl ./output/titre.txt | ./tree-tagger -token -lemma -no-unknown french-oral-utf-8.par > ./output/titre_etiquete.txt");
system ("perl treetagger2xml-utf8.pl ./output/titre_etiquete.txt utf8"); #FICHIER CREE
open my $f1, "<:encoding(utf8)", "./output/titre_etiquete.txt.xml";
	my $concat="";
	my $ligne = <$f1>;
	while (my $ligne = <$f1>) {
	$concat = $concat . $ligne ;
	}
close $f1;
system("perl  tokenise-utf8.pl ./output/description.txt | ./tree-tagger -token -lemma -no-unknown french-oral-utf-8.par > ./output/description_etiquete.txt");
system ("perl treetagger2xml-utf8.pl ./output/description_etiquete.txt utf8"); #FICHIER CREE
open my $f2, "<:encoding(utf8)", "./output/description_etiquete.txt.xml";
	my $concat2="";
	my $ligne = <$f2>;
	while (my $ligne = <$f2>) {
	$concat2 = $concat2 . $ligne ;
	}
close $f2;


return $concat, $concat2;

# exit;
}

			</pre>
			</object>
			<div id="copyright" class="container">
						<ul class="links">
							<li style="font-family:courier;"> Design: © Zakaria <b>MALEK</b> & Ismail <b>BZIZ</b></li><li></li>
						</ul>
					
			

		</div>

			</body>
			</html>