Archives par mot-clé : wikipédia

Comment j’ai fouillé dans des dizaines de milliers de notices Wikipédia

Pour réaliser le Top 50 des sites d’info les plus cités sur Wikipedia, j’ai utilisé une série d’outils dont je m’étais parfois déjà servi dans d’autres projets :

  • J’ai repéré des séries de notices intéressantes grâce à l’outil CatScan proposé par Wikipédia.
  • J’ai utilisé des techniques de data scraping pour parcourir automatiquement des milliers de notices avec l’extension Firefox Outwit Hub.
  • J’ai nettoyé les résultats obtenu grâce à Open Refine.
  • J’ai dressé les classements avec Google Sheets, le tableur de Google Drive.
  • J’ai réalisé les graphiques avec Datawrapper.
  • J’ai présenté les tableaux de façon interactive avec le plug-in JQuery Datatables.

Comme chacun de ces services peut vous intéresser, je reviens pas à pas dans cet article sur la méthode utilisée, en donnant des liens vers les fichiers de données obtenues.  N’hésitez pas à réutiliser ces dernières pour d’autres travaux, et tenez-moi au courant de vos trouvailles dans les commentaires.

A plusieurs reprises, j’ai fait des choix qui m’ont semblé cohérents avec l’objectif de ce projet. Que vous soyez wikipédien ou journaliste, vous aurez sans doute envie de les discuter, ce que je vous encourage fortement à faire, je suis là pour ça.

1. Bâtir un échantillon avec CatScan

La première difficulté, c’était de trouver une série de notices Wikipédia pertinentes.

J’ai d’abord pensé à programmer Outwit Hub pour en collecter de façon totalement aléatoires, en utilisant par exemple le lien « Explorer au hasard » de l’encyclopédie. Mais mon « robot » s’est vite perdu dans des fiches sans lien avec l’actualité ou dans diverses pages de listes.

J’ai alors découvert CatScan et je m’en suis servi pour obtenir les liens de notices figurant dans toute une série de catégories et sous-catégories. En partant la catégorie Evenement de Wikipédia, j’ai sélectionné les sous-catégories suivantes (elles-mêmes divisées en une multitude de sous-catégories :

  • Evénement en cours
  • Evénement à venir
  • Evénement récent
  • Journée commémorative ou thématique
  • Massacre
  • Evénement historique en météorologie
  • Salon
  • Marche
  • Controverse
  • Festival

CatScan m’a renvoyé une liste de 16741 notices (sur un total de plus de 1,6 million publiés sur la Wikipédia en français, soit environ 1%) sur des sujets très variés. La taille de cette liste m’a paru suffisante — au-delà, les différents logiciels dont je me suis servi n’aurait de toute façon pas pu fonctionner correctement.

2. Programmer un scraper avec Outwit Hub

Bien que l’interface de ce logiciel de scraping soit intimidante (euphémisme), Outwit Hub n’est pas si compliqué à utiliser, une fois qu’on a digéré les tutoriels de base. Il suffit d’identifier où se trouvent dans le code source les informations qu’on recherche et comment elles sont structurées en langage HTML.

En l’occurrence, les liens se trouvant dans les parties qui m’intéressaient (« Notes et références » et « Voir aussi » notamment) sont dans des balises liens (« a ») portant la classe CSS « external text ».

Capture d’écran 2014-09-10 à 19.16.20
Capture d’écran de Outwit Hub

Il suffit alors de créer un « extracteur »,en indiquant à Outwit Hub les chaînes de caractères se trouvant juste avant et juste après l’information ciblée.  Par exemple, pour l’URL externe :

<a class=« external text » href= »

et

« >

Pour extraire plusieurs informations à la fois (l’URL, mais aussi le nom de domaine et le texte du lien), j’ai cependant dû construire une expression régulière. Sans vous faire un cours complet sur ces trucs-là (ce dont je serais bien incapable), sachez qu’on les croise un peu partout (de Yahoo Pipes à Adobe Indesign en passant par les différents languages de programmation).

Pour un non-développeur, c’est un peu pénible à apprendre, mais ça rend bien des services, ça en vaut donc la peine.  Après avoir pas mal transpiré, j’ai fini par bâtir l’expression suivante (sûrement perfectible, d’ailleurs) :

/class=« external text ».*href= »(http://.*?)(/.*?) »>(.*?)</a>/

Outwit Hub était alors paré pour le moment le plus agréable du projet, celui où l’ordinateur travaille à votre place : il a suffit de lui demander de passer cet extracteur sur chaque page de l’échantillon, puis d’exporter tous les résultats obtenus dans un gros fichier CSV (20 Mo).

3. Nettoyer les résultats avec Open Refine

Quand vous souhaiter intervenir sur de gros fichiers de données, les fonctionnalités les plus courantes (comme Rechercher / Remplacer) ne suffisent pas.

C’est là qu’Open Refine (anciennement Google Refine) se révèle particulièrement utile, parce qu’il permet de faire via une interface graphique très bien fichue des manipulations de tables qui doivent se faire sinon via des lignes de commande.

Là encore, il faut accepter de se plonger dans les tutoriels et les pages d’aide pour apprendre à effectuer les opérations souhaitées, mais c’est du temps bien investi, croyez-moi.

Dans le cadre de ce projet, je me suis servi de Google Refine pour présenter proprement chaque donnée dont j’avais besoin :

  • l’URL de la notice Wikipédia « scrapée »
  • l’URL du lien externe repéré
  • le nom de domaine du lien externe repéré (par exemple, slate.fr)
  • le texte du lien (souvent le titre de l’article)

J’ai aussi réparti ces noms de domaines en deux catégories : « Actu » et « Autres » (pour tous les liens vers des sites annuaires, institutionnels, ou personnels).

C’était l’étape la plus fastidieuse : pour éviter d’y passer la journée et de faire planter Open Refine, je me suis limité aux médias cités au moins 30 fois dans l’échantillon.

Certains sites dans cette liste avaient un statut ambigu : j’ai conservé ceux proposant à la fois des articles et des statistiques ou pages de référence (par exemple, Allociné), et d’exclure les purs annuaires (comme IMDB).

J’ai aussi pratiqué quelques regroupements, pour les sites possédant plusieurs sous-domaines (par exemple, en fusionnant les liens vers www.lefigaro.fr et elections.lefigaro.fr en lefigaro.fr).

Si ça vous intéresse d’explorer vous aussi ces données, vous pouvez télécharger l’intégralité des liens de l’échantillon ou l’intégralité des liens vers des sites de médias dans des fichiers CSV désormais nettoyés.

4. Dresser les classements avec Google Sheets

On approche du but : en important le CSV contenant tous les liens vers des sites de médias dans une feuille de calcul Google Sheets, il ne reste plus qu’à créer un rapport de tableau croisé dynamique chargé de compter le nombre de liens pour chaque nom de domaine.

Cette information est également disponible dans Open Refine, mais j’avais besoin d’une présentation par cellules pour pouvoir en faire un graphique dans la foulée.

(Je n’ai jamais vraiment compris comment fonctionnaient vraiment ces rapports, et je suis bien embêté quand je dois expliquer leur fonctionnement lors de formations. Je me contente d’essayer diverses combinaisons de lignes, de colonnes et de valeurs pour obtenir le résultat souhaité, ce qui finit toujours par arriver à force d’essais.)

5. Faire le graphique avec Datawrapper

Je ne sais pas s’il est possible de tomber amoureux d’un logiciel ou d’un service web, mais si c’est le cas, je dois confier une passion sans doute excessive pour Datawrapper — selon moi, Mirko Lorenz, son programmeur,  a déjà sa place réservée au paradis des développeurs.

Un copié/collé des données de Google Sheets et quelques réglages dans une interface merveilleusement bien pensée, et zou, le graphique est prêt.

6. Un tableau filtrable avec Datatables

A ma connaissance, il existe peu d’outils accessibles pour présenter de longues séries de données proprement à l’intérieur d’un article. Le plug-in JQuery Datatables fait ça vraiment très bien, mais il faut être suffisamment à l’aise en HTML, en CSS et en JQuery pour s’en servir.

J’ai donc récupéré le flux Json du Google Sheet pour bâtir dynamiquement le tableau contenant les 23 014 liens vers des sites de médias, et activé Datatables une fois la table terminée.

7. Des échantillons sur des thématiques

Pour continuer à explorer l’encyclopédie, j’ai choisi des thèmes plus précis et repéré des catégories (et leurs sous-catégories) de notices portant sur le sport, la politique, la Bretagne et la BD.

J’ai fait subir le traitement décrit ci-dessus aux liens externes ainsi repérés (ça va beaucoup plus vite la deuxième fois).

Voici les données récupérées, également dispos dans Google Sheet :

 

Le top 50 des sites d’info les plus cités sur Wikipédia

« Wikipedian protester », strip de XKCD (CC-BY-NC)

Les médias français et la version francophone de Wikipédia entretiennent une relation compliquée.  La fiabilité de l’encyclopédie collaborative a longtemps été mise en doute par des chroniqueurs et éditorialiste, mal à l’aise face à l’absence de « comité éditorial » ou d’instance dirigeante bien identifiée.

Certains journalistes n’hésitent pas à « vandaliser » des notices pour mieux appuyer leur démonstration, comme pour un reportage d’Envoyé spécial diffusé en novembre 2012 et qui avait hérissé le poil des Wikipédiens ou pour le livre La Révolution Wikipédia, publié sous la direction du chroniqueur littéraire Pierre Assouline en 2007.

Pourtant, les journalistes utilisent quotidiennement Wikipédia pour leurs recherches d’information, même s’ils en connaissent souvent mal le fonctionnement et le complexe système d’autorégulation. En formation, j’ai souvent dû prendre le temps de faire l’anatomie d’une notice, de la liste de sources en bas d’article à l’onglet « Discussion », en passant par la comparaison des différentes versions.

La « référence nécessaire », règle d’or de l’encyclopédie

Et les Wikipédiens eux-mêmes se servent largement des sites d’information pour sourcer le contenu de leurs notices. Les rédacteurs doivent en effet respecter une règle fondamentale : l’absence de travaux inédits dans le texte des notices. Tout savoir qui y est référencé doit s’appuyer sur une source existante, qu’il s’agisse d’un livre, d’une page officielle ou, bien souvent, d’un article de presse.

Un porte-clés Wikipédia (Cary Bass-Deschenes/CC-BY-SA)

C’est pour cette raison qu’on croise régulièrement la mention « (Réf. nécessaire) » [et non « citation nécessaire, merci Gilles, ndlr] dans le contenu d’une page, signe qu’un contributeur vigilant a édité la page pour signaler que l’information mentionnée n’était pas correctement sourcée.

En 2012, l’écrivain américain Philip Roth a pu mesurer toute l’intransigeance de cette règle quand il a tenté de modifier la notice d’un de ses romans, correction refusée par un administrateur de la Wikipédia anglophone. Un épisode qu’il a raconté dans le New Yorker.

L’existence d’un nombre d’articles suffisant traitant d’une personnalité ou d’un phénomène étant d’ailleurs un critère important pour juger de la « recevabilité » d’un nouvel article  — ce qui avait amusé Daniel Schneidermann lors d’une une émission d’Arrêt sur images sur ce sujet sensible.

Mais quelles sont leurs sources privilégiées ? J’ai mené une petite enquête en me basant sur un échantillon de plus de 16 500 fiches contenant en tout plus de 100 000 liens externes. Je reviens pas à pas sur la méthode utilisée dans un autre article de ce site, où je liste aussi l’ensemble des données utilisées — sachez juste que mon ordinateur a beaucoup ressemblé à ça ces dernières heures :

Voilà donc le top 50 des sites d’actu dont le contenu est le plus souvent cité en référence dans Wikipédia :

 

Si au lieu d’un échantillon « généraliste » de fiches, on se cantonne à des sélections resserrées, on peut voir comment cette liste de médias de référence évolue thème par thème — n’hésitez pas à me contacter ou à laisser un commentaire si vous souhaitez que j’explore d’autres thématiques.

Enfin, si vous êtes journaliste, vous avez peut-être envie de savoir quels contenus de votre média ou de son concurrent font désormais référence, peut-être pour l’éternité — c’est quand même plus chic que d’être cité dans un tweet de Nadine Morano, non ?

Vous pouvez chercher votre média et les notices dans lequel il est cité dans la liste complète des liens de l’échantillon « généraliste », soit 1% du total des fiches publiées sur Wikipédia. Si le tableau ne se charge pas, vous pouvez retrouver la liste complète dans cette Google Sheet.

Si vous trouvez des erreurs ou des bizarreries, contactez-moi ou laissez un commentaire que je puisse jeter un œil à vos trouvailles.