BOITE A OUTILS 1 : Extraction d'information

Obejctifs

L'objectif de cette boîte à outils est de réaliser un traitement automatique des fils RSS dans le but d'extraire le titre et le résumé de chaque article. A cette fin, nous avons écrit des scripts en langage Perl qui parcourent l'arborescence des dossiers contenant les fils RSS de 2012 du journal Le Monde.

Chaque article existe en deux exemplaires : un au format txt et un autre au format XML. La structure d'un document XML est assez avantageuse pour rechercher des informations. En effet, l'information textuelle est contenue dans des balises descriptives. Ce que nous recherchons est contenu dans les balises <titre> et les balises <description>. Notre tâche est facilitée. Notre programme doit simplement filtrer les balises.

Les traitements

Cette tâche d'extraction d'information nécessite de prendre en compte le processus qui a été mis en palce pour récupérer les fils RSS. Chaque jour à la même heure, un programme était chargé de récupérer les flux RSS. Il est possible que le même article soit en ligne sur le fil du Monde le jour J et le jour J+1. Autrement dit, le programme a peut-être récupéré des articles en double. Nous avons donc pris en compte ce fait dans notre programme en nettoyant les doublons

Par ailleurs, en récupérant du texte d'une source extérieure, il est fortement probablement de rencontrer des problèmes d'encodages aux niveaux des caractères spéciaux, les accents notamment. Dans notre script nous avons donc prévu une étape de nettoyage des caractères problématiques.

A la fin de tous nos traitements nous avons deux sorties distinctes pour chaque rubrique du Monde : une sortie au format txt et une sortie au format XML. Le choix de ces formats est en corrélation avec la suite des traitements prévus avec la BaO2.

Les rubriques

Nous avons récupéré "à la main" les 17 différentes rubriques du journal Le Monde. Nous les avons associées à leur fichier afin de créer un dictionnaire qui a pour clé le nom du fichier et pour valeur le nom de la rubrique :

Les scripts

Nous avons réalisé deux scripts. Le premier utilise uniquement des commandes Perl. Le deuxième utilise le module XML::RSS.

Les deux scripts procèdent au début de la même façon. On lance la procédure de descente dans l'arborescence. Ce petit bout de script est très pratique et peut-être réutilisé dans n'importe quel programme Perl.

Lorsque le programme ne peut descendre plus dans l'arborescence et qu'il tombe sur un fichier, il vérifie que le fichier fait partie des rubriques entrées dans le dicodesrubriques. Ensuite, il vérifie que le fichier n'est pas vide. Nous avions eu des problèmes avec des fichiers vides. Le programme se stoppait. Le programme continue en créant le fichiers de sortie texte et XML. Dans le cas où le fichier XML est vide, il peut écrire les balises d'ouverture du fichier XML. Cette formulation permet d'éviter de réécrire ces balises en plein milieu du fichier (ce qui nous est arrivé).

Enfin nous détectons l'encodage, qui nous servira par la suite pour écrire dans les fichiers et éviter les erreurs sur les caractères spéciaux.

Version 100% pure Perl

Pour extraire le l'information textuelle des fils RSS, nous avons utilisé une expression régulière. Elle va filtrer le contenu du fichier et capturer les informations qui nous intéressent, soient le titre et la description.

Version module XML::RSS

Pour utiliser ce modèle, le trouver, l'installer, ainsi que d'autres modules Perl, nous vous recommandons fortement d'avoir de la patience et d'utiliser cygwin !

Pour extraire les titres et descriptions le module s'occupe de tout. Quelques lignes de codes et le tour est joué ! Explications dans le script :

Vous trouverez le script 100% pure Perl ici et la version module XML::RSS ;

Et voici nos résultats : les fichiers txt et xml.

Image bannière © Copyright Off Beat Mum · Design : MD DR & AG