BAO 1 - Extraction des contenus textuels

L'objectif de cette boîte à outils est d'extraire les contenus textuels des balises "titre" et "description" de nos fils RSS et de les concaténer dans un seul fichier texte par rubrique. L'enjeu est ici de pouvoir naviguer à travers l'arborescence de manière récursive et de récupérer pour chaque jour de chaque mois la rubrique qui nous intéresse et d'en extraire à chaque fois les balises intéressantes.

Le but est donc de repérer les balises XML que nous cherchons, c'est-à-dire les balises <title> et <description> qui sont présentes à l'intérieur d'une balise <item> pour chaque fichier XML. Deux méthodes différentes ont été utilisées pour réaliser cette boîte à outils : d'abord à l'aide d'expressions régulières puis à l'aide d'une bibliothèque Perl. Les deux techniques sont détaillées ci-dessous.

Extraction à l'aide d'expressions régulières

Le fonctionnement du script Perl permettant l'extraction des contenus textuels à l'aide d'expressions régulières est assez simple : l'utilisateur appelle le programme en lui passant en arguments le nom du dossier du corpus ("2018") puis le nom de la rubrique choisie (dans notre cas : "3210", "3236" ou "3244"). C'est grâce à ces informations que le script Perl va aller récupérer les fichiers de la rubrique car les numéros sont compris dans le nom de chaque fil RSS. La fonction qui permet le parcours de l'arborescence de manière récursive a été donnée en cours. Le programme lit ensuite chaque fichier et récupère à l'aide d'une expression régulière les contenus que nous souhaitons garder pour chaque fil RSS. Ce script considère donc le texte comme une sorte de "sacs de caractères" dans lequel il est possible de repérer des motifs réguliers grâce à des expressions régulières. Par ailleurs, le cas des doublons, c'est-à-dire lorsqu'un "item" a déjà été rencontré, est géré par le programme : il ne peut donc pas y avoir de doublons dans les extrations obtenues. Ce programme contient également une fonction de "nettoyage" qui permet d'enlever toutes les entités XML ou bizarreries trouvées dans les fils RSS afin d'obtenir des sorties propres et de prévoir la deuxième boîte à outils d'étiquetage. En effet, nous ne voulons pas que les étiqueteurs essaient d'étiqueter les différentes entités présentes dans les fichiers XML d'origine.

Le résultat fourni par le programme est composé de deux sorties : une sortie au format texte et une sortie au format XML. Nous avons décidé de récupérer la date de chaque article (qui est contenue dans le nom de chaque fil RSS) à l'aide d'une expresssion régulière afin de l'inclure à la sortie XML et de pouvoir garder une trace de cette information. Dans la sortie texte, chaque article est entouré de "***" afin de créer une sorte de délimitation entre les articles. Dans ce fichier, le titre de l'article est ensuite écrit sur une ligne puis sa description est écrite sur une autre ligne. Dans la sortie XML, chaque article est présenté dans une balise <article> qui contient la date dans une balise <date>, le titre dans une balise <titre> puis la description dans une balise <description>.

Voici comment se lance ce programme : perl bao1_regex_final.pl 2018 3210

Le programme commenté de manière détaillée et les résultats obtenus pour chaque rubrique sont disponibles ci-dessous en cliquant sur les boutons appropriés :

Extraction à l'aide d'une bibliothèque Perl

La deuxième version de cette première boîte à outils prend en compte la structure logique des fils RSS(un arbre XML) de sorte que le programme n'a plus qu'à récupèrer les feuilles de l'arbre qui nous intéressent. Afin de pouvoir réaliser cette tâche, notre script utilise la bibliothèque Perl XML :: RSS. Le fonctionnement du programme, à part l'utilisation de ce module spécifique, reste cependant le même que la première version expliquée ci-dessus.

Voici comment se lance ce programme : perl bao1_xmlrss_final.pl 2018 3210

Le programme commenté de manière détaillée et les résultats obtenus pour chaque rubrique sont disponibles ci-dessous en cliquant sur les boutons appropriés :

Remarques

Les résultats obtenus par les deux méthodes différentes présentées ci-dessus sont les mêmes en y jetant un rapide coup d'oeil. Cependant, nous pouvons nous apercevoir d'une différence importance entre les deux programmes : la vitesse d'exécution n'est pas du tout la même. En effet, le deuxième script utilisant la bibliothèque Perl XML :: RSS est beaucoup plus lent que le premier script utilisant les expressions régulières. Ainsi, nous garderons pour la deuxième boîte à outils uniquement la première version puisque l'étiquetage va déjà augmenter considérablement le temps d'exécution du script, il ne faudrait donc pas augmenter encore plus ce temps avec l'utilisation de la bibliothèque. Il a été tout de même intéressant de découvrir une bibliothèque adaptée au format que l'on traite et celle-ci pourrait s'avérer utile dans le cas où nous voudrions réaliser des extractions plus complexes sur des arborescences XML.