Pour commencer, nous voulons extraire le contenu textuel des fils RSS de l'année 2019 du journal Le Monde. Plus précisément, nous voulons récupérer par rubrique le titre et la description de chaque article présent dans les fichiers RSS. Notre objectif est d'écrire un programme pour réaliser cette tâche. L'enjeu de cette étape est de réussir à extraire, sur l'intégralité de l'arborescence, les contenus textuels pertinents pour notre projet et de les concaténer en un seul fichier. Ainsi, pour creuser dans un arbre jusqu'à la feuille finale, nous avons employé la méthode de récursion.
Le parcours récursif, plus concrètement dans notre projet, pourrait être expliqué par un bloc de pseudocode Fonction lireArb(REP):
on ouvre un répertoire REP et on examine son contenu (les i éléments)
- si i est un fichier à traiter => traiter
- si i est un répertoire => lireArb(i)
Notre but est d'extraire les contenus de deux balises dans chaque fichier: les balises titres et descriptions. Ces deux types de balises sont des couples correspondant à la mise à jour d'un article et sont situées au sein de balises.
Les idées des scripts écrits en Perl et Python sont les mêmes. Comme on connaît la structure de nos fichiers XML, on peut élaborer une expression régulière qui va chercher les motifs qui nous intéressent. Ces scripts prennent en entrée le nom du répertoire contenant les fichiers xml à traiter et le nom(py)/code(pl) de rubrique. Ils nous renvoient 2 fichiers contenant les informations des titres et des descriptions sous 2 formats .xml et .txt.
Le module XML::RSS permet notamment de créer et de mettre à jour les fichiers RSS. Le parcours de toute l'arborescence devient plus facile grâce à ce module, ainsi que l'extraction des informations prévues grâce aux fonctions préexistées.
Une autre solution pour extaire les titres et les descriptions s'agit d'une requête XQuery, lancée sur le logiciel BaseX. Afin de pouvoir fouiller notre arborescence sur BaseX, il faut créer une base de données. On peut spécifier un motif que le logiciel utilisera pour sélectionner les fichiers xml qu'il rencontre. Une première base de données pourrait donc être créée avec l'identifiant de rubrique "3208", par exemple. Ensuite, on peut effectuer notre requête pour extraire les titres et les descriptions.
Après le traitement de notre première boîte, nous obtenons des fichiers XML et TXT comme présentés ci-dessous. Ces ressources seraient également précieuses pour d'autres projets NLP. Pour les BàOs suivantes, nous prenons 3208, 3210 et 3476 comme entrées.
ID | Rubrique | Sortie TXT | Sortie XML |
---|---|---|---|
3208 | A la une | aLaUne.txt | aLaUne.xml |
3210 | International | international.txt | international.xml |
3214 | Europe | europe.txt | europe.xml |
3224 | Société | societe.txt | societe.xml |
3232 | Idées | idees.txt | idees.xml |
3234 | Economie | economie.txt | economie.xml |
3236 | Actualité-Médias | media.txt | media.xml |
3242 | Sport | sport.txt | sport.xml |
3244 | Planète | planete.txt | planete.xml |
3246 | Culture | culture.txt | culture.xml |
3260 | Livres | livres.txt | livres.xml |
3476 | Cinéma | cinema.txt | cinema.xml |
3546 | Voyage | voyage.txt | voyage.xml |
651865 | Technologies | tech.txt | tech.xml |
TOUT | TOUT | tout.txt | tout.xml |