StatBot
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 permette de visualiser la tenure de Wikipast. Le bot s'occupera donc de présenter la distribution temporelle des entités nommée, basé sur la date de naissance. Ainsi que la distribution spatial de ses entités nomée à la base de leur lieu de naissance. De ces analyses, on peu décider à quel points des statistiques effectuées sur wikipast peuvent être extrapolée 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ée, dans le temps. Les statistiques de StatBot sont sur la page Statbot stats.
Points de donnée en détail
- 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 lieu d'évenement présent sur la page, puis on prend la max de la distance entre tous ces lieu et le lieu de naissance. Cette distance est calculée sur la base de grand arc autour de la terre.
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 50 entités només fournies sur la page Biographies, les dates et lieu de naissances ont été extrait avec des taux d'echec de 8% et 10% respectivement.
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