« StatBot » : différence entre les versions
(21 versions intermédiaires par 2 utilisateurs non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
==Déscription== | ==Déscription== | ||
==Introduction== | ===Introduction=== | ||
L'objectif de StatBot est de fournir calculer et mettre à | 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é | Dans un premiers temps, le [[StatBot]] ne se préoccupe que des points de données suivantes pour chaque entité nommée. | ||
# Naissance | # Naissance | ||
Ligne 10 : | Ligne 10 : | ||
# Distance voyagée | # Distance voyagée | ||
Ces points de données préliminaires, nous | 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 | 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 | ===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== | ===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== | ==Work in progress== |
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.
- 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.
La distribution Spatiale nous donne des cartes comme la suivante.
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
Code
Le code est disponible sur git https://github.com/ThereWasALlama/Wikipast_StatBot
Work in progress
Datapoints on named entities
- Life span
- Add to entity page?
- Gender (maybe gender probability)
- Use name-gender bias
- Add to the entity page?
- Travel distance
- Solid angle encomposing all locations?
- Shortest path distance summed between locations specified in chronological order?
- Correlate location data with actual points in google maps?
- Profession
- Where can this information be retrieved?
- Relation score between two entities
- Using life time span, location overlap, referenced pages
Analysis
- life expectancy of members in Wikipast
- Life expectancy at birth from Wikipast data
- Travel radius as function of Birth year
- 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