Réaliser un tableau d’occurrences lexicales avec Perl

Voici un exemple des traitements que l’on peut réaliser (relativement) aisément avec Perl. Il s’agit ici d’un petit script permettant, à partir d’un fichier en entrée contenant plusieurs textes séparés par le symbole §, de créer un tableau au format csv contenant, pour chaque texte, le nombre d’occurrences de chaque forme.

Pour commencer, il nous faut nettoyer en supprimant les majuscules et la ponctuation du texte, contenu dans la variable $texte, puis créer une liste d’occurrences des formes du texte complet, sous la forme d’une table de hachage, en utilisant une sous-routine compteur dont il sera question plus loin :

$texte =~ s/\_|\t|\.|\:|\,|\;|\«|\»|\)|\(|\'|\~|’|…|\?|\n/ /g;
%occurrencesTexteComplet = &compteur($texte);

Une fois cette tâche effectuée, nous allons maintenant séparer le texte complet, en une série de sous-textes en utilisant le symbole § :
@sous_textes = split(/§/, $texte);

Nous pouvons à présent comparer les listes d’occurrences de chaque sous-texte avec celui du texte complet :

Comparaison des deux tableaux d'occurrences

Et voilà, il ne nous reste plus qu’à générer le fichier de sortie, au format csv, que l’on pourra par la suite ouvrir avec Calc (ou Excel), importer dans R, etc.

Mise en forme du csv

La sous-routine compteur

Il s’agit d’une sous-routine que Perl rend assez simple, car c’est le type de traitement pour lequel il a été conçu. Elle compte un à un les mots d’un texte, et, à chaque fois qu’un mot réapparaît, elle ajoute 1 au compteur :

La sous-routine compteur


Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *