De l’index papier à l’indexation automatique

Dans le cadre des travaux sur la Reconnaissances d’Entités Nommées (REN) réalisés à partir du projet Himanis (registres du Trésor des chartes, Paris, Archives nationale, JJ35-JJ211), nous travaillons actuellement à l’amélioration des modèles pour associer les entités nommées reconnues à une identification précise et désambiguïsée.

Nous avons donc commencé notre travail à partir des référentiels papiers fournis par l’index de l’inventaire des registres JJ 37-50 afin de disposer de données à entrainer.

I.                   Etat des données

 

Originellement, l’index se présente sous la forme de deux tables : une pour les sujets et une pour les personnes et les lieux. Chaque entrée dispose d’un nom, d’éventuelles entrées subordonnées, d’éventuels renvois vers des entrées associées et d’une série de références qui correspondent aux entrées d’inventaire contenant cette entrée d’index. L’ensemble se présente sous la forme suivante :

Illustration n° 1

 

Cet index a ainsi été numérisé en même temps que l’inventaire qu’il accompagne, puis traité par OCR et structuré dans un document XML conforme aux spécifications de la Text Encoding Initiative, en adoptant la forme suivante :

Illustration n°2

 

Ce travail a permis de mettre à plat toutes les entrées présentes dans l’index et de former un référentiel contenant 4229 sujets, 7795 noms de lieu et 6534 noms de personnes.

II.                 Des entrées liées et structurées

La prochaine étape consiste à traiter les données de l’index afin d’identifier les liens entre les entrées et d’en rendre compte dans un fichier destiné à nourrir une base de données relationnelle.

Les liens entre les entrées se présentent ainsi sous plusieurs formes :

 

1 – Forme simple : Entrée d’index suivie des numéros d’entrée d’inventaire correspondant.

              Ex : « Valets [nobles non-chevaliers] ».

2 – Forme subordonnée : entrée subordonnée à une autre entrée, suivie des numéros d’entrée d’inventaire correspondants.

              Ex : « Val-des-Écoliers (Ordre du) , — chapitre général » -> « chapitre général » est une entrée subordonnée à l’entrée « Val-des-Écoliers (Ordre du) ».

3 – Forme rejetée : entrée disposant de renvois vers une ou plusieurs autres entrées associées.

              Ex : « Abandons, v. donations, renonciations, remises » -> « donations », « renonciations » et « remises » sont autant de renvois vers ces mots disposant de leur entrée propre

4 – Forme subordonnée à une forme rejetée : Entrée suivie de numéros d’entrée d’inventaire et subordonnée à une entrée sous forme rejetée.

              Ex : « Abandons, v. donations, renonciations, remises , — spontanés au roi » -> « spontanés au roi » est une entrée subordonnée à l’entrée « Abandons ».

5 – Forme subordonnée rejetée : Entrée sous forme subordonnée disposant de renvois vers une ou plusieurs autres entrées associées.

              Ex : « Baux , — à rente, v. arrentements » -> « à rente » est une entrée subordonnée à l’entrée « Baux » et l’ensemble « baux à rente » renvoie vers l’entrée « arrentements »

6 – Double subordination : Entrée subordonnée à une entrée elle-même sous forme subordonnée.

              Ex : « Vidimus , — et confirmations de Philippe le Bel , — de ses prédécesseurs » -> « de ses prédécesseurs » est une entrée subordonnée à l’entrée « Vidimus , — et confirmations de Philippe le Bel »

 

Illustration n°3

 

7 – Forme rejetée subordonnée à une forme rejetée : Entrée disposant de renvois vers une ou plusieurs entrée associées et subordonnée à une entrée elle-même sous forme rejetée.

Ex : « Donations, dons, v. aussi legs , —à charge d’hommage, v. fiefs-rentes, inféodations » -> « à charge d’hommage » est une forme subordonnée à « Donations, dons » et l’ensemble « Donations, dons à charge d’hommage » renvoie vers les entrées « fiefs-rentes » et « inféodations »

Illustration n°4

 

L’index étant à plat dans un document en XML, nous avons travaillé à partir de feuilles de style XSL afin de fournir un identifiant à chaque entrée. À partir des sept catégories d’entrées et renvois identifiées ci-dessus, nous avons ensuite constitué une table dans laquelle chaque entrée est associée aux autres entrées génériques qui la définissent (pour les formes subordonnées) ou aux entrées associées qu’elle contient (pour les formes rejetées) ainsi qu’aux entrées d’index correspondant. La feuille de style utilisée est disponible ici : https://github.com/virgile-reignier/Memoire-TNAH-2022-Reignier/blob/main/Scripts/Index/Ajout_id.xsl.

 

Nous avions initialement défini des « termes associés », qui se caractérisent par des entrées contenant à la foi des renvois et des entrées d’inventaire. Or le pré-traitement des données a éliminé la grande majorité de ces situations en divisant les entrées et en rapportant chaque lien au niveau pertinent. Par exemple la situation « Visite des lieux » + entrées d’inventaire + « v. estimations, prisées, procès-verbaux d’assiette » a été modifiée et se présente sous la forme de deux entrées : une « Visite des lieux » + entrées d’inventaire et une « Visite des lieux , — v. estimations, prisées, procès-verbaux d’assiette ». L’identité des deux entrées « Visite des lieux » est néanmoins conservée et permet, in fine, de créer des liens entre « Viste des lieux » et les actes d’une part et les autres sujets d’autre part. Il ne reste que quelques cas très marginaux d’entrées contenant à la fois des entrées d’inventaire et des renvois (par exemple « Vice-gardier [délégué du gardier, v. ce mot] ».

 

Cette étape a pour finir nécessité de retravailler un grand nombre d’entrées manuellement car elles avaient été malmenées par les traitements antérieurs ou parce que la liaison automatique n’a pas pu se faire avec les autres entrées auxquelles elles sont liées.

Nous avons donc réalisé le schéma de traitement suivant :

Illustration n° 5

III.              Identifier les noms de lieu

 

Une seconde phase du travail nous a ensuite conduit à isoler les entrées identifiées comme des noms de lieux (l’identification préalable des catégories a parfois dû être corrigé) afin de séparer les éléments qui les constituent. Nous avons ici choisi d’associer les entrées subordonnées aux coordonnées de l’entrée dont elle dépend sauf dans quelques exceptions où l’entrée subordonnée disposait d’une description propre permettant de la localiser.

Nous avons ici travaillé à partir de scripts python afin d’isoler pour chacune des entrées, les entités administratives qui la contiennent et les exploiter pour en chercher les coordonnées à partir de référentiels en ligne. Nous avons organisé les recherches en fonction de la manière dont les entrées sont présentées :

 

1 – Nom de commune

Ex : « Abbeville [Somme] » -> On cherche les coordonnées de la commune d’Abbeville dans le département de la Somme

2 – Toponyme situé dans une commune

Ex : « Abergement (L’) [Saône-et-Loire, con Buxy, cne Messey-sur-Grosne] » -> On cherche les coordonnées du toponyme « L’Abergement » situé dans la commune de Messey-sur-Grosne, dans le département de Saône-et-Loire

3 – Nom avec particule

Ex : « Chaussée (La) [Seine-Maritime, con Longueville-sur-Scie] » -> On cherche les coordonnées de la commune de La Chaussée, dans le département de Seine-Maritime

4 – Nom composé

Ex : « Chilly [-Mazarin, Seine-et-Oise, con Longjumeau] » -> On cherche les coordonnées de la commune de Chilly-Mazarin dans un des départements actuels correspondant à l’ancien département de Seine-et-Oise

5 – Élément dans une commune

Ex : « Collinances (prieuré de) [Oise, con Betz, cne Thury-en-Valois] , de l’ordre de Fontevrault » -> On cherche les coordonnées d’un toponyme nommé « Collinances » dans la commune de Thury-en-Valois dans le département de l’Oise ou, si aucun toponyme ne porte ce nom dans le référentiel utilisé, les coordonnées de ladite commune.

 

Les référentiels utilisés pour l’alignement automatique sont GeoNames (https://www.geonames.org/)  et, pour les départements concernés, le Dictionnaire topographique de la France ou « DicoTopo » (https://dicotopo.cths.fr/). Des traitements manuels ont également été effectués lorsque l’alignement automatique n’a pu être fait en raison de fautes d’orthographe, d’erreur d’OCR ou de changement de nom des communes. D’autres ont également été nécessaires pour les localités étrangères, les cours d’eau et forêts ou les étendues géographiques (pour ces dernières, nous avons utilisé Wikidata lorsque c’était possible).

 

Nous avons ainsi réalisé la chaîne de traitement suivante :

Illustration n°6

 

Malgré un travail de désambiguïsation manuel, certains toponymes n’ont pas pu être associés à une entité externe unique et géolocalisée. Dans cette situation, nous avons conservé le toponyme lui-même et enregistré chacune des propositions pouvant correspondre à cette localité. Ces dernières forment ainsi autant d’entrées dans la base de données, chacune disposant d’une relation avec le toponyme dont l’entrée est restée sans coordonnées.

Pour finir, les zones situées à cheval entre plusieurs entités et ne disposant pas de coordonnées propres ont été alignées avec les coordonnées de chacune de ces entités et identifiées comme telles afin de calculer la moyenne de ces coordonnées au moment de la création de l’entité dans la base. Le script utilisé pour ce travail est disponible à ce lien : https://github.com/virgile-reignier/Memoire-TNAH-2022-Reignier/blob/main/Scripts/Index/geonames.py

 

Des traitements manuels approfondis permettent de résoudre certaines ambiguïtés réelles ou dues au traitements automatiques :

  • Nom donné dans l’index, mais non identifiable
    1. Index : Ajorcz (terre dite) [Aveyron, région de Morlhon-le-Haut]

 

  • Nom donné dans l’index, identifications multiples automatiques, dont certaines fausses
    1. Beaumont [Loiret, con Beaugency, cne Cravant] : H-ID 100934, renvoie à
      • H-ID 100945: Beaumont, Code insee 45116, canton Beaugency, Point 1.60299, 47.82656, GeoNames ID 12307408
      • H-ID 100957: Beaumont, Code insee 45270, canton Beaugency, Point 2.33466, 47.80122, GeoNames ID 12307422

 

  • Nom donné dans l’index, plusieurs solutions possibles, mention d’incertitude dans l’index :
    1. Index : Abbeville [Seine-Maritime, région de Bacqueville-en-Caux ou d’Offranville?]
    2. Lié à
      • Abbeville, code Insee 76050, coordonnées géographiques 0.9353508, 49.8491498 ; DicoTopo ID P45419125
      • Abbeville, code Insee 76659, coordonnées géographiques 0.7672222, 49.5272222 ; DicoTopo ID P65099007
      • Abbeville, code Insee 76255 ; coordonnées géographiques 1.4309268, 50.0413692 ; DicoTopo ID P65312883
      • Abbeville, code Insee 76051 ; coordonnées géographiques 1.0008874, 49.7933605 ; DicoTopo ID P86515984

 

  • Nom donné dans l’index, plusieurs solutions possibles sauf argument e silentio
    1. Index : Avesnes (Nord)
    2. Lié à : Avesnes-sur-Helpe (code Insee 59036), Avesnes-les-Aubert (code Insee 59037), Avesnes-le-Sec (code Insee 59038)

 

Dans le cas d’Abbeville en Seine-Maritime, c’est le quatrième toponyme qui correspond strictement à l’entrée d’inventaire, puisqu’il s’agit, dans le Dictionnaire topographique d’un toponyme d’identification incertaine correspondant à la formulation de l’index. Dans le cas de Beaumont, la commune n’a pas été correctement exploitée par nos routines, et la solution est Beaumont, Code insee 45116H-ID 100945). Dans le cas d’Avesnes dans le département du Nord, trois communes sont homonymes et seul un savoir extérieur à l’index ou un argument e silentio (l’absence d’indication de canton) permet d’identifier Avesnes-sur-Helpe, chef-lieu de canton, dans la locution « Hugues de Châtillon, comte de Blois et sire d’Avesnes ». L’argument par absence est très difficile à manier dans les traitements automatiques, surtout pour des informations où l’omission est toujours possible.

 

 

IV.             Exploitation des résultats

 

 

Les étapes présentées ci-dessus ont permis de disposer de deux tables associant pour la première chaque entrée aux autres entrées avec laquelle elle est liée et pour la seconde les entrées géographiques à des coordonnées ou un ensemble de coordonnées. Nous avons ensuite préparé le tout à l’aide d’un script python (https://github.com/virgile-reignier/Memoire-TNAH-2022-Reignier/blob/main/Scripts/Index/upload_heurist.py) pour l’importer sur Heurist sous forme de base de données relationnelle (qui sera bientôt accessible sur l’instance Heurist d’Huma-Num : https://heurist.huma-num.fr/heurist/). Cette base de données a aussi été complétée par l’import des descriptions d’actes contenues par l’inventaire. Ces descriptions ont été numérisées et transformées antérieurement. Pour finir, nous avons aussi importé les zones d’image correspondant à la manifestation physique de ces actes dans les registres et associées à leur transcription par HTR.

 

Ces éléments ont aussi servi de base à la construction d’une carte permettant de visualiser les lieux présents dans les registres JJ 37- JJ 50 (https://virgile-reignier.github.io/Carte-JJ37-50/) :

image
Illustration n°7

 

Faute de pouvoir pour le moment caractériser la raison de la mention de chaque lieu dans les archives du roi de France (date de lieu de l’acte, droit du roi sur un bien, origine d’un individu, …), cette carte propose néanmoins une vision de l’implantation géographique des intérêts et de l’action du roi entre 1303 et 1314. Dans la lignée de travaux récents portant sur le déploiement de l’autorité du roi à la fin du Moyen Âge (Léonard Dauphant, Le Royaume des quatre rivières. L’espace politique français (1380-1515), Seyssel, Champ Vallon, 2012), cette visualisation nous permet de compléter les données disponibles pour le début du XIVe siècle. Ce travail pourra être enrichi par la suite par l’incorporation des données contenues dans les autres instruments de recherche du Trésor des chartes et par l’amélioration de la caractérisation des lieux mentionnés.

Si les spécialistes de l’espace où agit le roi de France de même que les historiens locaux connaissent sans doute déjà ces informations comme les répartitions générales ou locales, une telle visualisation fournit un point d’entrée nouveau pour les historiens moins spécialisés. De plus, l’intégration des toponymes dans la base Heurist, qui est accompagnée d’un rattachement aux actes à travers le numéro d’inventaire, permet aussi de voir l’extension géographique d’une même action. Par exemple, voici la carte des toponymes concernés par l’acte JJ42B, n° 76 :

 

Illustration n°8

 

Une fois le modèle complété, l’objectif final du projet est d’utiliser les données de l’index comme matériel d’entrainement pour le déploiement de modèles de liage d’entités. Des techniques de REN sont aujourd’hui déjà capables de repérer les noms de lieux, de personnes et de sujet dans les archives anciennes. Une fois ces éléments repérés, le liage avec les entités de la base de données permettra d’approfondir cette technique, puis de l’appliquer aux registres du Trésor des chartes qui ne disposent pas d’index. Nous pourrions ainsi en proposer une indexation automatique et ajouter de nouvelles entités à la base de données. Ces données permettraient d’accroître les connaissances disponibles sur l’évolution du pouvoir du roi de France à la fin du Moyen Âge et de faire progresser la recherche dans plusieurs sujets.

 

Ce travail a fait l’objet d’un mémoire de master :

REIGNIER Virgile, Vers l’indexation automatique du Trésor des chartes. Constitution, alignement et utilisation d’un référentiel d’entités nommées au sein du projet Himanis, mémoire de master « Technologies numériques appliquées à l’histoire », dir. Dominique STUTZMANN et Thibault CLERICE, École nationale des chartes, soutenance prévue en octobre 2022


Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.