par Anaïs Chambat
Master Humanités numériques
École Normale Supérieure de Lyon
Traditionnellement utilisée en sociologie ou en linguistique comme préalable à une recherche, l’analyse textuelle participe à une mise à jour des structures langagières.
« Il ne s’agit non pas de chercher le sens d’un texte, mais de déterminer comment sont organisés les éléments qui le constituent ».
L’objectif du protocole développé par l’équipe de l’Inria est à terme de combiner les fonctionnalités d’une plateforme open-source à des études statistiques. TXM s’est rapidement imposé comme une référence dans la construction et l’analyse des corpus annotés. Il permet notamment d’adopter une approche philologique et sémantique des textes étudiés. Il mobilise les propriétés de TreeTagger un outil performant d’étiquetage morphosyntaxique et de lemmatisation. Les occurrences sont réduites à leur racine, les verbes sont ramenés à l’infinitif, les noms au singulier et les adjectifs au masculin singulier. Le corpus peut également être tokénisé, des segments sont alors constitués d’après la ponctuation en respectant le plus possible la structure du langage. La détection des « catégories grammaticales » (POS) enjoint par ailleurs à explorer des pistes conceptuelles et linguistiques avancées. Plus les métadonnées renseignées sont complètes, plus il est aisé d’effectuer une requête spécifique et de partitionner les analyses en sous-corpus.
Par une mise en perspective de cette technique, ce billet visera à illustrer les modalités de l’hybridation entre une pratique historienne de la quantification et des humanités numériques. Quantifier, c’est effectivement « exprimer et faire exister sous une forme numérique, ce qui auparavant, était exprimé seulement par des mots et non par des nombres ». L’information statistique n’est donc pas recueillie en tant que telle, mais est issue d’un processus de construction de données.
« Le numérique [quant à lui] n’est pas seulement un outil, c’est un milieu, un moyen de reconditionner notre relation au monde, à la culture, à l’environnement ».
Nous prendrons ici l’exemple du corpus des rapports d’audiences des Prud’hommes de Lyon composé de neuf revues : La tribune lyonnaise (1845-1851) ; La tribune prolétaire (1834-1835) ; L’avenir (1846-1847) ; L’écho de la fabrique (1831-1834, 1841-1845) ; L’écho de l’industrie (1845) ; L’écho des ouvriers (1840) ; L’écho des travailleurs et L’indicateur (1834-1835). Nous reviendrons sur son modèle d’encodage et aborderons des pistes de génération automatique des fichiers. Enfin, nous exposerons les premiers résultats obtenus.
Un modèle d’encodage en XML-TEI
L’encodage XML-TEI possède de nombreux avantages résumés brièvement ici par l’informaticien britannique Lou Burnard :
il « s’intéresse au sens du texte plutôt qu’à son apparence […] est indépendant de tout environnement logiciel particulier [… et] a été conçu par la communauté scientifique, qui est aussi en charge de son développement continu ».
L’enrichissement des données s’effectue grâce à un système d’annotation à même le contenu sans le modifier. Il aide ainsi à l’élaboration d’une structure généralisée et flexible de tous les types de données, tout en permettant l’accès à un large écosystème de sorties.
Un processus de transcription a d’abord été réalisé grâce à la plateforme Transkribus. Les fichiers obtenus n’étaient pas utilisables en l’état. Il a donc été nécessaire de procéder à une série de nettoyages et de corrections, organisées sous la forme d’un teiCorpus par revue. Les transcriptions ont alors été révisées et annotées avant d’être centralisées dans un fichier TSV unique pour l’ensemble du corpus. En vue de leur versement dans TXM, un teiCorpus a été généré avant d’être segmenté d’après la plus petite unité textuelle considérée, celle des audiences. Nous reviendrons sur cette procédure ultérieurement. Chacun des 641 fichiers XML-TEI porte un identifiant unique et normalisé identique à son nom. Ainsi, un fichier intitulé « La tribune lyonnaise, 1845, 3, 001 » se lit : rapport d’audience n°1 publié dans la tribune lyonnaise du mois de mars 1845.
Après la déclaration de l’encodage du document, la première partie visible est celle du teiHeader, une structure indispensable qui contient les métadonnées pouvant être interrogées et permettre le partitionnement du corpus. Elle se divise en trois sections : la description formelle du fichier, des données éditoriales et de la source concernée. La première reprend le titre et contient la liste des contributeur·ices ainsi que les rôles qu’ils/elles ont occupés.
Exemple de teiHeader
Description du fichier et de ses données éditoriales

Description de la source concernée

Cette section contient l’identifiant Numelyo, la date de publication de la revue, son numéro et le code de l’année s’il y a lieu. Les URLs des ressources auraient également pu figurer ici. Le second ensemble du fichier correspond au texte.
Exemple d’encodage des métadonnées du texte

La balise « text » a été typée d’un attribut afin de rappeler le nom de la revue et la date de l’audience. La balise « milestone » permet ensuite de lier systématiquement l’archive étudiée à son fonds. Les numéros de page ont également été encodés. Enfin, la balise « body » comprend les balises de paragraphes du rapport d’audience.
Vers une génération semi-automatique du corpus
Grâce aux différentes informations extraites au format TSV lors du processus de collecte, les fichiers XML-TEI ont pu être générés semi-automatiquement. Le fichier de métadonnées est spécifié comme paramètre d’entrée. Il est composé de 641 lignes et de 19 colonnes. La première colonne correspond à l’identifiant du fichier. Il s’agit d’une concaténation entre le titre de la revue, la date de publication et le numéro de l’audience. Les dix qui suivent sont celles des contributeur·ices du projet et des rôles qu’ils/elles ont occupés. Les huit dernières se répartissent comme suit : l’identifiant Numelyo de la source, la date de publication, le numéro, l’année, le titre de la revue, la date de l’audience, les pages concernées par le compte-rendu, et enfin, le contenu textuel du rapport d’audience.
Notre démarche a été de reproduire dans une fonction Python la structure d’un fichier XML-TEI et d’y faire correspondre le contenu du TSV. Une façon simple de procéder est d’appeler successivement les colonnes dans l’ordre de leur apparition dans la structure XML-TEI. Nous avons ensuite utilisé une feuille de transformation XSLT pour diviser le teiCorpus ainsi obtenu en autant de fichiers que d’audiences. Puis, d’après la liste des identifiants, nous avons renommé les 641 fichiers en série grâce au programme libre Ant Renamer.
Enfin, nous avons procédé à l’importation du corpus XML-TEI dans TXM. Il suffit pour cela d’utiliser l’option « import XML/w + CSV ». Le balisage initial est conservé et permet une recherche par unités de structures. Si l’on souhaite ajouter d’autres métadonnées, il convient de joindre un fichier csv intitulé « metadata » qui contiendrait les noms des fichiers et les informations souhaitées. Le corpus peut également être enrichi manuellement grâce à l’annotation URS (Unité-Relation-Schéma) au fil du texte.
Premières analyses textuelles
Afin que les résultats statistiques aient un sens et soient recevables, il est essentiel que le corpus et ses éventuels sous-corpus aient été contextualisés et ses règles de composition rendues visibles. Les textes doivent être environ de même longueur, concerner le même public et porter sur le même thème. Ils ne peuvent avoir été écrits le même jour et doivent recéler des différences internes. Par souci d’objectivité, nous avons donc fait le choix d’analyser une revue tirée au hasard, à savoir les rapports d’audiences de la tribune lyonnaise, de mars 1845 à janvier 1851, avant d’étudier le corpus entier.
Nous avons souhaité dans un premier temps faciliter l’interrogation des structures langagières et nous affranchir des contraintes formalistes du CQP utilisé par TXM. Pour ce faire, nous avons mis en place un concordancier en langage naturel. Il s’agit d’une liste alphabétique des mots où chaque instance est accompagnée de son contexte immédiat. Les fonctionnalités offertes par les bibliothèques Python de fouille de textes nous ont permis d’aller plus loin dans cette démarche et de proposer une interrogation complète du corpus incluant la prise en compte des caractères spéciaux, de la ponctuation ou encore de la casse des mots. Prenons l’exemple de l’expression « Conseil des Prud’hommes » :
Extrait de la sortie console de l’expression « Conseil des Prud’hommes »

Si le nombre d’occurrences de l’instance recherchée est affiché, il n’est pas encore possible de spécifier précisément de quelle unité textuelle elle est originaire. De premières visualisations excluant les mots-outils ont été réalisées telles que des nuages de mots, des lois de Zipf ainsi que des réseaux dynamiques de proximité entre les syntagmes à l’échelle des audiences ou des paragraphes.
Nuage de mots, fréquence ≥ 50 soit 40 formes actives

La taille des formes lexicales est proportionnelle à leur fréquence. Les mots les plus cités sont placés au centre du nuage : « atelier » (322), « conseil » (312), « chef »(268), « audience » (243) et « contre » (210). Afin d’étudier les liens entre ces différentes formes, nous avons opté pour la t-SNE, une technique de projection qui cherche à conserver le voisinage des mots. Les coordonnées des audiences sont projetées. La matrice de données est multipliée par elle-même, ce qui revient à estimer une similarité entre les formes.

L’espace vectoriel considéré peut rapidement devenir illisible. Les unités textuelles sont denses et se recoupent. On remarque une communauté centrale homogène à partir de laquelle de plus petites se forment. Un vocabulaire similaire est donc partagé par les îlots. Il est possible d’affiner cette vue par une projection des groupes mots.

Lorsque les formes lexicales apparaissent superposées sur le plan vectoriel, cela signifie qu’elles sont employées dans un même contexte immédiat. Nous pouvons citer par exemple les associations entre « conseil et prud’hommes » ; « chef et atelier » ; « père et fils » ; « maître et apprenti » ; « ouvriers et négociants » ; « paiement, résiliation et contrat » ou encore « travailler et jours ».
Il est également possible de représenter ces résultats sous la forme d’un réseau dynamique de co-occurrences. Ce type de visualisation est plus ergonomique. La force du lien est matérialisée par l’accentuation du trait et les sommets sont clairement identifiables. Une liste des formes les plus représentées par chaque sommet est d’ailleurs disponible. Les éléments relevés précédemment peuvent ainsi être rapidement confirmés.
Enfin, nous avons souhaité vérifier si les premières conclusions observées sur une revue pouvaient être représentatives. À cette fin, nous avons appliqué au corpus entier un modèle probabiliste de type LDA (Latent Dirichlet Allocation). Il suppose que chaque unité textuelle est un mélange d’un petit nombre de thématiques, et que la génération de chaque occurrence d’un mot est attribuable à l’un des sujets du corpus considéré. Un nombre n de thèmes est instancié. Il convient de le faire varier afin d’observer des changements dans la répartition des occurrences et ainsi hiérarchiser et interpréter les différentes catégories retenues. Cette démarche peut être rapprochée de celle proposée par la classification de Max Reinert qui cherche à rendre compte de l’organisation interne d’un discours par la mise en évidence des « mondes lexicaux » investis par le locuteur. Elle peut notamment être mise en pratique grâce à IRaMuTeQ. La principale différence entre ces deux méthodes réside dans le fait que le nombre de thématiques est imposé dans la seconde.
Visualisation dynamique d’une LDA à cinq thématiques
Résumé des termes les plus représentés par chaque thématique
N°
|
En %
|
Termes associés |
| 1. |
26,7 |
négociant, chef, atelier, métier [à tisser], ouvrier, fabricant. |
| 2. |
21,6 |
conseil, prud’hommes, audience, séance, président, MM. |
| 3. |
18,2 |
sieur, prix, payer, somme, attendu, indemnité, fr [francs]. |
| 4. |
17,6 |
apprentissage, apprenti, apprentie, élève, maître, père, fils, mère, fille, chez. |
| 5. |
15,9 |
juger, jurisprudence, cause, contre, livret. |
La première fait référence à la partie descriptive du rapport dans laquelle les deux parties sont présentées. La deuxième reprend le vocabulaire normatif propre au déroulé d’une audience. La troisième concerne la réparation financière du préjudice. La quatrième relève du champ lexical de la filiation et de la transmission. Elle peut être rapprochée sur le plan conceptuel de la première catégorie. Enfin, la dernière présente des termes juridiques plus rarement employés. Si les catégories 1, 2 et 3 se rejoignent, les catégories 4 et 5 sont quant à elles diamétralement opposées. On note par ailleurs la présence de trois mots pivots « atelier », « conseil » et « chef », indépendamment de la catégorie considérée. Il s’agit également des trois syntagmes les plus utilisés au sein de la tribune lyonnaise. Il est ainsi possible dans une première approche alliant quantification et numérique de contextualiser la structure langagière d’un corpus.
Cette démarche exploratoire a notamment permis de mettre en avant l’ambiguïté de certaines dénominations. En effet, dans une même audience, une même travailleuse peut être mentionnée à la fois sous son nom, suivant son état civil, la position qu’elle occupe dans l’affaire et son métier. Afin que le décompte des occurrences puisse faire sens, il est nécessaire d’associer ces différents statuts à la personne concernée par l’ajout d’une balise « persName » dans les fichiers XML-TEI. La constitution d’une « listPerson » permettrait également de lier les différents individus. Le protocole semi-automatique de reconnaissance des entités nommées actuellement en cours devrait permettre à terme de désambiguïser le corpus et ainsi de procéder à une analyse plus fine des structures textuelles.