« DisambiguationBot » : différence entre les versions

De Wikipast
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
Ligne 19 : Ligne 19 :
</small>
</small>


Pour trouver les homonymies seulement le premier et dernier mot des titres sont comparés (en supposant que les titres sont des noms et le premier mot est le prénom et le dernier mot est le nom de famille). Aussi les titres qui se composent simplement d’un mot sont comparés. Car il existe beaucoup des pages de l’annuaire avec juste le nom de famille.
Pour trouver les homonymies seulement le premier et dernier mot des titres sont comparés (en supposant que les titres sont des noms et le premier mot est le prénom, le dernier mot est le nom de famille). Aussi les titres qui se composent simplement d’un mot sont comparés. Car il existe beaucoup des pages de l’annuaire avec juste un seul nom.


<small>
<small>
Ligne 72 : Ligne 72 :


=== Discusion critique des performances ===
=== Discusion critique des performances ===
Le traitement des titres ne dure que des 20 s pour tout les 1'651'335 entrée sur Wikipast. La recherche des homonymies a besoin environ 4 min et trouve 148'441 groupe d'homonymes.


Concernant la lecture des pages, effectuer une requête à Wikipast pour chaque page, même en parallèle, est très long (~ 400 ms par groupe d'homonymes en série, ~ 30 ms en parallèle). De plus, Wikipast renvoie des erreurs HTTP 500 lorsqu'il reçoit trop de requêtes, probablement à cause d'un bug dans Mediawiki.
Concernant la lecture des pages, effectuer une requête à Wikipast pour chaque page, même en parallèle, est très long (~ 400 ms par groupe d'homonymes en série, ~ 30 ms en parallèle). De plus, Wikipast renvoie des erreurs HTTP 500 lorsqu'il reçoit trop de requêtes, probablement à cause d'un bug dans Mediawiki.

Version du 24 mai 2021 à 18:12

Le DisambiguationBot génére des pages homonymie des personnes sur Wikipast.

Résumé des fonctionnalités

Le bot a pour but de chercher des désambiguations dans les titres des toutes les pages. Mais seulement les pages qui sont identifiées comme une page d’une personne sont finalement pris en considération. Ensuite, il crée pour chaque désambiguations un page d’homonymie.

Description technique

Recherche des homonymies

Après tous titres des pages Wikipast sont récupérer, ils sont traité de sorte que :

  • Ils sont écrits en lettre minuscule
  • Ils ne contiennent pas des mots dans des parenthèse
  • Ils ne contiennent que des lettres, ils ne contiennent ni des nombres ni des symboles
  • Ils ne contiennent que des mots qui sont plus longue que 1 lettres

Ex. ‘ (en) Alfonso Rodríguez G. from Ceballos’ -> ‘alfonso rodríguez from ceballos’
Ex. ‘ 24 Préludes. Violoncelle, piano. Op. 47 (Auerbach) ’ -> ‘préludes violoncelle piano op’

Pour trouver les homonymies seulement le premier et dernier mot des titres sont comparés (en supposant que les titres sont des noms et le premier mot est le prénom, le dernier mot est le nom de famille). Aussi les titres qui se composent simplement d’un mot sont comparés. Car il existe beaucoup des pages de l’annuaire avec juste un seul nom.

Ex. ‘Alfred Martin’ -> ‘ alfred martin
‘Alfred Henri Martin’ -> ‘ alfred henri martin
‘Alfred Martin (19f0bfa)’ -> ‘ alfred martin

Identification des pages des personnes

Après la recherche des homonymies, chaque page homonyme est lue pour en extraire les informations suivantes :

  • année de naissance avec le mot-clé Naissance
  • année de décès avec le mot-clé Décès
  • fonctions avec les mots-clés Nomination et Election
  • description Wikidata en anglais ou français lorsque l'identifiant correspondant est présent (généralement ajouté par le bot Wikidataficator)

Dans le cas de recherche de personne provenant d'annuaires, cette méthode n'est plus appropriée. En effet les informations concernant la naissance, la mort de l'entité ne sont pas contenues dans cette page homonyme. De plus les mots-clés Nomination et Election ne fonctionnent pas non plus et il n'existe pas de lien Wikidata créé.

Chaque pages extraites des annuaires sont construites sous une forme fixe, ces pages ayant été créées par des bots. Il y a eu six bots distincts créant chacun des milliers de pages et ayant une syntaxe différente. Trois syntaxes ont été extraites et ont permis la détection de page correspondant à une personne. Seule l'information suivante a été retenue :

  • fonction

En effet la date indiquée correspond seulement à celle où la personne à été enregistrée dans l'annuaire, ce qui n'apporte pas une information pertinente. De plus, l'adresse n'a pas non plus été retenue car toutes

La recherche des mots-clés essaie d'accepter un maximum de syntaxes, par exemple Election accepte l'élection de quelqu'un « en tant que », « comme » et « au poste de ». Néanmoins, les descriptions Wikidata fournissent l'essentiel des informations car elles sont généralement plus générales qu'une information sur une élection ou une nomination.

S'il y a au moins l'une des informations récupérées, alors on considère que la page en question correspond à une personne. S'il y a deux personnes au moins identifiées par groupe d'homonymie, alors on peut créer une page pour ce groupe.

La page d'homonymie résultante ressemble à ce qui est visible sur Wikipédia, par exemple avec la page Barry Barnes (disambiguation) :

[[Barry Barnes (disambiguation)|Barry Barnes]] peut désigner :

* [[Barry K. Barnes]] (1906 – 1965), acteur britannique
* [[Barry Barnes]], basketball coach

Il arrive souvent que les pages citées correspondent à la même personne, par exemple pour André Masson (disambiguation). Le bot ne fusionne pas ces pages, mais il est facile pour un utilisateur de remarquer les similitudes.

[[André Masson (disambuigation)|André Masson]] peut désigner :

* [[André Masson]] (1896 – 1987), peintre français
* [[André Masson (3b24eb9)]], peintre français
* [[André Masson (44b9c7b)]], peintre français
* [[André Masson (6df93be)]], peintre français
* [[André Masson (d8fb9d8)]], économiste français

Création des pages homonymie

Discusion critique des performances

Le traitement des titres ne dure que des 20 s pour tout les 1'651'335 entrée sur Wikipast. La recherche des homonymies a besoin environ 4 min et trouve 148'441 groupe d'homonymes.

Concernant la lecture des pages, effectuer une requête à Wikipast pour chaque page, même en parallèle, est très long (~ 400 ms par groupe d'homonymes en série, ~ 30 ms en parallèle). De plus, Wikipast renvoie des erreurs HTTP 500 lorsqu'il reçoit trop de requêtes, probablement à cause d'un bug dans Mediawiki.

Pour ces raisons, le bot utilise un dump de Wikipast en JSON. Comme le fichier est très lourd (2 Go) et qu'il est donc difficile de travailler dessus, le bot réécrit le fichier avec une page au format JSON par ligne, permettant ainsi une lecture individuelle des pages en accès direct (random access). La recherche d'une page se fait par dichotomie après un tri des pages (les pages sont déjà triées mais pas dans le même ordre que celui défini par Python). Il faut une vingtaine d'itérations (logarithme binaire du nombre total de pages, soit environ 106) pour trouver une page, dont les dix premières sont mises en cache car les requêtes à ces pages seront probablement redondantes.

Une optimisation supplémentaire permet un arrêt prématuré lorsqu'au moins toutes sauf une page d'un groupe ne correspondent pas à des personnes ; la dernière page n'est alors pas analysée. Le temps de recherche étant très faible, l'essentiel du temps d'éxécution du bot est utilisé pour les requêtes à Wikidata, qui sont effectuées en parallèle avec une limite du nombre de connexions car le quota de Wikidata par adresse IP est assez faible.

La vitesse finale est de ~ 3 ms par groupe d'homonyme.

Parmi les améliorations possibles :

  • Prendre avantage du fait que la liste des groupes d'homonymes est elle même triée.
  • Par exemple, l'utilisation d'un cache LRU lors de la recherche par dichotomie pourrait améliorer la vitesse de recherche.
  • Exécuter la recherche et l'analyse de chaque page en parallèle.