BottinBot3
Résumé des fonctionnalités
Ce bot a pour but d'insérer des données sur Wikipast issues de l'extraction de 4 Million d'adresses des anciens annuaires de la ville de Paris qui fut réalisée par l'équipe du DHLAB en 2019.
Notre BottinBot3 traite un sous-ensemble de ces données données groupe 3 correspondant aux années 1857 à 1864. Soit un total de 548704 entrées.
Description technique
Le bottin contient des entrées de la forme suivante:
directory, page, row, year, name, job, street, number, street_clean, street_only
Notre bot crée un dictionnaire et parcourt ces entrées dans l'ordre chronologique. Pour chaque personne, une entrée est créée contenant avec comme clé son nom, puis comme valeur une liste contenant un tuple avec son métier et sa rue, ainsi qu'une liste d'index pour retrouver la personne dans notre jeu de données. Si le nom de la personne existe déjà dans le dictionnaire, alors ses champs viennent être ajoutés à la clé correspondante.
Il se peut qu'une personne se retrouve d'années en années. Pour ce faire, nous comparons son nom, son travail et sa rue et s'il s'agit effectivement de la même personne, alors l'index de sa nouvelle apparition est ajoutée à la liste d'index.
- Exemple d'une entrée du dictionnaire:
{"Ollivier" : [[('café de la Redoute', 'Grenelle-SaintHonoré'), [47444]], [('limonadier', 'boulevard Beaumarchais'), [47447, 115747, 530253, 313487]], ... }
Puis nous insérons les données sur Wikipast. Pour chaque année d'apparition d'une personne dans le dictionnaire, nous ajoutons une entrée de la forme suivante à sa page:
* [[year]] / [[Paris]], [[street_clean]] number. Mention de [[name]] avec la catégorie [[job]]
Stratégies
Dans le but de donner le plus de sens possible aux données, il a fallut mettre au point des stratégies afin de regrouper les mêmes personnes ensemble ainsi que pallier aux erreurs d'extraction.
Nous basons nos comparaisons sur les entrées de la première année (soit 1857).
Comparaison entre deux personnes
Lorsqu'une entrée du bottin est lue , nous comparons si son nom est contenu dans le dictionnaire. Deux issues sont possibles:
- Le nom n'existe pas dans le dictionnaire: alors une nouvelle entrée est ajoutée au dictionnaire comme décrit précédemment.
- Le nom est dans le dictionnaire: alors la personne est comparée à toutes les personnes ayant le même nom. S'il existe une entrée avec le même nom, le même métier et la même rue, nous considérons que ces deux personnes sont les mêmes. Ce faisant l'index où elle a été trouvée vient être ajouté à la liste d'index. Si aucune des personnes ne lui ressemble assez, alors nous considérons qu'il s'agit d'une nouvelle personne.
Nous utilisons une fonction de comparaison entre les différents champs pour compenser les erreurs d'extraction. Typiquement 'passage Choiseul' et 'passage Choiseal' sont considéré assez proche pour être semblable. Nous laissons aussi la possibilité pour une personne de changer de métier, ou (exclusif) de rue d'habitation.
Cas d'homonymie (lors de l'ajout de la page)
Lors de cas d'homonymie, nous suivons la stratégie suivante: Si la page existe déjà, nous tentons d'ajouter de plus en plus d'informations (dans l'ordre suivant : nom, métier, rue) jusqu'à que la page devienne unique. Si malgré cela nous n'arrivons pas à ajouter la page, nous abandonnons cette entrée.
Il est à souligner que nous tentons jamais de corriger les erreurs d'extraction.
Évaluation des performances
- La première phase du bot consistait à la création du dictionnaire. Pour ce faire, il nous a fallut approximativement 10 minutes. Il possède 164776 clés.
- La deuxième phase consistait à la création des pages et à son insertion sur Wikipast. Plus de 10 heures ont été nécessaires pour réaliser ce travail. Il est à souligner que la création de toutes les pages prenaient approximativement 3 minutes. Ceci implique que l'accès au site était la source de 99.995% du temps.
- Plus de 200000 pages ont été créées.