BO1

Extraction et nettoyage


Présentation de la boîte à outils n°1

Tout d'abord, on crée 2 variables : rep et rubrique qui prendrons en charge les arguments de notre programme.
Puis on gère les cas où le répertoire se terminerait par "/".
ensuite, on ouvre le fichier txt et le fichier xml que l'on a traité. Et on écrit dans le fichier xml l'en-tête.

Puis on initialise un dictionnaire des titres (my %dico_des_titres=()) pour éviter qu'un même fichier ne soit traité plusieurs fois.

&parcoursarborescencefichiers($rep) permet de faire appel à la fonction définie plus loin de façon récursive.

Puis on ferme la balise corpus2019 et enfin on ferme les fichiers.

Passons maintenant en revue les fonctions utilisées :

Tout d'abord, la fonction parcoursarborescencefichiers qui nous permet de récupérer tous les fichiers que l'on veut traiter. Avec shift(@_), le premier élément de la liste est récupéré, il l'enlève du fichier traité et il le renvoie. $_ est une variable par défaut, contextuellement cette variable contient la valeur que le programme est en train d’utiliser.

On ouvre le contenu du répertoire avec opendir(DIR, $path) or die "can't open $path: $!\n"; et on lit tous les fichiers même ceux qui sont cachés. Puis on renvoie la liste des ressources du répertoire avec my @files = readdir(DIR) et enfin, on ferme avec closedir(DIR).

Puis pour chaque fichier, on vérifie que son répertoire vérifie l'expression régulière suivante : next if $file =~ /^\.\.?$/ et si ce n'est pas le cas, on passe à l'élément suivant. Cela permet d'éviter au programme de rester bloqué sur le répertoire courant.

Avec $file = $path."/".$file, on crée une variable qui nous permet d'accéder à la ressource sur laquelle est le programme.

Avec if (-d $file), on interroge ce qu'il a trouvé, si c'est un dossier, il doit continuer à parcourir l'arborescence, si c'est un fichier (if(-f $file)), alors pour les fichiers ayant l'extention xml

On ouvre le ficher. Dans perl, la variable défini $/ contient \n, il faut la changer si on veut modifier le mode de lecture. On entre dans une variable (my $textelu) le contenu du fichier, on le ferme. On ajoute la balise item qui correspond à un titre avec sa description, la balise titre et la balise description. Puis récupère le titre et la description à l'aide de variable.

Puis pour le titre et la description, on fait appel à la fonction de nettoyage qui permet d'enlevé ce qui peut être indésirable comme des " qui remplacerait les ". Et enfin on écrit les résulats dans un fichier.

Résultat

Voyons maintenant concrètement ce que donne les résulats sur le corpus du Monde de janvier 2020 : à gauche, le fichier xml non traité, à droite le fichier xml traité et juste en dessous le fichier txt traité également. Comme nous pouvons le voir, nous avons récupéré les balises titre, description et item ainsi que leur contenu tout en remplaçant les caractères indésirables.