« BottinBot3 » : différence entre les versions
Ligne 42 : | Ligne 42 : | ||
*Plus de 200000 pages ont été créées. | *Plus de 200000 pages ont été créées. | ||
== | == Analyse critique == | ||
Une des critiques majeures pouvant être faite à notre travail est que nous corrigeons aucune des données issues de l'extraction du bottin. Ceci crée donc des entrées | Une des critiques majeures pouvant être faite à notre travail est que nous corrigeons aucune des données issues de l'extraction du bottin. Ceci crée donc des entrées avec des noms faux qu'il serait théoriquement possible de minimiser à l'aide de fonction de distance et de probabilité d'erreur. Notre bot ne prend pas en compte non plus les pages déjà créées pour d'autres années que les nôtres. Ceci peut donc créer plusieurs pages de la même personnes mais à des années différentes. Une solution à ceci serait de contrôler l'existence de la page, ainsi que son contenue afin d'ajouter nos données correctement. Cependant, ce type de contrôle et de corrections prendrait énormément de temps comme il a été montré au point précédent. | ||
== Exemple == | == Exemple == |
Version du 18 mai 2020 à 13:19
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 (nous le modifions directement afin d'inclure l'url dans les données):
directory, page, row, year, name, job, street, number, street_clean, street_only, url
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 qui sera utilisé pour comparer les personnes, ainsi qu'une liste d'index pour retrouver la personne dans notre jeu de données lors de la saisie finale sur wikipast. 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]] [url]
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 prenait 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.
Analyse critique
Une des critiques majeures pouvant être faite à notre travail est que nous corrigeons aucune des données issues de l'extraction du bottin. Ceci crée donc des entrées avec des noms faux qu'il serait théoriquement possible de minimiser à l'aide de fonction de distance et de probabilité d'erreur. Notre bot ne prend pas en compte non plus les pages déjà créées pour d'autres années que les nôtres. Ceci peut donc créer plusieurs pages de la même personnes mais à des années différentes. Une solution à ceci serait de contrôler l'existence de la page, ainsi que son contenue afin d'ajouter nos données correctement. Cependant, ce type de contrôle et de corrections prendrait énormément de temps comme il a été montré au point précédent.
Exemple
Données initiales:
Entrée dans le dictionnaire:
{Aaron: [[('bronzes', 'passage Choiseul'), [0, 133152, 195814, 332171, 62461, 474299, 257014]]]}
Saisie sur Wikipast finale: