StatBot

De Wikipast
Aller à la navigation Aller à la recherche

Déscription

Introduction

L'objectif de StatBot est de fournir, calculer et mettre à disposition des statistiques sur les entités nommés présents dans Wikipast. Dans un premiers temps, le StatBot ne se préoccupe que des points de données suivantes pour chaque entité nommée.

  1. Naissance
    1. Date
    2. Lieu
  2. Distance voyagée

Ces points de données préliminaires, nous permettent de visualiser la tenure de Wikipast. Le bot s'occupera donc de la presentation de la distribution temporelle des entités nommées, basée sur la date de naissance. Ainsi que la distribution spatiale de ses entités nomées à la base de leur lieu de naissance. De ces analyses, on peut décider à quel point des statistiques effectuées sur wikipast peuvent être extrapolées sur la population générale. Par la suite, StatBot effectue une première étude statistique, en regardant l'évolution de la distance moyenne voyagée, par les entités nomées, dans le temps. Les statistiques de StatBot sont sur la page Statbot stats.

Points de données en détail

Les entités nommées sont trouvées à partir d'une recherche de l'identifiant Wikidata Q5 (human).

  1. Naissance
La date est éxtrait de la date standard stipulée dans les événements ex. *1943.04.01 / Mendrisio. Naissance de Mario Botta
Le Lieu est lui aussi extrait du même évémenement, puis il est désambiguisé en utilisant l'API de Nominatim de OpenStreetMap pour obtenir ses coordonées en (lattitude, longitude)
  1. Distance parcouru
Pour obtenir la distance max parcourue par une personne, on extrait tous les lieux d'évenements présents sur la page, puis on prend le maximum de la distance entre tous ces lieux et le lieu de naissance. Cette distance est calculée sur la base de grand arc autour de la terre, en utilisant la fonction vincenty de geopy.

Exemples de résultats et analyse des performances

Tous les graphs sont visibles sur la page Statbot stats. La distribution temporelle nous donnes des histogrammes comme le suivant.


Birthyear histogram recent.png


La distribution Spatiale nous donne des cartes comme la suivante.


Birthmap europe.png


Le bot à étudié un échantillon de 2498 entités nomées fournies sur la page Biographies, les dates et lieu de naissances ont été extrait avec des taux d'echec de 39% et 56% respectivement. A l'heure actuelle, la plupart de ces echecs sont dues ' des entrées incomplètes de la bibliothèque Gallica.

La distribution temporelle de la moyenne des distances maximales voyagée

Travel histogram.png

Code

Le code est disponible sur git https://github.com/ThereWasALlama/Wikipast_StatBot

Work in progress

Datapoints on named entities

  1. Life span
    1. Add to entity page?
  2. Gender (maybe gender probability)
    1. Use name-gender bias
    2. Add to the entity page?
  3. Travel distance
    1. Solid angle encomposing all locations?
    2. Shortest path distance summed between locations specified in chronological order?
    3. Correlate location data with actual points in google maps?
  4. Profession
    1. Where can this information be retrieved?

Correlated Datapoints

  1. Relation score between two entities
    1. Using life time span, location overlap, referenced pages

Analysis

  1. life expectancy of members in Wikipast
  2. Life expectancy at birth from Wikipast data
  3. Travel radius as function of Birth year
  4. Mean degrees of seperation between entities of Wikipast

Technicalities

Should a biometrics section be added to the pages in order to store this gender data and other parameters?

Work Plan

Get Naissance from page

Argument (page_name), Returns (Name, birthplace, birth day , month, year) use 0 if not present
Load up the page of the entity
Get "Naissance" event date (use first hyperword for name)
Return error code if the naissance event does not follow the correct syntaxe

Exists entry page_name

Arguments(page_name), returns (true or false)

Database write

Arguments (page_name , dictionary('parameter', value)), Returns (success or failure)
Columns for each variable name
Check if the entry for page_name already exists and overwrite it

Database Load column

Arguments (Column name list), Returns nd list consisting of all the data in the order specified in column name list argument

Plot image of birthyear distribution in database

Check out numpy maybe to generate plots Return image or save directly ?

Statbot Stats graph page update

Take graph png and update existing Statbot Stats page (Create beforehand) Add section for the given graph at the end of the page with a specific title as well as caption commentary Maybe figure out a way to add extra numerical data such as means and stuff in an easy way.

Database Read entry

Arguments (page_name), returns dictionary of all properties from the entry number

Entity Page Write

In Statbot section of the entity page

Arguments(page_name, property:value)
Check if existing and modify
If section as a whole does not exist then create it