GenealogyBot

De Wikipast
Aller à la navigation Aller à la recherche

Le but de ce bot est de traiter les données généalogiques provenant du recensement lausannois de 1832.

Données traitées

Les données traitées par ce bot sont des données généalogiques issues du recensement de 1832 dans la ville de Lausanne. Le document original est accessible sur le site des archives de Lausanne [1]. C'est la transcription automatique par un OCR de ces données qui est utilisée [2]. Cela correspond à 3701 entrées sous le format d'un tableau Excel.

Résumé des fonctionnalités

Dans un premier temps, le bot doit traiter toutes les entrées pour en extraire le nom de tous les chefs de famille et de leurs enfants ainsi que leurs dates de naissances respectives. Ensuite, il doit créer sur Wikipast les pages et/ou les entrées correspondantes en respectant la bonne syntaxe.

Description technique

Extraction des données

Nous utilisons la librairie Pandas de Python qui nous permet d'extraire les données du recensement de 1832 de la ville de Lausanne depuis un fichier .xlsx ("1832_pc.xlsx") qui contient 3701 entrées.

Traitement des données

Chaque entrée représente un ménage. Nous conservons uniquement les données qui nous intéressent, c'est-à-dire:

- Le nom et prénom du chef du ménage
- L'année de naissance du chef du ménage
- Le nom de naissance de l'épouse du chef du ménage (s'il est marié)
- Les noms des enfants du couple
- Leur année de naissance

Ces données sont écrites dans un fichier .csv ("1832_pc_relevant_columns.csv"). Ces données étant transcrites automatiquement par un OCR contiennent des erreurs. Nous avons fait le choix que dès que nous détectons la moindre erreur, nous jetons la ligne de donnée pour éviter tout faux positif.

Pour ce faire: nous avons à disposition un dictionnaire de noms et prénoms provenant de sources historiques croisées. Si une ligne de nos données ne correspondent pas aux entrées de ces dictionnaires, nous l'ignorons simplement.

Nous commençons par filtrer les noms et prénoms des parents. Nous nous assurons que l'année de naissance du chef de famille soit également cohérentes (nous retirons les dates avant 1730 et après 1832.)

Après ce premier passage, il nous reste 679 lignes de données sans erreurs apparentes.

Ensuite, nous traitons les enfants d'un couple au cas par cas afin de ne pas évincer toute la fratrie à cause d'une erreur provenant d'un seul enfant. Les critères restent les mêmes que pour les parents.

Parmi les 1217 enfants, seuls 433 n'ont aucune erreur et sont ainsi gardés.

Vérification d'existence

Nous vérifions si la page que nous voulons créer existe déjà. Si elle n'existe pas ou que seul notre bot a modifié cette page, nous considérons qu'elle n'existe pas.

En cas en conflit, nous ajoutons dans le titre de la page le suffixe " - Généalogie" pour palier à ce problème.

Création des entrées sur les pages

A partir de la liste des chefs de famille, nous créons une page par ligne de données.

Le format est le suivant: * {Date} / -. Naissance de {nom et prénom}. {source}


Et à partir de la liste des enfants, nous créons une page pour chaque enfant et nous éditons la page du chef de famille afin de prendre en compte la naissance de l'enfant.

Le format pour la page des enfants est le suivant: * {Date} / -. Naissance de {nom et prénom de l'enfant}, enfant de {nom et prénom du père} et de son épouse née {nom de la mère}. {source}

Cette ligne est également ajoutée à la page du père.

Discussion des performances

Performances techniques

Le temps d'exécution du bot est 2m30. Cela permet la création de 1112 nouvelles pages.

Améliorations possibles

De futures améliorations de ce bot sont envisageables :

  • Exploitation de données issues du recensement et non traitées par le bot actuel :
- année de naissance de l'épouse
- métier chef de famille
- adresse
- toutes les informations sur les pensionnaires
- pour la source dans les datafications biographiques, renvoyer vers le bon numéro de page au lieu de renvoyer juste sur le sites des archives
  • Correction de certaines erreurs d'OCR:
- pour les dates : remettre les | de séparation aux endroits où les dates sont correctes mais qu'ils sont juste manquants
- pour les noms : corriger les noms à l'aide des dictionnaires de noms et prénoms

Code

L'entièreté du code est disponible sur GitHub. [3]