« BottinBot1 » : différence entre les versions
Ligne 14 : | Ligne 14 : | ||
On utilise la librairie Pandas pour lire les données dans le fichier CSV qui nous a été accordé et les organiser dans un objet DataFrame. | On utilise la librairie Pandas pour lire les données dans le fichier CSV qui nous a été accordé et les organiser dans un objet DataFrame. | ||
A première | A première vue, nous avons 390223 entrées dans notre fichier CSV. Celles-ci sont des entrées entre l'année 1839 et 1848. | ||
Nous avons choisi de ne pas prendre les lignes contenant des valeurs NaN, ceci nous a amené à ne traiter que 389599 entrées. Soit une perte de 0.15% | Nous avons choisi de ne pas prendre les lignes contenant des valeurs NaN, ceci nous a amené à ne traiter que 389599 entrées. Soit une perte de 0.15% |
Version du 19 mai 2020 à 09:04
Résumé des fonctionnalités
En 2019, l’équipe du DHLAB a effectué une extraction de 4 Million d’adresses dans les anciens annuaires de la ville de Paris.
Di Lenardo, I., Barman, R., Descombes, A., Kaplan F. (2019). Repopulating Paris: massive extraction of 4 Million addresses from city directories between 1839 and 1922, Digital Humanities conference DH2019, Utrecht, Pays-Bas, [1]
Ce bot va extraire les données de ces annuaires et créer les pages dans wikipast. Le BottinBot1 que nous avons développé traite les données des années 1839 à 1848 [2]. Il peut bien entendu être utilisé pour traiter d'autres données.
Description technique
Lecture du bottin
On utilise la librairie Pandas pour lire les données dans le fichier CSV qui nous a été accordé et les organiser dans un objet DataFrame.
A première vue, nous avons 390223 entrées dans notre fichier CSV. Celles-ci sont des entrées entre l'année 1839 et 1848.
Nous avons choisi de ne pas prendre les lignes contenant des valeurs NaN, ceci nous a amené à ne traiter que 389599 entrées. Soit une perte de 0.15%
Vérification d'existence
Avant de créer une page nous nous assurons toujours si elle n'existe pas auparavant. Si elle n'existe pas, la page est créée sinon elle est simplement modifiée en rajoutant la donnée au bon endroit chronologiquement.
Tri automatique croissant par date
Les données sont triées par ordre croissant de date, un algorithme (sort_year) s'occupe de réordonner les entrées. L'algorithme consiste à séparer le text de la page par ligne et de détecter les int correspondants aux évenements déja éxistants. Ensuite on parcours la liste d'années pour détecter où l'insertion se fait (ligne précedent l'endroit où l'on veut insérer la donnée). Enfin on ne modifie l'ancien de texte de la page qu'en ajoutant à la ligne précedente détectée la donnée que l'on veut ajouter.
Desambiguation
Lors de la création d'une nouvelle page, une en-tête redirigeant vers une page d'homonymie de nom est crée/modifiée. La page d'homonymie permet de désambiguer quant aux entrées présentant le même nom mais pas la même adresse ou le même travail par exemple.
Exécution du BottinBot
Stratégies adoptées
Stratégie générale
Nous avons adopté une approche se basant sur un pre-processing des données pour réduire les erreurs d'orthographes et les erreurs d'OCR.
Cette approche consiste en définir un seuil de rassemblement pour les chaines de caractères. Si deux chaines sont jugées semblables, la forme qui a apparaît à une fréquence plus élevée dans les données remplace l'autre.
Vu que les rues ont des noms officiels avec un orthographes fixe, nous avons décidé homogénéiser leur écriture pour éliminer les éventuelles erreurs. Nous avons décidé de commencer par les traiter.
Ensuite, nous avons adopté une approche "Divide and Conquer" où on homogénéise l'écriture de chaque métier dans la même rue, et ensuite le nom ayant la même rue et le même métier.
Après plusieurs tests sur des échantillons de nos données nous avons fixés un seuil de 80% pour les rues et les métiers, mais garder un seuil plus stricte de 90% pour les noms.
En outre, nous avons éliminer les points dans le champ "number", et éliminer les caractères spéciaux des noms.