Aide à la structuration de la base de données Mauriac en ligne : entre la reconnaissance d’identité nommée et la textométrie

Dans le cadre de mon stage en 2ème année de Master Document Numérique Humanités Digitales de l’Université Bordeaux Montaigne, j’ai eu l’opportunité de travailler sur le projet d’évolution de la base de données actuelles “Mauriac en ligne” en intégrant l’équipe des Services numériques du Service Commun de Documentation (SCD) de la Bibliothèque Universitaire. La base de données actuelle, conçue sous Omeka, contient 924 articles qui correspondent à la première grande période (1905-1945) d’écriture journalistique de François Mauriac. L’évolution à venir, qui consistera à intégrer de nouveaux contenus numériques et de nouvelles fonctionnalités, s’intègre plus largement dans le programme e-c@na.

En vue des évolutions envisagées et/ou à venir (intégration de brouillons d’articles, création d’espace personnel, etc.), et compte tenu des nombreux écueils rencontrés lors de la description des textes1 l’objectif de l’équipe était de mieux structurer la base de données. Pour répondre à cet enjeu, l’idée nous est venue d’implémenter au corpus un système de mots-clefs définis selon deux méthodes différentes :

  • Tout d’abord grâce à la reconnaissance d’identité nommée avec Meaning Cloud
  • Puis ensuite grâce à une comparaison des analyses textométriques avec Iramuteq

Reconnaissance d’identité nommée…

La reconnaissance d’identité nommée (N.E.R., Name Entity Recognition en anglais) permet d’extraire d’un corpus des objets, des mots, des groupes de mots, pouvant être catégorisés par des classes comme des noms propres, des lieux…

Meaning Cloud est une interface de programmation applicative (communément appelée A.P.I. pour Application Programming Interface) que nous avons choisi, certes pour sa gratuité (dans la limite de 200 000 requêtes / jour), mais aussi pour sa précision par rapport aux autres API gratuites. Ainsi, après avoir exécuté un script de commande sur la base de données, au sein de laquelle chaque texte est transcrit et encodé2, le logiciel fournit pour chacun des 924 textes un résultat d’analyse dans un fichier .txt. Voici par exemple ce que l’API propose pour un texte :

Entities
===========
- Ernst Robert Curtius (Top>Person>FullName)
- Balzac (Top>Person>LastName)
- Ferragus (Top)
- Cher Monsieur (Top)
- Ami (Top>Person>LastName)
- Fils (Top>Location>GeographicalEntity>WaterForm>River)
- Pascal (Top>Person)
- Ramon Fernandez (Top>Person>FullName)
- Renan (Top>Person>LastName)
- Institutions du Pays (Top)

Afin de transformer, pour chaque texte, ces résultats en mots-clefs exploitables et nettoyer ainsi le “bruit” qui en ressort, nous avons décidé de séparer les entités reconnues en 3 catégories :

  • Les noms
  • Les lieux
  • Les entités (noms de livre, mouvements politiques, etc.)

D’un point de vue pratique et afin de préparer les données en vue d’une importation sur Omeka (ou autre CMS), nous avons travaillé à partir d’un fichier Excel avec une entrée par ligne pour chaque catégorie :

ID

Keywords

type

MEL_0001

Nom#nom#nom

name

MEL_0001

Ville#pays

location

MEL_0001

Autre#autre

entity

MEL_0002

Nom#nom#nom

name

MEL_0002

Ville#pays

location

MEL_0002

Autre#autre

entity

Cette structuration permet une meilleure visualisation des données en limitant le nombre de colonnes. Ici le # a été choisi comme séparateur de valeurs.

Mais l’API étant gratuite, elle possède évidemment quelques défauts et il y a bien sûr plusieurs points à vérifier :

  • Les fautes d’orthographe (noms, accents…).
  • Les noms / lieux / titres partiels, comptés comme plusieurs mots par l’API.
  • La même valeur peut apparaître plusieurs fois (surtout pour les noms).
  • Il peut manquer certains termes.
  • Invention de termes n’appartenant pas au texte de base (par exemple pour Voltaire, les résultats nous indiquent l’entreprise Voltaire Inc, qui n’a bien sûr rien à voir avec le texte de base…).
  • Ajout de mots n’étant ni des noms, ni des lieux, ni des entités (par exemple avec le mot “Durant” au début d’une phrase, l’API à tendance à le classer avec les noms).
  • Certains textes, enfin, n’ont pas de sortie via l’API.

Ces vérifications doivent être faites manuellement grâce aux fichiers OCR des textes et une simple recherche Ctrl+F. Il est d’ailleurs ainsi possible de repérer des erreurs d’océrisation.

Ce fichier Excel, directement importable dans Omeka, doit donc permettre à terme un meilleur référencement des textes en intégrant dans les métadonnées non seulement des “tags” pertinents (mots-clés), mais aussi de travailler sur les noms propres et les ouvrages cités par François Mauriac (en fonction de l’écriture et des séparateurs dans le tableur), ce qui permettra par exemple de proposer un index au sein de la future base de données dont la structuration se rapprochera plus ainsi d’une édition numérique que d’une bibliothèque numérique.

Fichier formaté et importable (sous un CMS type Omeka), juin 2019.

… Et structuration textométrique avec Iramuteq

Pour compléter cette recherche sémantique, nous avons décidé d’exploiter le logiciel Iramuteq (nécessite l’installation de R) qui permet de travailler en terme statistiques. Là encore Excel est utile dans le traitement et la préparation des données sous forme de tableur.

Mais pour extraire du corpus des statistiques sémantiques pertinentes, il est nécessaire d’avoir une base de travail de référence. Pour cela, le corpus doit être doit être concaténé dans un fichier .txt et formaté pour Iramuteq selon la forme suivante :

****

Texte 1

****

Texte 2

Une fois ce travail accompli, plus ou moins long selon les fichiers textuels à notre disposition, il suffit ensuite d’importer le fichier .txt dans Iramuteq afin de réaliser une analyse statistique. Bien sûr, lors de l’importation, il faut mettre l’encodage utf-8 (qui est universel).

Importation du corpus Mauriac en ligne dans Iramuteq, juin 2019.

Dans un dossier créé par Iramuteq, nous récupérons le fichier .CSV qui contient la liste des formes actives, dites “pleines” qui se distinguent des formes supplémentaires (ou “mots outils” que sont les adverbes, les pronoms, onomatopée, conjonctions, etc.) du corpus. Ces formes actives seront utiles par la suite puisque que pour chaque texte du corpus pour lequel nous voulons trouver les mots-clefs, nous pourrons ainsi établir des analyses statistiques et récupérer les occurrences les plus importantes de telle forme pour tel texte.

Vient ensuite l’étape de comparaison des mots-clefs de l’ensemble du corpus repérés via la première méthode avec ceux récupérés via Iramuteq pour chaque texte. Pour cela, nous avons repris le fichier .CSV initial généré sur le corpus global grâce à l’API Meaning Cloud afin d’y supprimer les mots de qualité “nr”, correspondant aux noms propres : le tableau est filtré et les lignes correspondantes supprimées. Le fichier Excel prêt, nous exploitons la formule suivante3 pour comparer deux tableaux :

=RECHERCHEV(E1;$A$1:$A$100;1;0)

Résultats de la formule appliquée, Juin 2019.

Lorsque la valeur renvoyée est #N/A, cela indique que le mot n’est pas présent dans la cellule sélectionnée… La formule est répétée sur l’ensemble de la colonne pour comparer, texte par texte, les occurrences statistiques globales et les mots-clés repérés pour chaque texte : s’ils sont présents dans la colonne, cela signifie qu’ils sont aussi présents dans la liste de 100 occurrences du corpus.

Enfin, pour pouvoir importer le fichier dans Omeka, ou tout autre CMS, un nouveau tableur est créé avec des titres de colonnes et des séparateurs # pour nos mots-clefs. L’ensemble des mots-clefs trouvés sont repris dans ce fichier, une étape qui peut se révéler assez longue…

En définitive, ce sont deux méthodes différentes d’extraction de mots-clefs d’un corpus : la première étant une reconnaissance “classique” d’entités et la seconde une extraction de mots-clefs sémantiques et statistiques, sur une base de 100 occurrences. L’ensemble de ces résultats, pour pouvoir être ensuite importé dans une base de données, doit être structuré au sein de tableurs et de fichiers .CSV. Ces explorations textométriques peuvent également être utiles lors de la constitution d’un sous corpus de recherche sur une thématique ou un lieu précis, ce que nous avons également mis en oeuvre et que nous détaillerons dans un second billet…

  1. A ce sujet, nous renvoyons à l’article de Daphné Mathelier qui revient sur ce travail de mise en ligne : Retour sur la numérisation et la mise en ligne des articles de presse de François Mauriac []
  2. A noter d’ailleurs que l’ensemble de ce corpus textuel peut être récupéré au sein d’un fichier .CSV en utilisant OmeScrap, petite application développée dans le cadre de l’ANR CHispa pour collecter les données publiées d’un Omeka : Omescrap !. []
  3. C’est une fonction de recherche qui rend une valeur vraie ou fausse de la présence du mot “lettre” dans la colonne A, de la ligne 1 à la ligne 100. []

Vous aimerez aussi...

Laisser un commentaire

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.