#/usr/bin/perl -w use strict; my $file="$ARGV[0]"; # On récupère dans une variable le nom du fichier $file=~s/\.xml$//; # On ouvre le document XML donnée en argument et on créé un fichier de sortie my $output="OUTPUT/$file"."-tree-tagger.xml"; open(FICHIERUB,"<:encoding(utf-8)","$file.xml"); open(SORTIEXML,">:encoding(utf-8)","$output"); # On concatène toutes balises du document XML dans une variable my $textexml=""; while (my $ligne = ) { $ligne =~s /\n//g; $textexml .= $ligne; } # On prépare l'entête du document de sortie au format XML print SORTIEXML "\n\n"; # Au fur et à mesure, on extrait au moyen d'une expression régulière le contenu des balises et <abstract> ainsi que le numéro des articles et leur date de parution while ($textexml =~/<article numero=\"([0-9]+)\"><title>([^<]+)<\/title><abstract\>([^<]+)<\/abstract><date>([^<]+)<\/date>/g) { my $numero=$1; my $titre=$2; my $resume=$3; my $date=$4; print $titre; # On enregistre dans des fichiers tampon le contenu textuel des balises <titre> et <abstract> open(TAMPONTITRE,">:encoding(utf-8)","tampontitre.txt"); open(TAMPONRESUME,">:encoding(utf-8)","tamponresume.txt"); print TAMPONTITRE $titre; print TAMPONRESUME $resume; close TAMPONTITRE; close TAMPONRESUME; # On lance le programme TreeTagger sur le fichier tampon contenant le contenu textuel du titre de l'article system("perl TreeTagger/cmd/tokenise-fr.pl tampontitre.txt | TreeTagger/bin/tree-tagger TreeTagger/lib/french-utf8.par -lemma -token -no-unknown -sgml > treetagger.txt"); # On convertie au format XML le résultat de l'étiquetage system("perl TreeTagger/cmd/treetagger2xml-utf8.pl treetagger.txt utf-8"); # On ouvre le fichier de résultat après convertion au format XML et on enregistre son contenu dans une variable open(OUT,"<:encoding(utf-8)","treetagger.txt.xml"); my $titreetiquete=""; while (my $l=<OUT>) { $titreetiquete.=$l; } # On ferme ce document close(OUT); # On effectue la même série d'opération pour obtenir l'étiquetage du contenu de la balise <abstract> system("perl TreeTagger/cmd/tokenise-fr.pl tamponresume.txt | TreeTagger/bin/tree-tagger TreeTagger/lib/french-utf8.par -lemma -token -no-unknown -sgml > treetagger.txt"); system("perl TreeTagger/cmd/treetagger2xml-utf8.pl treetagger.txt utf-8 "); open(OUT,"<:encoding(utf-8)","treetagger.txt.xml"); my $resumeetiquete=""; while (my $l=<OUT>) { $resumeetiquete.=$l; } close(OUT); # On écrit dans le fichier de sortie XML le résultat de l'étiquetage du titre et du résumé de chaque article au format XML. On en profite pour ajouter les balises correspondant au numéro de l'article et à la date de publication print SORTIEXML "<article numero=\"$1\">\n<titre>\n$titreetiquete</titre>\n<resume>\n$resumeetiquete</resume>\n<date>$date</date>\n</article>\n"; } # On cloture le fichier XML de sortie print SORTIEXML "</rubrique>"; # On ferme les fichiers ouverts close SORTIEXML; close FICHIERUB; # On supprime les fichiers tampons unlink("tampontitre.txt"); unlink("tamponresume.txt"); unlink("treetagger.txt"); unlink("treetagger.txt.xml");