« GenealogyBot » : différence entre les versions

De Wikipast
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
Ligne 17 : Ligne 17 :
===Traitement des donné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:
Ces données transcrites automatiquement par un OCR contiennent des erreurs.  
:- 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 informations sont stockées dans un fichier .csv ("1832_pc_relevant_columns.csv" [https://github.com/JeremyDezalos/GenealogyBot/blob/main/data/1832_pc_relevant_columns.csv]). Ces données 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.
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.


Ligne 37 : Ligne 31 :


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


===Création des entrées sur les pages===
===Création des entrées sur les pages===

Version du 25 mai 2021 à 19:44

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" [3]) qui contient 3701 entrées.

Traitement des données

Ces données 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.

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 du titre est

{Prénom} {nom} né en {date de naissance}

Le format du corps de page pour le chef de famille est le suivant:

* [[Date]]/ -. [[Naissance]] de [[Prénom Nom né en Date| Prénom 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 [[Prénom Nom né en Date| Prénom nom]], enfant de [[Prénom et Nom du père né en Date| Prénom et Nom du père]] et de son épouse née [[Nom de la mère]]. [source]

Si il n'y a qu'un parent enregistré:

* [[Date]]/ -. [[Naissance]] de [[Prénom Nom né en Date| Prénom nom]], enfant de [[Prénom et Nom du père né en Date| Prénom et Nom du pè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 où vit le ménage
- toutes les informations sur les pensionnaires (nom, prénom, origine, condition)
- 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 de la ville de Lausanne
  • 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

Exemple type de pages

Exemple d'un chef de famille: [4]

Exemple d'un enfant: [5]

Code

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