BottinBot2
Présentation du bot
La fonction de ce bot est d'automatiser la création d'articles biographiques à partir de données extraites des anciens annuaires de la ville de Paris. La donnée primaire est un DataFrame dont les lignes sont les entrées des bottins, chaque entrée contient les informations suivantes:
index, directory, page, row, year, name, job, street, number, street_clean, street_only
Fonctionnement du bot
Traitements des données du bottin
Le but de cette partie est de créer un dictionnaire listant tout les entitées distinctes qui ont pu être extraites des bottins. On considère ici que deux entrées se réfèrent à la même personne si les variables :
name, job, street_clean
sont assez "similaires" ( la notion de similarité dans notre algorithme est explicité plus bas). Chaque entité est donc uniquement caractérisé par son nom, son métier et son adresse.
regroupement des entrées
Les
La similarité entre deux chaines de caractères est quantifié par un nombre allant de 0 (aucune resemblance) à 1 (parfaitement identique) dont la valeur est fixée par le fonction:
def resemblance(s1, s2):
dist = polyleven.levenshtein(s1, s2) #donne une 'distance'. (0: identique, 1: un caractere à changé, etc.)
# ! -- sinon conduit à scores négatifs si divisé par plus petit.
norm_dist = dist/max(len(s1),len(s2))
if ( (s1 in s2) or (s2 in s1) ):
# Si détection d'une inclusion, alors on réduit artificiellement la distance.
norm_dist = norm_dist/3
score = 1 - norm_dist
return score
Ecriture des articles
à l'aide de la fonction entry2url, il est possible de déduire des variables directory,page et row une adresse URL menant à la page du bottin sur GALLICA, qui pourra servir de source