Dans la boîte à outils 2, on va trouver un programme qui est un développement de la deuxième solution presentée dans la boîte à outils 1. On a developpé deux versions du programme : une version du programme pour MAC et une version du programme pour WINDOWS.
Pour télécharger la version du programme pour MAC, cliquez ici.
Pour télécharger la version du programme pour WINDOWS, cliquez ici.
Les scripts qu'on va présenter produisent en sortie : 1) un fichier au format .txt contenant les flux RSS avec le titre et le résumé de l'article sur chaque ligne; 2) un fichier au format .xml contenant les flux RSS avec un numéro attribué à l'article en ordre croissant, le nom du fichier, la date, le titre de l'article et le résumé de l'article; 3) un fichier au format XML contenant l'étiquetage de Treetagger. Les fichiers de sortie sont organisés par leur rubrique. D'abord on a ajouté l'instruction strict pour s'imposer le critère de déclarer les variables utilisées :
#!/usr/bin/perluse strict;
use Unicode::String qw(utf8);
use XML::RSS;
On a créé un repertoire pour stocker les fichiers de sortie, avec l'étoile : mkdir (*RESULTATS). En utilisant "use strict", cette instruction renvoie "faux" si on n'inclut pas d'étoiles. En fait, sans l'étoile, le nom serait ambigu (ça pourrait être compris comme une chaîne plutôt qu'un repertoire). Puis, on initialise les variables :
#Initialisation d'une variable pour traiter le numéro de la rubrique :my $numero="";
#Initialisation d'une variable pour traiter le nom de la rubrique :my $rubrique="";
#Declaration des tableaux hash pour enregistrer les titres (1) et les résumés (2) :my %dico1=();
my %dico2=();
#Initialisation des variables pour stocker les lignes extraites : #Format .txt (1) et .xml (2) et treetagger(3)my $DUMPFULL1="";
my $DUMPFULL2="";
my $DUMPFULL3="";
#Un compteur pour attribuer un numéro à chaque fichier :my $i=0;
Le programme va ensuite proposer une rubrique à choix, "A la une", "International", "Europe", etc., selon le contenu de la rubrique :
print"Voici les numeros des rubriques a traiter \n";
print" 0 : A la une\n 1 : International\n 2 : etc. ALL:* \n\n Quel est votre choix? ";
# On recupère le choix tapé au clavier et on le stocke dans une variable :my $choix_rubrique = <STDIN>;
#On supprime le dernier caractère de retour à la ligne dans le cas ou il y en a un :
chomp($choix_rubrique);
#On va créer des conditions pour attribuer des valeurs au choix de l'utilisateur. #Si le choix de l'utilisateur est equivalent a 0 on attribue les valeurs suivantes :if ($choix_rubrique eq 0){ $numero="3208"; $rubrique="a_la_une";}
elsif ($choix_rubrique eq 1){$numero="3210";$rubrique="international";}
elsif ($choix_rubrique eq 2){$numero="3214";$rubrique="europe";}
elsif ($choix_rubrique eq 3){$numero="3260";$rubrique="livres";}
elsif ($choix_rubrique eq 4){$numero="3232";$rubrique="opinions";}
elsif ($choix_rubrique eq 5){$numero="3476";$rubrique="cinema";}
elsif ($choix_rubrique eq 6){$numero="32344";$rubrique="planete";}
elsif ($choix_rubrique eq 7){$numero="651865";$rubrique="technologies";}
elsif ($choix_rubrique eq 8){$numero="823353";$rubrique="politique";}
elsif ($choix_rubrique eq 9){$numero="3546";$rubrique="culture";}
elsif ($choix_rubrique eq 10){$numero="3234";$rubrique="economie";}
elsif ($choix_rubrique eq 11){$numero="3224";$rubrique="societe";}
elsif ($choix_rubrique eq"*"){$numero="ALL";$rubrique="toutes_les_rubriques";}
# Si ce qui est recuperé n'est pas reconnaissable, on demande à nouveau à l'utilisateur :else{
print"Je n'ai pas compris.\n";
}
Après avoir initialisé des variables contenant le flux de sortie pour le fichier .txt, le fichier .xml et le fichier du traitement treetagger, on a forcé l'encodage de sortie :
# Définition de variable de telle sorte qu'elle contient l'information "utf-8" :my $encodagesortieXML="utf-8";
# Pour le traitement CORDIAL sur les fichiers .txt on veut l'encodage en ISO :my $encodagesortieTXT="iso-8859-1";
On a donc écrit dans les fichiers puis on a fait appel à la fonction &etiquetage avec les paramètres titre et résumé : my ($titreetiquete, $texteetiquete) =&etiquetage ($titre, $resume); . La fonction appellée est une fonction pour l'étiquetage ayant la forme suivante :
# Sub-routine (sous-programme/fonction) pour l'etiquetage du programme treetagger :sub etiquetage{
# @_ la liste de paramètres d'entrée dans cette sub-routine :my ($titre,$texte)=@_;
# TRAITEMENT POUR LE TITRE my $codage="utf-8";
my $tmptag="texteaetiqueter.txt";
open (TMPFILE,">:encoding(utf-8)", $tmptag);
print TMPFILE $titre;
close(TMPFILE);
Avec la fonction tokenise, on produit un fichier avec un mot sur chaque ligne, et ensuite on aura pour chaque lemme sa forme et sa categorie. On transforme le fichier de sortie en structure xml et on lit les résultats taggés en .xml :
# Lecture du résultat taggé en .xml :
open(OUT,"<:encoding(utf-8)","RESULTATS/treetagger.txt.xml");
my $firstline=<OUT>;
my $titreetiquete="";
while (my $l=<OUT>) {
$titreetiquete.=$l;
}
close(OUT);
La même procedure à été mise en place pour le traitement des résumés puis on a donné les résultats à l'utilisateur : return ($titreetiquete,$texteetiquete);. Vous pouvez cliquer ci-dessous pour un exemple de résultats pour la rubrique "à la une" :
Pour télécharger un exemple de fichier au format .txt contenant les flux RSS avec le titre et le résumé de l'article sur chaque ligne, cliquez ici.
Pour télécharger un exemple de fichier au format .xml contenant les flux RSS avec un numéro attribué à l'article en ordre croissant, le nom du fichier, la date, le titre de l'article et le resume de l'article, cliquez ici.
Pour télécharger un exemple de fichier au format .xml contenant l'étiquetage de Treetagger, cliquez ici.
On a aussi fait un étiquetage via Cordial manuellement, qui servira pour la prochaine étape. Pour télécharger le fichier contenant l'étiquetage via Cordial, cliquez ici.