Wikisource:Partenariats/Bibliothèque nationale de France/Stats

Wikimédia France s'est engagée à fournir régulièrement (tous les 3 mois) des statistiques sur l'avancement des livres relatifs au partenariat avec la BnF. Je (Seb35) viens de créer un programme pour moissonner de telles statistiques. À partir de la base initiale existante de mesures auxquelles Jean-Fred et moi avons pensé, il y a peut-être d'autres mesures pertinentes qui pourraient être ajoutées (si c'est pas trop trop compliqué quand même).

Rapports modifier

Je viens de finir (17 octobre 2010 à 21:16 (UTC)) la version 1.0RC du rapport résumant les statistiques sur la période 28 mars 2010 - 3 octobre 2010. J'apprécierais des retours/commentaires/critiques/améliorations sur cela avant de l'envoyer à la BnF.

Ça se trouve sur http://toolserver.org/~seb35/bnf-stats/Stats_Wikisource_BnF-WMFr.pdf

Statistiques disponibles modifier

Note importante : pour l'espace Page: (uniquement cela pour l'instant), l'ensemble analysé est l'ensemble des pages créées, et les livres pris en compte sont ceux dont au moins une page existe.

Notes :

  • Les dates sont données en timestamp UNIX (nombre de secondes depuis 1970, ce qui permet des soustractions de dates).
  • J'ai choisi l'ordre dans les tags : non-créée=0, bleu=1, gris=2, rose=3, jaune=4, vert=5.
    • La 'non-linearité' signifie passer (de jaune ou vert à rose) ou (de vert à jaune) ou (de rose à vert).
  • La w:distance de Levenshtein mesure la distance entre deux texte, en comptant minimum le nombre d'ajouts de caractères, de suppressions de caractères ou de remplacements de caractères (je suppose que cette distance modélise assez bien le travail effectué par les Wikisourciers).
    • Note : la w:distance de Damerau-Levenshtein me semble moins bien modéliser le travail effectué car un OCR ne fait pas l'erreur d'inverser deux caractères (transpositions).
    • La distance de Levenshtein brute est entre le texte WS de la révision et le texte OCR initial
    • La distance de Levenshtein fine est entre le texte OCR initial et le texte WS de la révision auquel a été retiré quelques mises en forme (en-têtes et pieds-de-page noinclude et gras/italique en quotes -- faire plus est compliqué), cette mesure compare plus finement la qualité de l'OCR qui ne voit pas les styles
  • Il y a sûrement des bugs dans les résultats, signalez-moi les chiffres incohérents.

Par page modifier

  • ID BnF
  • Titre du livre
  • Nombre de pages du livre
  • Numéro de la page
  • Nombre de révisions de la page
  • Date de création (timestamp UNIX)
  • Statut lors de la création
  • Dernier statut
  • Nombre de contributeurs enregistrés
  • Nombre de contributeurs non enregistrés
  • Liste des contributeurs enregistrés
  • Liste des contributeurs non enregistrés
  • Date de la première version taggée 'gris'
  • Date de la première version taggée 'rose'
  • Date de la première version taggée 'jaune'
  • Date de la première version taggée 'vert'
  • Non-linéarité dans l'évolution des tags détectée
  • Présence initiale de l'OCR
  • Distance de Levenshtein entre l'OCR initial et la dernière version taggée 'rose' (brute)
  • Distance de Levenshtein entre l'OCR initial et la dernière version taggée 'jaune' (brute)
  • Distance de Levenshtein entre l'OCR initial et la dernière version taggée 'vert' (brute)
  • Distance de Levenshtein entre l'OCR initial et la dernière version taggée 'rose' (fine)
  • Distance de Levenshtein entre l'OCR initial et la dernière version taggée 'jaune' (fine)
  • Distance de Levenshtein entre l'OCR initial et la dernière version taggée 'vert' (fine)

Exemple :

5085 Anonyme_-_Raoul_de_Cambrai.djvu 497 1 2 1284268251 2 2 2 0 Zyephyrus|VIGNERON | 1269800618 0 0 0 False True -1 -1 -1 -1 -1 -1
5085 Anonyme_-_Raoul_de_Cambrai.djvu 497 2 3 1284268255 4 5 3 0 Zyephyrus|VIGNERON|Remacle | 0 0 1269800796 1271888531 False True -1 240 300 -1 108 169
5085 Anonyme_-_Raoul_de_Cambrai.djvu 497 3 6 1284268258 2 5 3 0 Zyephyrus|Remacle|Mangoblog | 1269803931 1272469435 1272469372 1273182853 True True 154 154 244 30 30 115

Par livre modifier

  • ID BnF
  • Titre du livre
  • Nombre de pages
  • Nombre de révisions
  • Nombre de pages créées
  • Nombre de pages non créées
  • Nombre de pages taggées 'bleu'
  • Nombre de pages taggées 'gris'
  • Nombre de pages taggées 'rose'
  • Nombre de pages taggées 'jaune'
  • Nombre de pages taggées 'vert'
  • Nombre de contributeurs enregistrés
  • Nombre de contributeurs non enregistrés
  • Liste des contributeurs enregistrés
  • Liste des contributeurs non enregistrés
  • Présence initiale de l'OCR
  • Distance de Levenshtein moyenne entre l'OCR initial et les versions taggées 'rose' (brute)
  • Distance de Levenshtein moyenne entre l'OCR initial et les versions taggées 'jaune' (brute)
  • Distance de Levenshtein moyenne entre l'OCR initial et les versions taggées 'vert' (brute)
  • Covariance de la distance de Levenshtein entre l'OCR initial et les versions taggées 'rose' (brute)
  • Covariance de la distance de Levenshtein entre l'OCR initial et les versions taggées 'jaune' (brute)
  • Covariance de la distance de Levenshtein entre l'OCR initial et les versions taggées 'vert' (brute)
  • Distance de Levenshtein moyenne entre l'OCR initial et les versions taggées 'rose' (fine)
  • Distance de Levenshtein moyenne entre l'OCR initial et les versions taggées 'jaune' (fine)
  • Distance de Levenshtein moyenne entre l'OCR initial et les versions taggées 'vert' (fine)
  • Covariance de la distance de Levenshtein entre l'OCR initial et les versions taggées 'rose' (fine)
  • Covariance de la distance de Levenshtein entre l'OCR initial et les versions taggées 'jaune' (fine)
  • Covariance de la distance de Levenshtein entre l'OCR initial et les versions taggées 'vert' (fine)
  • Nombre de contributions ne venant pas de bots
  • Pourcentage de contributions ne venant pas de bots

Exemple :

5085 Anonyme_-_Raoul_de_Cambrai.djvu 497 2507 497 0 5 1 0 287 204 19 11 Andre315|Camster|Remi_Mathis|Godard|Zyephyrus|Sapcal22|Loïc_Mottier|Mangoblog|Figoblog|VIGNERON|Kipmaster|Shaihulud|Pmx|GautierPoupeau|Wuyouyuan|Remacle|ThomasV|Joele.godard|Zaran 86.210.11.163|92.128.68.5|130.208.138.241|194.199.4.202|88.183.34.23|88.162.124.34|82.67.153.34|80.214.254.3|91.180.95.70|81.56.65.156|86.75.249.118 True 456 569 629 416 412 386 386 403 341 405 369 240 2507 100.0

Par utilisateur modifier

  • Nom de l'utilisateur
  • Nombre de contributions sur les livres du partenariat
  • Timestamps UNIX des contributions

Exemple[1] :

LA2 38 1279667460|1279664901|1279664134|1279666439|1279666575|1279664145|1279663876|1279664156|1279678366|1279678342|1279666471|1279664170|1279664007|1279678383|1279679154|1279666611|1279665589|1279678263|1279678397|1279664449|1279664458|1279678286|1279664079|1279665618|1279666646|1279668217|1279667674|1279664091|1279666396|1279678678|1279678308|1279678828|1279664109|1279666927|1279678321|1279664121|1279664763|1279666684

Récapitulatif modifier

  • Nombre total de livres
  • Nombre total de pages
  • Nombre moyen de page par livre
  • Nombre total de modifications
  • Nombre total de pages créées
  • Nombre total de pages non créées
  • Nombre total de pages taggées 'gris'
  • Nombre total de pages taggées 'bleu'
  • Nombre total de pages taggées 'rose'
  • Nombre total de pages taggées 'jaune'
  • Nombre total de pages taggées 'vert'
  • Nombre moyen de contributeurs enregistrés par livre
  • Nombre moyen de contributeurs non enregistrés par livre
  • Liste des contributeurs enregistrés
  • Liste des contributeurs non enregistrés
  • Nombre de livres avec OCR
  • Distance de Levenshtein moyenne entre l'OCR initial et les versions taggées 'rose' (brute)
  • Distance de Levenshtein moyenne entre l'OCR initial et les versions taggées 'jaune' (brute)
  • Distance de Levenshtein moyenne entre l'OCR initial et les versions taggées 'vert' (brute)
  • Covariance moyenne (sur les livres) de la distance de Levenshtein entre l'OCR initial et les versions taggées 'rose' (brute)
  • Covariance moyenne (sur les livres) de la distance de Levenshtein entre l'OCR initial et les versions taggées 'jaune' (brute)
  • Covariance moyenne (sur les livres) de la distance de Levenshtein entre l'OCR initial et les versions taggées 'vert' (brute)
  • Distance de Levenshtein moyenne entre l'OCR initial et les versions taggées 'rose' (fine)
  • Distance de Levenshtein moyenne entre l'OCR initial et les versions taggées 'jaune' (fine)
  • Distance de Levenshtein moyenne entre l'OCR initial et les versions taggées 'vert' (fine)
  • Covariance moyenne (sur les livres) de la distance de Levenshtein entre l'OCR initial et les versions taggées 'rose' (fine)
  • Covariance moyenne (sur les livres) de la distance de Levenshtein entre l'OCR initial et les versions taggées 'jaune' (fine)
  • Covariance moyenne (sur les livres) de la distance de Levenshtein entre l'OCR initial et les versions taggées 'vert' (fine)
  • Nombre total de contributions ne venant pas de bots
  • Pourcentage de contributions ne venant pas de bots

Exemple :

169 60473 357.828402367 19456 12393 48080 260 65 7751 3266 1019 1.81065088757 0.248520710059 Andre315|Mangoblog|Toto256|Walpole|Severiane|O2|Xofc|NicoV|Herisson|Bgeslin|Plyd|Shaihulud|Yodaspirine|Remacle|Aliceb79|Camelinat|Benjensky|ThomasBot|Sébastien_Thébault|Sapcal22|Maijin21|Yann|Poulpy|Hepsema|VIGNERON|Pio|Nudiaco|Pmx|GautierPoupeau|EDS|Aristoi|ThomasV|Seb35|Bsm15|Marc|Kilom691|QuentinLeclerc|In_Arcadia|Rhadamante|Wuyouyuan|Ælfgar|Fitzwarin|Remi_Mathis|Kipmaster|Acélan|Acer11|Kåre-Olav|Jean-Frédéric|Ash_Crow|Phe|Coyau|~Pyb|LA2|Maltaper|Pyb|Pymouss|Un_nietzschéen|Phe-bot|Fred.th|Camster|Godard|Benji|Edhral|Tpt|TatieDanielle|Natireland|Yland|Zyephyrus|Loïc_Mottier|Figoblog|Deep_silence|Aroche|Zagden|Otourly|Serein|Bertille|Alcide_talon|Enmerkar|Chaoborus|Zaran|BnFBoT|Joele.godard|Marvoir 86.210.11.163|92.128.68.5|94.166.23.151|130.208.138.241|91.180.95.70|88.183.34.23|90.30.155.61|82.123.28.216|82.67.153.34|82.216.237.91|81.255.146.60|82.123.26.140|82.228.194.110|80.214.254.3|88.191.50.206|90.9.73.6|83.114.208.192|109.128.239.69|109.130.69.245|194.199.4.201|194.199.4.202|194.199.4.203|195.83.68.82|86.75.249.118|195.25.216.129|83.195.99.216|193.203.96.2|81.248.18.39|92.139.111.96|82.243.95.45|88.162.124.34|82.123.19.65|62.147.153.108|81.56.65.156|82.123.6.34|82.245.55.227|83.24.140.1|82.224.88.52|212.155.191.21|82.227.226.206 133 173 179 50 53 76 19 128 115 30 52 58 14 10290 52.8885690789

Mode opératoire modifier

  1. Réflexion avec Jean-Fred sur des statistiques intéressantes (il y a compte-rendu de la NCO sur le wiki membres [1] de WMFr à ce propos)
  2. Récupération des données
  3. Extraction des données et création des statistiques

Pour le 2 et 3, les programmes se trouvent sur le toolserver ([2] et [3])

Pour le 2, j'ai rivalisé d'ingéniosité pour tenter de récupérer uniquement les pages créés pour les livres issus du partenariat :

  • je pensais télécharger un dump Wikisource (750 Mio compressé, 16 Gio décompressé)
    • et extraire les bonnes pages avec Python et DOM -> pas possible, trop gros, le DOM charge tout le fichier en mémoire
    • et extraire les bonnes pages avec Python et SAX -> pas possible, trop long, un petit dump de 40 Mio mettait 10-15 minutes
  • extraire depuis la réplication de Wikisource sur le toolserver -> je connais pas bien le SQL (il faudrait soit utiliser de JOIN compliqués soit passer par Python+SQL, je n'ai pas trouvé d'interface SQL officielle en Python) et ça m'aurait donné un fichier texte à parser (j'avais déjà écrit la création de statistiques pour un format dump)
  • chercher un outil sur le toolserver qui extraierait les historiques d'une liste de pages -> pas trouvé
  • utiliser Special:Export :
    • j'ai commencé à la main, en ayant généré les 570000 titres de pages potentielles du partenariat, en exportant par paquet de 3000 titres (le copier-collé d'Opera n'admettait pas plus de 3000 titres, Firefox se bloquait au-delà de 1500 titres) -> j'ai fait 50000 titres mais ai considéré que le risque d'erreur était beaucoup trop important
    • j'ai écrit un petit programme pour me générer N (finalement N=100) pages HTML de Special:Export avec 570000/N titres préremplis sur chaque page (Opera ouvrait correctement la page et moins de risque d'erreur), et j'ai ainsi téléchargé 100 fichiers à la main (très précausionnesement), puis réassemblé ces 100 fichiers en 1 avec un petit programme

Pour le 3, le fichier final contenant toutes les pages fait 43 Mio, et mon ordinateur avait du mal à parser tout ça, j'ai donc réécrit cette extraction de stats en SAX.

Une telle extraction de stats a donc été laborieuse particulièrement pour l'acquisition des données, opération qui est à effectuer à chaque fois que l'on veut faire de telles stats.



  1. La2 est le nom d’un utilisateur ; 38 représente le nombre de ses contributions ; les chiffres qui suivent sont les « Time stamps »