« StatBot » : différence entre les versions

De Wikipast
Aller à la navigation Aller à la recherche
 
(33 versions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
==Mission Statement==
==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.
 
# Naissance
## Date
## Lieu
# 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).
#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)
# 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.
 
 
[[Fichier: birthyear_histogram_recent.png]]
 
 
La distribution Spatiale nous donne des cartes comme la suivante.
 
 
[[Fichier: 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
 
[[Fichier:travel_histogram.png]]
 
===Code===
Le code est disponible sur git https://github.com/ThereWasALlama/Wikipast_StatBot
 
==Work in progress==


===Datapoints on named entities===
===Datapoints on named entities===


# Birth year
# Life span
# Life expectancy
## Add to entity page?
## Add to entity page?
# Gender (maybe gender probability)
# Gender (maybe gender probability)
Ligne 22 : Ligne 67 :


===Analysis===
===Analysis===
# Birth year distribution of the Wikipast database
# life expectancy of members in Wikipast
# life expectancy of members in Wikipast
# Life expectancy at birth from Wikipast data
# Life expectancy at birth from Wikipast data
Ligne 29 : Ligne 73 :


=== Technicalities ===
=== Technicalities ===
Should the datapoints be stored in a page here on wikipast to be read from for analytics, or should it be kept in a local file?
Should a biometrics section be added to the pages in order to store this gender data and other parameters?
Should a biometrics section be added to the pages in order to store this gender data and other parameters?


==Work Plan==
==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

Dernière version du 21 mai 2019 à 08:01

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