BAO 1 - Extraction du texte

Il s'agit ici d'extraire le contenu textuel des fichiers RSS.
On s'intéressera d'abord à l'extraction du contenu textuel d'un seul fichier RSS.
Puis nous verrons comment parcourir l'arborescence de fichiers pour aller extraire tout le contenu textuel de chaque fichier.

a. Extraction et nettoyage du texte

Le contenu textuel qui nous intéresse se trouve à l'intérieur des balises <item>. On cherche à y extraire le titre et la description de chaque article, donc ce qui se trouve entre les balises <title> et <description> .

On peut trouver ce contenu à l'aide d'expressions régulieres.
La première chose à faire est de ramener tout le contenu du fichier sur une seule et même ligne. En effet, le programme Perl va lire le fichier ligne par ligne. Si, par exemple, on demande à notre expression régulière de trouver tout ce qui se trouve entre les balises <description> et </description> et que la balise fermante sur trouve sur une autre ligne, il y a de grands risques que notre programme ne trouve pas le motif recherché.
Voici donc une partie du script Perl qui montre comment le texte a été extrait.

NB : Dans les rubriques choisies, certains titres et descriptions contenaient le signe '&' (moins de 10 dans chaque rubrique). En choisissant de convertir les entités html, ce signe apparait donc tel quel dans le fichier de sortie XML -> '&' au lieu de '&amp;' . Cela pose problème car cela empêche un affichage correct de la page XML. Il aurait donc fallu ajouter une ligne de code pour convertir les caracteres nécessaires en entités XML pour la sortie XML. (Ex : encode_entities($var) ; en utilisant XML::Entities ).
Le problème n'avait pas été rencontré dans le fichier qui a servi de test, c'est pourquoi je n'y avais pas pensé. J'ai opté pour un simple 'rechercher/remplacer' sur Notepad++, vu la quantité de caractères à remplacer (environ une quinzaine au total) et le temps que cela prendrait de refaire tourner le programme une fois corrigé (~8h).

On prend soin aussi de vérifier qu'il n'y a pas de doublons afin de ne pas imprimer deux fois le même contenu dans le fichier de sorti. Ceci est fait grace à une table de hashages.

b. Parcours de l'arborescence de fichiers

Une fois que l'on sait comment extraire le contenu textuel d'un seul fichier RSS, il faut maintenant pouvoir le faire automatiquement sur toute l'arborescence de fichiers.
Cette arborescence, qui recouvre la totalité de l'année 2016, s'organise de la manière suivante :

Pour parcourir toute l'arborescence de fichiers, on utilisera donc une fonction récursive qui s'arrêtera une fois toute l'arborescence parcourue.

Le script Perl et les premiers résultats...

Voici le script Perl à ce moment du projet. Il sera complété en BAO 2 par l'étiquetage avec Treetagger.

Le script est disponible ici --> SCRIPT PERL <--

Il est donc temps de faire un point sur les rubriques choisies.

J'ai choisi de me concentrer sur 2 rubriques :

  • La rubrique 3224 : Société
  • La rubrique 3236 : Médias
L'extraction et le taggage du texte avec treetagger (expliqué en BAO 2) sont très longs. La première rubrique a pris environ 6h, c'est pourquoi j'ai décidé de ménager ma machine [ qui va bientôt fêter ses 7 ans et commence à peiner ] et d'extraire une seconde rubrique moins volumineuse (Médias).
Cependant choix n'était pas dȗ qu'à la durée de l'extraction ; je me suis aussi interrogée sur le type de mots de ces deux domaines, ce qui peut y être différent ou similaire.
Comme cela a été suggéré par M. Fleury, j'ai donc décidé de m'interroger sur le mot 'Social'. Je me suis dit qu'il serait intéressant de travailler sur ce mot dans les rubriques Société et Médias, vu les différentes manières dont il est utilisé. En effet, dans le domaine des médias, je m'attends plutot à des motifs du type 'réseaux sociaux', tandis que dans la rubrique Société, je m'attends à des résultats différents.
J'ai aussi choisi les mots 'Travail' et 'Public'.
Nous verrons tout ceci en BAO 4.

Le texte extrait est écrit sur 2 fichiers de sortie : Une sortie texte(encodage UTF-8) , et une sortie XML.
Afin de bien distinguer chaque rubrique, on ne mélangera pas les 2 rubriques dans le même fichier. Chaque rubrique aura donc son fichier texte et son fichier XML ; cela aidera à mieux analyser les résultats.

A ce moment du projet, on ne possède que les fichiers de sortie texte. On obtiendra les fichier XML en BAO 2.

Voici donc les fichiers obtenus :
Le fichier texte de la rubrique Société
Le fichier texte de la rubrique Médias

>> BAO 2