« GenealogyBot » : différence entre les versions
Ligne 34 : | Ligne 34 : | ||
Pour traiter les erreurs d'OCR sur les noms et prénoms, nous avons à disposition un dictionnaire de noms ("family_names.xlsx" [https://github.com/JeremyDezalos/GenealogyBot/blob/main/data/family_names.xlsx]) et un dictionnaire de prénoms ("all_prenoms.csv" [https://github.com/JeremyDezalos/GenealogyBot/blob/main/data/all_prenoms.csv]) provenants de sources historiques croisées. On compare donc les noms et prénoms de nos données généalogiques à ceux présents dans les dictionnaires. Si une ligne de nos données ne correspondent pas aux entrées de ces dictionnaires, nous l'ignorons simplement. | Pour traiter les erreurs d'OCR sur les noms et prénoms, nous avons à disposition un dictionnaire de noms ("family_names.xlsx" [https://github.com/JeremyDezalos/GenealogyBot/blob/main/data/family_names.xlsx]) et un dictionnaire de prénoms ("all_prenoms.csv" [https://github.com/JeremyDezalos/GenealogyBot/blob/main/data/all_prenoms.csv]) provenants de sources historiques croisées. On compare donc les noms et prénoms de nos données généalogiques à ceux présents dans les dictionnaires. 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 | 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érente (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. | Après ce premier passage, il nous reste 679 lignes de données sans erreurs apparentes. |
Version du 25 mai 2021 à 20:15
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, chaque entrée représentant un ménage.
Les données qui nous intéressent sont :
- - 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
On extrait donc uniquement ces informations et on les stocke dans un fichier .csv ("1832_pc_relevant_columns.csv" [4]) sous la forme :
chef_prenom,chef_nom,chef_annee_naissance,epouse_nom,epouse_annee_naissance,enfants_dans_la_commune_prenom,enfants_annee_naissance
Traitement des données
Gestion des erreurs d'OCR
Toutes ces données sont transcrites automatiquement par un OCR et contiennent des erreurs. Il faut donc traiter à la fois les erreurs sur les noms et prénoms et les erreurs sur les date de naissance.
Pour traiter les erreurs d'OCR sur les noms et prénoms, nous avons à disposition un dictionnaire de noms ("family_names.xlsx" [5]) et un dictionnaire de prénoms ("all_prenoms.csv" [6]) provenants de sources historiques croisées. On compare donc les noms et prénoms de nos données généalogiques à ceux présents dans les dictionnaires. 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érente (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.
Traitement pour faciliter la création des entrées sur Wikipast
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: [7]
Exemple d'un enfant: [8]
Code
L'entièreté du code est disponible sur GitHub. [9]