« BottinBot2 » : différence entre les versions

De Wikipast
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
Aucun résumé des modifications
Ligne 7 : Ligne 7 :
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 :
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
  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.
sont assez "similaires". Ici la similarité entre deux entrées est définie à l'aide d'une fonction, qui pour deux entrées donnés, retourne un score de ressemblance compris entre 0 (aucune ressemblance) et 1 (identiques).


==== regroupement des entrées ====
La création du dictionnaire contenant les entités distinctes se fait en comparant les entrées d'une année avec celles de l'année précédente et en groupant dans des dataFrames les entrées ayant les score de ressemblances sont les plus élevé et ont dépassé un seuil minimum de ressemblance (ceci évitant que deux entrées soient mis dans le même dataFrame avec un score de ressemblance très bas). L'approche anti-chronologique est justifié par le fait que ???. Le résultat de ce processus est une liste de dataFrame contenant les entrées attribuées à la même entité:
Les


mettre image?


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:
Cette liste est ensuite convertie en un dictionnaire à trois niveau de clefs permettant de retrouver à l'aide du nom, de métier et de l'adresse d'une entité, le dataFrame d'entrée correspondant.
<code>
    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
</code>




mettre image dico ?


=== Ecriture des articles ===
=== Ecriture des articles ===


 
L'avantage du dictionnaire créé précédement est qu'il est facile de savoir quand il faut écrire une page de désembuigisation ou non lorsque l'on veut écrire un
 
à 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

Version du 18 mai 2020 à 22:36

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". Ici la similarité entre deux entrées est définie à l'aide d'une fonction, qui pour deux entrées donnés, retourne un score de ressemblance compris entre 0 (aucune ressemblance) et 1 (identiques).

La création du dictionnaire contenant les entités distinctes se fait en comparant les entrées d'une année avec celles de l'année précédente et en groupant dans des dataFrames les entrées ayant les score de ressemblances sont les plus élevé et ont dépassé un seuil minimum de ressemblance (ceci évitant que deux entrées soient mis dans le même dataFrame avec un score de ressemblance très bas). L'approche anti-chronologique est justifié par le fait que ???. Le résultat de ce processus est une liste de dataFrame contenant les entrées attribuées à la même entité:

mettre image?

Cette liste est ensuite convertie en un dictionnaire à trois niveau de clefs permettant de retrouver à l'aide du nom, de métier et de l'adresse d'une entité, le dataFrame d'entrée correspondant.


mettre image dico ?

Ecriture des articles

L'avantage du dictionnaire créé précédement est qu'il est facile de savoir quand il faut écrire une page de désembuigisation ou non lorsque l'on veut écrire un