« 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 31 : Ligne 31 :


=== Discussion qualitative ===
=== Discussion qualitative ===
Les
Les deux problèmes principales, soient le regroupement des entrées de personnes individuelles et le problème d'homonymie, ont étés abordés.
L'avantage du dictionnaire créé précédement est qu'il est facile de savoir quand il faut écrire une page de désambiguisation ou non lorsque l'on veut écrire un article.
 
Le problème de regroupement de personnes : TODO
 
Le problème d'homonymie est résolue par l'organisation des DataFrames des personnes individuelles sous forme de dictionnaire à plusieurs niveaux ("nested dictionary") (voir en haut pour la description). Celui-ci permet de boucler une seule fois sur ce dictionnaire ainsi que les sous-dictionnaires, pouvant facilement créer les pages de personnes individuelles y contenues, mettre des titres de page appropriés selon le niveau d'homonymie, et en même temps créer les pages d'homonymies décrites précédemment.
 
Un défaut important est l'interaction avec des pages déjà existantes sur le wiki. Notre hypothèse que les pages sous le format "[Nom] ([métier])" ou "[Nom] ([métier],[rue])" soient uniquement créées par nous, et donc qu'il soit justifié d'effacer et recréer ces pages chaque fois qu'on fait tourner notre bot, n'a pas être vérifié et donc est peut-être un peu naïve. Également, le choix de rajouter la biographie à partir de notre données à la fin d'un article du format "[Nom]" n'était pas le meilleure. D'un côté, le format du page n'est plus consistant, en particulier l'ordre chronologique n'est plus conservé (voir la page [[Adam (A.)]] comme example). Dans cet example particulier un peut aussi constater deux autres problèmes :
# Il ne s'agit clairement pas de la même personne, malgré le même nom. Il aurait fallu procéder par une homonymie de noms.
# Dans le processus de testing notre bot avait déjà une fois bouclé sur la personne [[Adam (A.)]]. En relançant le bot, la biographie a été rajoutée une deuxième fois, car le choix a été fait de ne pas effacer la page. Ce problème semble d'être assez répandu, on a trouvé plusieurs pages avec cet erreur.

Version du 19 mai 2020 à 07:11

GitHub: MaximamongeissBot [1]

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". Ainsi chaque entité distincte est ici uniquement définie par son nom, métier et adresse de travail. Ici la similarité entre deux entrées est définie à l'aide d'une fonction, qui pour deux entrées données, retourne un score de ressemblance compris entre 0 (aucune ressemblance) et 1 (identiques).

préciser le fonctionnement de cette fonction?

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 scores de ressemblance les plus élevés et ayant dépassé un seuil minimum de ressemblance (ceci évitant que deux entrées soient mises dans le même dataFrame avec un score de ressemblance très bas). L'approche anti-chronologique est justifiée 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 niveaux de clefs permettant de retrouver à l'aide du nom, du métier et de l'adresse d'une entité, le dataFrame d'entrée correspondant.


mettre image dico ?

Ecriture des articles

L'article pour chaque entité est composé d'entrées de la forme :

  • year / Paris. Mention de name dans la catégorie job à l'adresse number street_clean. [url]

où les variables year,name,job,number et street_clean sont tiré des entrées du dataframe correspondant à l'individu et l'url est crée à l'aide de la fonction entry2url. Le titre de l'article dépend de s'il existe d'autre entité partageant le même nom ou métier. Il y a donc trois cas:

  1. Il n'existe aucune autre entité ayant le même nom et le même métier, dans ce cas le titre de l'article sera simplement le nom de l'entité
  2. Il existe une entité ayant le même nom mais pas le même métier, dans ce cas le titre de l'article sera "nom de l'entité(métier de l'entité)". Le titre de cette article est ensuite rajouté sur une page désambiguisation regroupant les titres des articles des entités ayant le même nom. Le titre de la page de désambiguisation est "nom de l'entité (Page d'homonymie)".
  3. Il existe une autre entité ayant le même nom et le même métier. Dans ce cas le titre de l'article sera "nom de l'entité(métier de l'entité,adresse de l'entité)". Le titre de cette article est ensuite rajouté sur une page désambiguisation regroupant les titres des articles d'entité ayant le même nom et le même métier. Le titre de la page de désambiguisation est "nom de l'entité(métier de l'entité) (Page d'homonymie)".

Discussion qualitative

Les deux problèmes principales, soient le regroupement des entrées de personnes individuelles et le problème d'homonymie, ont étés abordés.

Le problème de regroupement de personnes : TODO

Le problème d'homonymie est résolue par l'organisation des DataFrames des personnes individuelles sous forme de dictionnaire à plusieurs niveaux ("nested dictionary") (voir en haut pour la description). Celui-ci permet de boucler une seule fois sur ce dictionnaire ainsi que les sous-dictionnaires, pouvant facilement créer les pages de personnes individuelles y contenues, mettre des titres de page appropriés selon le niveau d'homonymie, et en même temps créer les pages d'homonymies décrites précédemment.

Un défaut important est l'interaction avec des pages déjà existantes sur le wiki. Notre hypothèse que les pages sous le format "[Nom] ([métier])" ou "[Nom] ([métier],[rue])" soient uniquement créées par nous, et donc qu'il soit justifié d'effacer et recréer ces pages chaque fois qu'on fait tourner notre bot, n'a pas être vérifié et donc est peut-être un peu naïve. Également, le choix de rajouter la biographie à partir de notre données à la fin d'un article du format "[Nom]" n'était pas le meilleure. D'un côté, le format du page n'est plus consistant, en particulier l'ordre chronologique n'est plus conservé (voir la page Adam (A.) comme example). Dans cet example particulier un peut aussi constater deux autres problèmes :

  1. Il ne s'agit clairement pas de la même personne, malgré le même nom. Il aurait fallu procéder par une homonymie de noms.
  2. Dans le processus de testing notre bot avait déjà une fois bouclé sur la personne Adam (A.). En relançant le bot, la biographie a été rajoutée une deuxième fois, car le choix a été fait de ne pas effacer la page. Ce problème semble d'être assez répandu, on a trouvé plusieurs pages avec cet erreur.