« BottinBot2 » : différence entre les versions
Aucun résumé des modifications |
Aucun résumé des modifications |
||
Ligne 5 : | Ligne 5 : | ||
== Fonctionnement du bot == | == Fonctionnement du bot == | ||
=== Traitements des données du bottin === | === 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. | 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: | |||
<code> | <code> | ||
def resemblance(s1, s2): | def resemblance(s1, s2): | ||
dist = polyleven.levenshtein(s1, s2) #donne une 'distance'. (0: identique, 1: un caractere à | 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. | # ! -- sinon conduit à scores négatifs si divisé par plus petit. |
Version du 18 mai 2020 à 21:47
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