Contribuer en lot à Wikidata avec QuickStatements

Après avoir fait plus de 14 000 modifications à la main dans Wikidata, je me suis enfin penché sur les modifications semi-automatiques de QuickStatements, une API qui permet les modifications en lot. Voici la méthode pour se sauver du temps et de l’ennui avec l’exemple de la propriété P123 Publisher pour les maisons d’édition de jeux de rôle sur table :

Exporter une table csv depuis Wikidata

  1. Lancer une requête SPARQL avec, pour chaque élément, une colonne pour l’identifiant Q Wikidata et une colonne pour le label. Dans l’exemple, item = élément de base Q Wikidata du jeu, itemLabel = nom du jeu, publisher = élément Q de la propriété P123, publisherLabel = nom de la maison d’édition.
SELECT DISTINCT ?item ?itemLabel ?publisher ?publisherLabel WHERE {
  {
    { ?item wdt:P31 wd:Q1643932. } #TTRPG
    UNION
    { ?item wdt:P31 wd:Q2164067. } #System
    UNION
    { ?item wdt:P31 wd:Q71631512. } #supplement
    UNION
    { ?item wdt:P31 wd:Q4418079. } #setting
    UNION
    { ?item wdt:P31 wd:Q4686479. } #adventure, campaign
  }
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
  OPTIONAL { ?item wdt:P123 ?publisher.}
}
ORDER BY (?itemLabel)

Try it!

  1. Enregistrer au format csv.

Éditer le fichier csv

  1. Ouvrir le fichier csv dans LibreOffice Calc (le meilleur éditeur libre de fichier csv).
  2. Modifier les éléments désirés en ajoutant les Label dans la colonne Publisher Label. Bénéficier de la saisie semi-automatique si l’élément existe déjà.
    Si l’élément n’existe pas, le créer dans Wikidata et le rajouter dans la colonne Q ET la colonne Label.
  3. Trier la colonne Label. Copier-coller les Q manquants très visibles dans les trous de la colonne.
  4. Supprimer les colonnes Label.
  5. Sauvegarder les deux colonnes restantes au format csv.
  6. Déboublonner le fichier csv. J’ai testé 3 méthodes, la meilleure est Notepad++ avec l’extention TextFX. Voir annexe.
  7. Sur la première ligne, remplacer item, publisher par qid,P123. Le fichier devrait ressembler à ceci :
qid,P123
Q270118,Q2832284
Q2703461,Q762106
Q27102849,Q28466028
Q2720180,Q1433597
Q2755273,Q1543201

Verser dans Wikidata avec QuickStatements

  1. Aller sur QuickStatements, connectez-vous avec votre identifiant Wikimedia. Nouveau lot > Collez le contenu du fichier csv dans la case puis cliquez sur le bouton Importer les commandes CSV.
  2. Et voilà!

Annexe : comment dédoublonner des fichiers txt, csv,…

Cas: j’ai 1575 lignes à dédoublonner dans un fichiers csv. Trois méthodes sont testées :

A. Dans Calc : Bien.

  1. Sélectionner LES DEUX colonnes > Données > Plus de filtres > Filtre Standard > Nom du champs = “Aucun” + Options = “Sans doublons” > OK.
  2. Copier-coller le résultat dans Notepad++. Remplacer (mode étendu) les \t par des virgules ,

B. Dans Notepad++, par expression régulière : Pas robuste.

  1. Remplacer (mode expression régulière) ^(.*?)$\s+?^(?=.*^\1$) par rien. Cocher .match newlines
  2. Échec : ne fonctionne que pour 300-400 lignes max.

C. Dans Notepad++, avec extension TextFX : Bien.

  1. Installer TextFX : Plugins > Plugin Manager > Show Plugin Manager > Available tab > TextFX > Install
  2. Sélectionner tout. TextFX > TextFX Tools > Activer : +Sort Ascending et +Sort output only…
  3. Puis TextFX > TextFX Tools > Sort lines cases Sensitives (at colums)

Résultats A et C : 901 lignes restantes.

Fouille de texte dans les éditions de D&D (Étape 1 : choisir l’extraction pdf)

Cet essai est un bac à sable pour expérimenter un flux de données et leur traitement en fouille de texte (text mining). Cette première partie compare différentes méthodes pour sortir des données des pdf.

Les fichiers pdf sont extrêmement hétérogènes. Cela va du fichier produit professionnellement et électroniquement au fichier numérisé à la main dans un garage avec plein de bugs dans la structure.

Flux de données

1. Sélection du corpus des données

Seuls les livrets ou la boîte de base de chaque édition de D&D sont sélectionnées.

2. Récolte des différentes éditions en pdf

Cette récolte a été effectuée par des moyens que les lois sur la propriété intellectuelle réprouve. Je brave le risque en me disant que je fais ça dans un but purement académique.

3. Renommage des fichiers

Old Dungeons & Dragons (1974 ed.)
1974-odd-mnm : booklet no.1, Men & Magic
1974-odd-mnt : booklet no.2, Monsters & Treasures
1974-odd-unw : booklet no.3, The Underworld & Wilderness
Adventures
1974-odd-rs : reference sheet

D&D boxed set Holmes ed. (1977)
1977-ddholmes-box

D&D Moldvay ed. (1981)
1981-ddmoldvay-basic : Basic boxed set
1981-ddmoldvay-expert : Expert boxed set

D&D BECMI Mentzer ed. (1983)
1983-ddbecmi-b : Basic boxed set
1983-ddbecmi-e : Expert boxed set
1983-ddbecmi-c : Companion boxed set
1983-ddbecmi-m : Master boxed set
1983-ddbecmi-i : Immortal boxed set

Advanced Dungeons & Dragons (1979)
1979-add1-mm : Monster Manual
1979-add1-phb : Player’s Handbook
1979-add1-dmg : Dungeon Master Guide

Advanced Dungeons & Dragons 2nd (1989)
1989-add2-phb : Player’s Handbook
1989-add2-dmg : Dungeon Master Guide
1989-add2-mm : Monstrous Compendium vol.1

Advanced Dungeons & Dragons 2nd Revised ed. (1995)
1995-add2r-phb : Player’s Handbook
1995-add2r-dmg : Dungeon Master Guide
1995-add2r-mm : Monster Manual

Dungeons & Dragons 3rd ed. (2000)
2000-dd3-phb : Player’s Handbook
2000-dd3-dmg : Dungeon Master Guide
2000-dd3-mm : Monster Manual

Dungeons & Dragons 3.5 ed. (2003)
2003-dd35-phb : Player’s Handbook
2003-dd35-dmg : Dungeon Master Guide
2003-dd35-mm : Monster Manual

Dungeons & Dragons 4th ed. (2008)
2008-dd4-phb : Player’s Handbook
2008-dd4-dmg : Dungeon Master Guide
2008-dd4-mm : Monster Manual

Dungeons & Dragons 5h ed. (2014)
2014-dd5-phb : Player’s Handbook
2014-dd5-dmg : Dungeon Master Guide
2014-dd5-mm : Monster Manual

4. Déplacement de tous les fichiers

Tous les pdfs sont placés dans un dossier \pdfraw à la racine du projet.

5. Préparation des pdf : OCR

Je lance une reconnaissance de caractères (OCR) dans les pdf numérisés qui n’ont pas encore reçu ce traitement. Il y en a peu (2 seulement).

Avec le logiciel Adobe Acrobat 2017 : Passe à 600 dpi. Traitement en lot possible mais la sélection des fichiers à reconnaître doit être faite manuellement.

Dans le logiciel PDF Converter Elite 5, l’OCR se fera toute seule lors de l’exportation (étape 6). Cela va même plus loin puisque ce dernier ignore les OCR effectuées et enregistrées précédemment et il refait les siennes (ça prend un temps fou du coup : 5h).

6. Exportation des PDF aux format TXT et XML.

Quand l’option est disponible, je choisis l’encodage UTF-8.

Avec Adobe Acrobat 2017

  • TXT (brut, plain).
  • TXT (accessible, acessible).
  • XML 1.0 : sans images.

Traitement en lot décevant : 1) automatisation possible via le créateur d’Actions mais beaucoup trop de fenêtres intermittentes stoppant le processus et demandant des clics de validation; 2) quelques erreurs de transcriptions au format txt; 3) le format txt (Accessible) ignore beaucoup contenus de fichiers (0 Ko ou 3 Ko); 4) le format XML 1.0 est mal formé (très dur de le charger dans R) et contient plein d’erreurs.

Avec Calibre 4.13

Traitement en lot décevant aussi (le processus est facile et continu mais l’exportation échoue pour plusieurs PDF). Paramétrage nécessaire pour garder le nom de fichier original.

Avec le package pdftools de R Studio

Globalement bon et rapide, mais il y a des erreurs et je n’arrive pas à identifier où car les logs d’erreurs ne le disent pas (mentions de PDF error: read ICCBased color space profile error et PDF error: not an ICC profile, invalid signature).

Syntaxe du code R pour charger les données :

# install.packages("pdftools")
library(pdftools)

# make a list of all pdf files in pdfraw folder
files <- list.files(path="pdfraw", pattern="*.pdf", full.names=TRUE)

# put all the files into a bigdata variable
bigdata <- lapply(files, pdf_text)

Avec PDF Converter Elite 5

Traitement en lot en continu. Comme mentionné précédemment : le logiciel lance un OCR sur tous les fichiers pdf numérisés, même ceux avec déjà une couche OCR.

Tableau de comparaison des exportations

Acrobat 2017 Calibre 4.13 pdftools PDF Conv. 5
logiciel propriétaire libre libre propriétaire
formats xml 1.0 / txt:plain / txt:acessible txt txt txt
flux du traitement batch interrompu constamment quelques interruptions continu continu
durée du traitement : 33 fichiers, 1Go total 30 min. / 30 min. / 30 min. 14 min. 2 min. 5h
nb mots total du corpus (6 756 pages) en millions 5,07 (c) / 4,68 (a) / 2,54 (a) 3,44 (a) 5,53 (b) 4,69 (a)
fichiers ignorés (ou dont +95% est manquant) 0 / 4 / 33 11 1 6

Méthodes de calcul du nombre de mots du corpus

(a)

Calculé avec le logiciel Notepad++ et son plugin Combine 1.0 (à installer et qui combine tous les fichiers ouverts dans le logiciel dans un nouveau fichier).
Puis avec l’option Affichage (View) > Résumé (Summary) sur le nouveau fichier combiné.

(b)

Calculé en exportant les données de R Studio avec le script suivant :

#install.packages("erer")
library(erer)
write.list(bigdata,"output.txt")

Et ensuite avec l’option Affichage (View) > Résumé (Summary) sur le fichier output.txt (vu le volume j’ai ignoré le mot result mais il aurait pu être enlevé en multiremplacement dans NP++ pour un corpus plus petit, voir plus bas).

Bonus : un script R pour sortir les fichiers txt procédés par pdftools dans un dossier /pdfexports/pdftools :

library(pdftools)
files <- list.files(path="pdfraw", pattern="*.pdf", full.names=TRUE)
nb_files <- length(files)
for(i in 1:nb_files) {
  onefile <- pdf_text(files[i]) #1 
  x <- gsub("pdfraw/","",gsub(".pdf","",files[i])) #2
  write(onefile,file=paste("pdfexports/pdftools/",x, ".txt", sep="")) #3
}
# 1. process (i) pdf file into onefile
# 2. strip the path and the .pdf to keep the core name
# 3. write a txt file in the subdirectory
# How to encode in utf-8?

(c)

J’ai tenté de charger les xml générés par Acrobat dans R Studio et créer un fichier compilé mais il y a beaucoup de messages d’erreur.

library(readr)
files <- list.files(path="pdfexports/acrobat_xml", pattern="*.xml", full.names=TRUE)
bigdata_xml <- lapply(files, read_csv)
# ici on s'aperçoit de plein de messages d'erreur
library(erer)
write.list(bigdata_xml,"output_xml.txt")

Du coup, j’ai combiné tous les fichiers xml comme dans le point (a). Puis, toujours dans NP++, je multiremplace (Ctrl+H) en mode Expressions régulières :
<[^>]*<[^>]*>[^>]*>|<[^>]*> par rien.
Enfin, j’utilise l’option Affichage (View) > Résumé (Summary) pour compter le nombre de mots.

Moralité

  1. Le format pdf est un format atroce pour faire de la fouille de texte.
  2. pdftools de R Studio est rapide, gratuit mais il peut manquer des choses dans des pdf mal formés.
  3. Les exportations xml 1.0 de Acrobat ne sont pas bien formatées, en tout cas pas assez bien pour les charger aisément dans R Studio. Celle en plain txt est meilleure car moins verbeuse. Dans tous les cas, c’est fastidieux de cliquer à la main pour tous les fichiers.
  4. PDF Converter Elite 5 semble faire une exportation correcte et fluide tant qu’on le laisse tourner pendant la nuit.

Prochaine étape

Je vais faire une analyse plus qualitative des exportations en comparant les différents corpus de txt extraits.


Ce billet a été pré-rédigé dans HackMD puis exporté en html. Je le conseille vivement.

Pratiques de citation des jeux de rôle sur table : Wikidata, SPARQL et RStudio

Avertissement : Les données sont incomplètes et leur traitement est embryonnaire. Ce 100e billet de blogue a pour but de faire le point sur la méthode et les résultats à mi-parcours.

Introduction

Dans le cadre du Projet Sur les épaules des géants des nuages, qui analyse les pratiques de citations dans les jeux de rôle sur table (JDRT), j’ai poussé mon travail vers :

  1. La sélection et le dépouillement de jeux de rôle sur table ;
  2. La création d’une base de données de citations, structurée et hébergée à l’intérieur de Wikidata, puis interrogée par SPARQL ;
  3. L’analyse de cette base de données par R et R Studio, une suite de logiciels libres de traitement statistique.

Sélection

La sélection des JDRT s’est faite sur :

  • La liste de tous les JDRT qui ont une page Wikipédia en anglais et en français. Complétude estimée : environ 95% ;
  • Plus tous les JDRT cités dans des périodiques que je suis depuis les dix dernières années : des podcasts francophones, des blogues francophones et anglophones et des magazines sur le JDRT. Complétude : environ 80% ;
  • Plus tous les JDRT cités par des JDRT issus des listes précédentes.

Cette sélection est modérément biaisée car la notoriété est attribuée de manière externe par des tierces parties (ie. les contributeurs de Wikipédia et les éditeurs des périodiques).

La sélection a été validée par le fait que chaque jeu mentionné comporte une ou plusieurs notices de référence dans la base de données RPGGeek (environ 99.9%).

Dépouillement

Le dépouillement des JDRT a été fait sur plusieurs mois. Chaque page de JDRT mentionnant un autre JDRT a été récolté dans un dossier électronique par numérisation ou par re-numérisation (capture d’écran d’un PDF par exemple) sous la forme de fichiers image PNG nommés nomdujeu-pXX.png (où XX représente la page de la numérisation).

Pour enrichir les données dépouillées, des métadonnées d’édition du JDRT ont aussi été capturées : ours, colophons,  pages de crédit (env. 90%), pages de remerciement, extrait de la page des participants des souscriptions (env. 50%), parfois couverture ou dos de couverture (env. 5%).

D’autres mentions de citation, d’attribution ou de référence ont été récoltées : bibliographies, filmographies, citations d’auteurs ou d’œuvres, etc.

Tout ou une partie des épigraphes ont été récoltés.

Conception de la base de données

J’ai choisi Wikidata pour déposer le cœur de la base de données des pratiques de citation.

  • Cela m’évite d’avoir à créer ma propre base de données ;
  • Cela me permet de partager ma base de données de manière ouverte ;
  • Wikidata est simple à alimenter ;
  • Wikidata exporte dans des formats simples. Aussi, il est très facile de l’interroger directement via R Studio avec le package adéquat ;
  • Il y avait presque toutes les propriétés dont j’ai besoin :
    • propriétés de citation (cites work P2860)
    • publisher P123
    • movement P135
    • author P50
    • publication date P577
    • Inconvénient : il n’y a pas de propriété pour renseigner les informations suivantes : existence d’une bibliographie, présence d’épigraphes.
  • Je peux potentiellement lier les données à d’autres bases de données pour enrichir ce cœur (à explorer : c’est une manipulation à faire dans R Studio, ou bien à faire semi-automatiquement dans Wikidata grâce à des programmes comme QuickStatements).

Pour l’occasion et pour enrichir Wikidata de données liées, j’ai demandé à Wikidata la création d’une propriété d’identifiant (identifier ID P7226) vers RPGGeek pour commencer à lier ces deux bases de données. L’identifiant est désormais présent dans l’outil Mix’n’Match de Magnus Manske.

Avancement

La saisie dans Wikidata a débuté en mai 2019. En décembre 2019, il y avait environ 13 000 éditions faites.

Environ 300 éléments Q ont été créés. La plupart sont des éléments Q d’un JDRT inexistant auparavant. Plus rarement, un élément Q a été créé pour une catégorie taxonomique (ex: tabletop role-playing game supplement, GM-less, death spiral, etc.).

Environ 766 liens ont été créés entre 137 JDRT (voir cette extraction SPARQL).

Beaucoup de données étaient à corriger ou à préciser. Par exemple, de nombreux JDRT n’avaient pas d’instance, ou bien avaient l’instance jeu (game) ou jeu de rôle (role-playing game), alors que l’instance correcte est jeu de rôle sur table (tabletop role-playing game).

D’autres mises en ordre taxonomiques ont été référencées sur la page WikiProject Boardgame.

SPARQL

Le langage SPARQL permet d’extraire les données de Wikidata. La principale requête pour ce projet a été déposée ici. Elle est aussi présente directement dans le code R.

Elle permet d’extraire un tableau simple, ayant les jeux analysés dans une colonne et tous les jeux de rôle cités par celui-ci dans une autre colonne.

Dans une seconde phase, il va être intéressant d’exporter aussi les données de maison d’édition et d’auteur pour pondérer à la baisse la force de certaines citations. En effet, beaucoup de jeux d’une même gamme/ maison d’édition se citent les uns les autres. De la même manière, parfois des jeux du même auteur sont mentionnés en indication purement autobiographique.

Analyse avec le logiciel R

R est une suite de logiciels libres pour traiter de données numériques. C’est la grande mode en ce moment dans la recherche universitaire alors pourquoi pas les utiliser pour mon projet ? Ces logiciels sont gratuit et ouverts, donc il existe beaucoup de partage de codes et d’outils en ligne. Idéal pour moi qui suis un programmeur du dimanche. De plus, la manipulation de R n’est pas très complexe avec l’interface R Studio.

J’ai déposé le code ici https://github.com/pmartinolli/OtSoCG

Cliquer sur l’image pour télécharger une visualisation des données (préliminaires) au format PDF.

Développement futur : comme expliqué précédemment, je souhaite pondérer les liens de citations en réduisant la force des liens vers d’autres JDRT de même publisher ou de même author.

Wikidata : base de données+requêtes pour programmeurs du dimanche

Synchronicité

Dans le billet précédent, j’expliquai les limites techniques de mon projet de chronologie des jeux de rôles, d’arbre des innovations et des citations, par mes limites de compétences en informatique. Il se trouve que je viens tout juste d’assister à une formation sur Wikidata donnée par Simon Villeneuve, véritable wiki-héros Chicoutimien (107 contributions).

Wikidata est une solution simple pour constituer une base de données d’éléments liés (ex: Q1375) et  pour générer des tableaux de données, des chronologies, des graphes, etc. grâce à des requêtes complexes. Même si les déclarations d’éléments peuvent être complexes, Wikidata m’évite d’avoir à apprendre des langages de programmation, de structuration de données et d’installer le tout localement. De plus, le cheminement est progressif et il porte ses fruits dès le début. Il peut être jumelé ou soutenir des projets d’humanités numériques pour lesquels vous manquez de ressources de programmation. Parlez-en à votre bibliothécaire disciplinaire.

Du coup, je réfléchis comment apparier mes données avec celles de Wikidata et comment utiliser cet outil qui a le bénéfice d’être entièrement ouvert (le contenu dans le domaine public CC0).

Bases de Wikidata

  • Un élément Wikidata Q possède des propriétés P qui elles-mêmes sont souvent d’autres éléments Q.
  • Pour plus de précisions, on peut encore préciser ces données avec des éléments P et Q.
  • Chaque élément est multilingue.
  • Il est possible de sourcer tous les éléments avec des références bibliographiques.
  • Il est possible de lier les données à des bases de données externes grâce à des propriétés de type « Identifiers / Identifiants ».
  • Chaque modification est signée et comptabilisée (j’en suis à 12 000 en nov. 2019).
  • On peut interroger Wikidata et récupérer les données sous différents formats grâce à des requêtes SPARQL (exemples).
  • On peut s’amuser à renseigner des éléments :

Bonnes pratiques pour les jeux de rôle sur table

Requêtes SPARQL

Exemples de graphe sur les pratiques de citation dans les jeux de rôle sur table.

Méthode et structure du code dot de l’arbre des innovations des jeux de rôle sur table

Lien vers le dépôt GitHub contenant le code source et le PDF

Mets ta méthode (méta-méthode?)

La meilleure (mais que je n’ai pas suivie)

Idéalement, pour conduire un projet d’arbre phylomémétique des innovations dans les jeux de rôle sur table, la meilleure méthode serait de générer du code à partir d’une base de données dont les éléments seraient les jeux, les innovations et les liens entre eux.

L’intérêt principal de cette méthode est que je pourrais ainsi catégoriser les éléments (leur ajouter des mots clés) et générer facilement un ou plusieurs graphes selon ces catégories. Par exemple, générer un arbre des liens de citation seulement, un arbre autour des mécaniques de randomisation (dés, etc.), un arbre sur les jeux français, etc. Cela permettrait aussi de générer un arbre pour deux langues facilement : un avec des champs en anglais et un un avec des champs en français.

Pour cela, je pourrais utiliser Gephi pour toute la chaîne de production. Ou bien, je pourrais utiliser une base de données, interrogée par Python qui génèrerait du code en langage dot, puis qui serait interprété en ps par Graphviz, puis en pdf par Acrobat Distiller.

La pire (Que j’ai évité)

La pire méthode serait de créer les éléments du graphe et de les relier manuellement directement dans le document final. Exemple : en déroulant une feuille papier de 2 x 3m et rédigeant tout avec un crayon papier. Ou bien en utilisant un logiciel de diagramme visuel WYSIWYG comme Visio, CMaptools, etc.

La voie du milieu (Que j’ai choisi)

En effet, comme je ne sais pas utiliser Gephi ni programmer en Python, j’ai choisi une méthode qui court-circuite la base de données de la «meilleure méthode» ci-dessus pour coder toutes les données directement en langage dot. Cependant :

  1. Cela m’oblige à bricoler des règles de structure car je ne peux pas facilement catégoriser les éléments.
  2. Tout est dans un seul bloc de code. Donc, si je veux couper des éléments pour faire des petits arbres plus simples, il faut que je regroupe ces éléments dans des parties bien séparées (et facilement escamotables).

Chronologie des jeux de rôle sur table (rendu partiel ne tenant pas en compte des innovations, des liens d'auteur, de citation ou de règles)
Chronologie des jeux de rôle sur table (rendu partiel ne tenant pas en compte des innovations, des liens d’auteur, de citation ou de règles)

Le code source code est une adaptation du code créé par Todd Lehman pour son “TeX Family Tree”.

J’ai fait un modèle simple reprenant toute la structure en quelques éléments (aperçu). N’hésitez pas à vous l’approprier pour vos propres projets (et me citer).

Partie 1 : le préambule

  • Métadonnées
  • Conseils de compilation du code
  • Paramètres du graphe

Partie 2 : la ligne du temps

  • de 1969 à maintenant

Partie 3 : la liste des jeux de rôle

{ rank = same; 1977; dndholmes [label="Basic D&D [Holmes]"]} odnd_whitebox -- dndholmes ;
{ rank = same; 1981; dndmoldvay [label="Basic D&D [Moldvay]"]} dndholmes -- dndmoldvay ;
{ rank = same; 1983; dndmentzer [label="Basic D&D [Mentzer]"]} dndmoldvay -- dndmentzer ;
  • Ils sont listés et regroupés par :
    • gamme
      • avec une liste des différentes éditions des règles
      • suivie d’une liste des suppléments/ modules marquants
    • puis ils sont listés et regroupés par genre (fantasy, sf, etc.)
  • Chaque élément est décrit de la manière suivante : 1ère année de publication / identifiant unique / label [nom du jeu et édition] / lien immédiat vers le jeu précédent de la gamme

Partie 4 : la liste des innovations : mécaniques de jeu, intentions ludiques, etc.

Pour le moment, cette partie n’est pas diffusée sur GitHub.

  • Chaque élément est décrit de la manière suivante  : Identifiant unique / label (description synthétique de l’innovation) / lien immédiat avec le jeu dont cette innovation est issue.
    • { identicaldices [label = "Sets of identical-dices values in dice pool"]} godlike -- identicaldices ;
  • Option du label : précédé de «1st» si c’est original (1ère fois que…)
    • label = "1st critical hit\n['lucky hit']"
  • Les innovations sont classées par grandes catégories. Chaque catégorie est colorée différemment.

Liste des catégories des innovations

  • Miscellaneous historical innovations
  • Authority on fiction: gamemaster roles vs players roles
  • Campaign, adventure
  • Design
  • Resolution system
  • Critics & level of success
  • Dramatic modifiers to resolution
  • Saves
  • Use points to influence success (aka Meta-currency)
  • Health
  • Group
  • Sheet
  • Character generation
  • Character advancement
  • Magic
  • Morality, Alignment, Personality, Sanity
  • Literature / Genre Emulation
  • Rolls & Randomizers

Partie 5 : méta-liens entre les éléments

Pour le moment, cette partie n’est pas diffusée sur GitHub.

Les liens de base existent déjà entre les jeux (dans la liste des jeux de la partie 3) et entre les jeux et les innovations (dans la liste des innovations de la partie 4). Dans cette partie, on va tisser d’autres types de liens.

liens de Même auteur

La liste des principaux concepteurs de jeu, avec un historique de leurs principaux jeux édités.

eotpt -- eotpt83 -- eotpt87 -- aot1992 -- tita2002 -- eotpt2005 [headlabel = "M.A.R. Barker"] ;

liens de Citation directe

Quand un jeu est cité par un autre jeu en bibliographie, en dédicace, etc.

{dnd0 -- tnt1} -- runequest1 ;

liens autres

Liens divers mais significatif entre 2 jeux : même maison d’édition, mêmes règles, même univers diégétique, etc. Le trait est alors en pointillé.

  • pathfinder -- starfinder [style=dotted];;
  • { orientaladventures ; l5r2 } -- orientaladventures2 [style=dotted];;
  • agameofthrones -- asongoficenfirerpg [style=dotted];
  • tombofhorror -- returntombofhorror -- tombofannihilation [style=dotted] ;

Comment indiquer les sources des jeux et des innovations ?

  • Les sources sont indiquées dans le code du graphe sous la forme de commentaires (ex: #s075). Les numéros d’identifiants sont uniques, ils sont précédés d’une lettre indiquant le type de source.
    • #p001 : source no. 001, une source primaire
    • #s045 : source no. 045, une source secondaire
    • #t078 : source no. 078, une source tertiaire
  • La liste des sources est rédigée dans un document sources.md à part.
    • Le début du fichier liste les sources générales
    • La fin du fichier recense spécifiquement toutes les sources utilisées.

Role-playing games : Basic bibliometry with PsycNET (draft)

Nombre de publications révisées par les pairs référencées dans PsycNET

Martinolli, Pascal. « Role-Playing Games : Basic Bibliometry with PsycNET (Draft) », février 2018. (accès et réutilisation libre : CC BY)

Une analyse bibliométrique simple sur le sujet des jeux de rôle dans les bases de données en psychologie de PsycNET.

Données complémentaires (csv data, références bibliographiques, code source,…)

Fouille de texte avec Calc et Excel: 1001 PJs dans la Tombe des Horreurs

Quelques calculs simples pour faire de la fouille de texte et des statistiques avec LibreOffice Calc et Microsoft Excel. Appliqués à 1001 PJs qui se sont aventurés dans l’infâme Tombe des Horreurs.

  • Si une valeur dans une colonne correspond à un ensemble de valeurs dans une autre colonnes alors écrire quelque chose.
  • Combien de valeurs d’une variable spécifique ?
  • Combien de valeurs pour une combinaison de plusieurs variables ?

Télécharger les exemples pour Calc ou Excel.

Attention: Les mauvaises utilisations d’Excel dans la recherche académique sont monnaie courante. Excel est facile d’utilisation mais il ne peut remplacer un vrai outil statistique pour de gros projets.

Illustration: extrait du module Tomb of Horrors, 2ème éd., peint par Erol Otus, 1981.
« Merci de ne pas glisser vos données dans la bouche du diable vert, ni dans l’arche brumeuse, svp. »

Analyser des milliers de PDFs et extraire leurs (méta)données vers un fichier tabulé

Via le site Car Library, j’ai trouvé ExifTool: un logiciel libre de Phil Harvey qui permet d’analyser des milliers de PDFs, d’en extraire des informations (générales et métadonnées) et ensuite de générer un fichier tabulé facilement traitable dans un tableur comme LibreOffice Calc ou MS Excel.

  1. Télécharger le logiciel
  2. Installer le logiciel (méthode en français ici)
    • Extraire le fichier exiftool(-k).exe du fichier zip
    • Renommer le fichier en exiftool.exe
    • Copier ce fichier dans c:/windows/
  3. Démarrer > Exécuter > taper cmd puis Entrée
  4. Copier-coller le code suivant:
    exiftool -csv -r -Encrypt -Info -Root -Linearized  -All -ext pdf -m -t c:\collection > rapport.csv

    • c:\collection contient les PDFs
    • rapport.csv est créé à la racine de votre user
    • Informations extraites : nom du fichier, nom du dossier, taille du fichier, nombre de pages, métadonnées
    • Je cherche toujours à savoir: native PDF ou scanned PDF; if scanned: OCR or not; if scanned: quality of scan; PDF/A (yes/no). Il existe le logiciel propriétaire PDF-Analyzer Pro 5.0 de Ingo Schmoekel qui permettrait d’extraire ces éléments mais je ne l’ai pas acheté.

Il est possible de faire cela pour d’autres types de fichiers (images,…).

Méthode envoyée à Harry. Il a appliqué ce programme à sa collection de 294 Go, analysé 18420 fichiers dans 2212 dossiers. Le processus a pris 3 heures et généré un fichier csv de 52 Mo.

Créer un graphe sur OD&D

2016-05-27 16-12-45

Voici quelques conseils pour créer votre propre graphe dont la mise en forme se fait automatiquement. Avec des logiciels libres. C’est l’équivalent de LaTeX pour les diagrammes en quelque sorte. Il suffit de modifier le codage en langage dot (très simple) et c’est le logiciel Graphviz qui s’occupe de positionner le tout au mieux.

L’exemple de codage a été fait autour de la création de OD&D.

  1. Installer:
    1. Graphviz (!site souvent très lent).
    2. Notepad++ (logiciel très pratique pour écrire du code)
  2. Paramétrer Windows pour Graphviz (modifier la variable d’environnement « path »)
    1. Démarrer > Panneau de configuration > Système et Sécurité (clic titre) > Système > Paramètres système avancés > Variables d’environnement.
    2. Sélectionner la variable/ligne « path » dans la liste des variables système. Cliquer Modifier. Ajouter à la fin de la ligne  ;C:\Program Files (x86)\Graphviz2-34\bin
      (NB: ne pas oublier le point-virgule du début)
  3. Paramétrer Notepad++
    1. Paramétrer le lancement de Graphviz depuis Notepad++
      1. Notepad++: Plugins (ou Compléments) > Plugins Manager > Show Plugin Manager : Search and install NppExec plugin
      2. Configurer le NppExex: Plugins > NppExex > Execute > saisir ce script dans la fenêtre (une seule ligne) :
        dot "$(FULL_CURRENT_PATH)" -Tpng -o "$(CURRENT_DIRECTORY)\$(NAME_PART).png"
        cela va lancer le programme dot et créer un PNG.
      3. On peut remplacer par Tpdf pour faire un PDF mais c’est moins robuste pour les graphes immenses.
      4. On peut utiliser l’option gdi+ pour faire le rendering car cairo (défaut) n’est pas robuste pour les graphes immenses:
        dot "$(FULL_CURRENT_PATH)"  -Tpng:gdiplus:gdiplus -o -v "$(CURRENT_DIRECTORY)\$(NAME_PART).png"
      5. Sauvegarder le script.
    2. Paramétrer le coloriage syntaxique dans Notepad++
      1. Télécharger le fichier graphviz-notepad-udl.xml.
      2. Notepad++: Language > Create User Define Language > Import : sélectionner le fichier xml précédent. Relancez Notepad++.
  4. Pratiquer la création de graphes :
    1. Télécharger le fichier exemple.gv
    2. Ouvrir le fichier exemple.gv avec Notepad++
    3. [Modifier le contenu]
    4. Plugins > NppExec > OK … un fichier PNG est créé. Voir le fichier exemple.png.

Sources: Steinweb, Grevian, TBallantyne. Lien pratique pour les couleurs.

Noms de revues et auteurs

Pour lister automatiquement tous les noms de revues et les noms des auteurs de votre bibliothèque Zotero. Les items sont répétés s’ils apparaissent plusieurs fois (bon pour repérer les auteurs influents ou les revues souvent citées). On créé des bibliographies à l’aide de 2 fichiers de styles CSL spécialement conçus pour cela :

 

  1. Installer les styles dans Zotero.
  2. Sélectionner toutes les références à traiter (seulement les articles pour le premier).
  3. Clic-droit : Créer une bibliographie à partir des documents.
  4. Sélectionner un des deux styles. Sélectionner Copier dans le presse-papier.
  5. Coller dans un éditeur de texte comme Notepad++.
    1. NB: pour les noms des auteurs, faire un multi-remplacement :
    2. Recherche : — Remplacer par : n (cocher Mode étendu). Remplacer tout.
    3. puis Ctrl+A (sélectionner tout) et Édition > Lignes > Trier les lignes dans l’ordre lexicographique croissant.

Méthode alternative pour avoir la liste des auteurs : installer le plugin Zutilo, sélectionner toutes les références, clic droit > Zutilo, Copier les créateurs dans le presse-papier. Coller.
NB: avec cette méthode, on ne peut voir combien de fois un auteur est mentionné. Car il n’apparaît qu’une fois, quelque soit le nombre de fois où il présent dans la bibliothèque Zotero.

Méthode alternative pour avoir la liste des revues : exporter votre bibliothèque au format *.csv, puis ouvrir ce fichier *.csv dans Calc ou Excel (assistant d’importation: délimité; séparateur: virgule; indicateur de texte: « ) puis supprimer toutes les colonnes sauf Publication Title. Trier la colonne Publication Title. Et voilà!