« BottinBot5 » : différence entre les versions
Ligne 52 : | Ligne 52 : | ||
if nom[-1] == "*": | if nom[-1] == "*": | ||
nom = nom[:-1] | nom = nom[:-1] | ||
Après avoir effectué ces opérations, nous nous sommes rendus compte que nous avions encore des erreurs de ce type mais avec de | et des # à l'intérieur des noms ou des métiers. Nous avons donc choisi de modifier directement notre base de donnée c'est à dire notre fichier csv directement sur excel afin de supprimer facilement les caractères posant problème. Ainsi, nous avons diminué grandement les erreurs d'OCR en supprimant la grande majorité d'entre elles. Nous n'avons cependant pas pu corriger les erreurs d'OCR plus complexe tel que les "boulanger" devenus "boulinger" plus difficile à détecter et donc à corriger à grande échelle. | |||
== Évaluation des performances == | == Évaluation des performances == |
Version du 18 mai 2020 à 08:44
Langue | Français |
Résumés des fonctionnalités
Ce bot a pour but d'extraire en grande quantité des informations à partir de la base de données créée en 2019 par l’équipe du DHLAB, qui contient quatre millions d’adresses issues d'anciens annuaires de la ville de Paris. Dans un second temps, le bot devra créer les pages correspondantes dans Wikipast.
Notre BottinBot5 traitera un sous-ensemble de cette base de donnée : données groupe 5. A savoir les annuaires des années 1880 à 1887 (soit un total de 790405 entrées non traitées).
Description technique
Lecture du bottin
Une fois les données récupérées, nous les avons ordonnées par année croissante puis, au sein d'une même année, les informations étaient triées par nom (ordre alphabétique). Cela a permis notamment que, pour une même page Wikipast, les entrées (rappel : 1 entrée = présence de la personne dans l'un des 8 annuaires étudiés) soient classées par ordre chronologique. Nous avons dans un second temps réutilisé les fonctions mises à notre disposition qui permettent d'ajouter à chaque entrée de notre bottin, l'URL Gallica associé (création d'un nouvel attribut).
Vérification d'existence
Il s'agit désormais de charger toutes les pages du Wikipast (afin d'avoir la dernière version en date), puis de vérifier pour chacune des personnes de notre bottin, si il/elle possède une page. Les 2 cas à traiter sont donc les suivants :
- La personne existe déjà sur Wikipast : On récupère la page existante, on ajoute (.join) une entrée à celle-ci via la fonction modify_page.
- La personne n'existe pas sur Wikipast : On utilise la fonction new_page qui crée la page souhaitée.
Exécution du BottinBot
Syntaxe sélectionnée :
[[year]]/[[Paris]], [[street]], [[number]]. [[nom]] est mentionné dans la catégorie [[job]].
Exemple d'entrée générée :
Stratégies adoptées
Stratégie générale
Dans la perspective de ce projet d'Humanités Digitales, nous avons délibérément choisi d'adopter une méthode (d'extraction-création) itérative, à savoir en traitant un maximum de données à chaque exécution du code. En cas de problème rencontré pour une entrée particulière, nous cherchions alors à fixer l'erreur correspondante et nous reprenions ensuite l'exécution de notre code à partir du dernier conflit. Cela nous a permis, assez tôt, de produire des pages dans Wikipast en grande quantité.
Stratégie pour les erreurs d'homonymie
Pour limiter la création de page pour une seule et même personne, nous avons décider de grouper les entrées ayant le même nom et le même métier. Pour ce faire, nous avons nommé les pages selon ces deux critères, par exemple : "Aubry - vins". Nous avons également regroupé certains métiers qui se recoupent, par exemple : "Aubry - vins" a été intégré à la page "Aubry - vins et traiteur".
Stratégie pour les erreurs d'OCR
Pour limiter les erreurs d'OCR qui posent parfois problème lors de recherche de pages ou autre, nous avons décidé de regarder les erreurs se produisant le plus souvent comme une | au début d'un nom et de les corriger manuellement pour supprimer le plus gros de nos problèmes en terme d'OCR.
nom = data_bottin.sort_values(by = ['year'])['name'][i] if nom[0] == "|": nom = nom[2:] if nom[-1] == "#": nom = nom[:-1] if nom[-1] == "*": nom = nom[:-1]
Après avoir effectué ces opérations, nous nous sommes rendus compte que nous avions encore des erreurs de ce type mais avec de | et des # à l'intérieur des noms ou des métiers. Nous avons donc choisi de modifier directement notre base de donnée c'est à dire notre fichier csv directement sur excel afin de supprimer facilement les caractères posant problème. Ainsi, nous avons diminué grandement les erreurs d'OCR en supprimant la grande majorité d'entre elles. Nous n'avons cependant pas pu corriger les erreurs d'OCR plus complexe tel que les "boulanger" devenus "boulinger" plus difficile à détecter et donc à corriger à grande échelle.
Évaluation des performances
...(à conserver?)...
Analyse critique
...(à compléter)...