Archives par mot-clé : wikipédia

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

Pour réa­li­ser le Top 50 des sites d’info les plus cités sur Wiki­pe­dia, j’ai uti­li­sé une série d’outils dont je m’étais par­fois déjà ser­vi dans d’autres pro­jets :

  • J’ai repé­ré des séries de notices inté­res­santes grâce à l’outil CatS­can pro­po­sé par Wiki­pé­dia.
  • J’ai uti­li­sé des tech­niques de data scra­ping pour par­cou­rir auto­ma­ti­que­ment des mil­liers de notices avec l’extension Fire­fox Out­wit Hub.
  • J’ai net­toyé les résul­tats obte­nu grâce à Open Refine.
  • J’ai dres­sé les clas­se­ments avec Google Sheets, le tableur de Google Drive.
  • J’ai réa­li­sé les gra­phiques avec Data­wrap­per.
  • J’ai pré­sen­té les tableaux de façon inter­ac­tive avec le plug-in JQue­ry Data­tables.

Comme cha­cun de ces ser­vices peut vous inté­res­ser, je reviens pas à pas dans cet article sur la méthode uti­li­sée, en don­nant des liens vers les fichiers de don­nées obte­nues.  N’hésitez pas à réuti­li­ser ces der­nières pour d’autres tra­vaux, et tenez-moi au cou­rant de vos trou­vailles dans les com­men­taires.

A plu­sieurs reprises, j’ai fait des choix qui m’ont sem­blé cohé­rents avec l’objectif de ce pro­jet. Que vous soyez wiki­pé­dien ou jour­na­liste, vous aurez sans doute envie de les dis­cu­ter, ce que je vous encou­rage for­te­ment à faire, je suis là pour ça.

1. Bâtir un échantillon avec CatScan

La pre­mière dif­fi­cul­té, c’était de trou­ver une série de notices Wiki­pé­dia per­ti­nentes.

J’ai d’abord pen­sé à pro­gram­mer Out­wit Hub pour en col­lec­ter de façon tota­le­ment aléa­toires, en uti­li­sant par exemple le lien « Explo­rer au hasard » de l’encyclopédie. Mais mon « robot » s’est vite per­du dans des fiches sans lien avec l’actualité ou dans diverses pages de listes.

J’ai alors décou­vert CatS­can et je m’en suis ser­vi pour obte­nir les liens de notices figu­rant dans toute une série de caté­go­ries et sous-caté­go­ries. En par­tant la caté­go­rie Eve­ne­ment de Wiki­pé­dia, j’ai sélec­tion­né les sous-caté­go­ries sui­vantes (elles-mêmes divi­sées en une mul­ti­tude de sous-caté­go­ries :

  • Evé­ne­ment en cours
  • Evé­ne­ment à venir
  • Evé­ne­ment récent
  • Jour­née com­mé­mo­ra­tive ou thé­ma­tique
  • Mas­sacre
  • Evé­ne­ment his­to­rique en météo­ro­lo­gie
  • Salon
  • Marche
  • Contro­verse
  • Fes­ti­val

CatS­can m’a ren­voyé une liste de 16741 notices (sur un total de plus de 1,6 mil­lion publiés sur la Wiki­pé­dia en fran­çais, soit envi­ron 1%) sur des sujets très variés. La taille de cette liste m’a paru suf­fi­sante – au-delà, les dif­fé­rents logi­ciels dont je me suis ser­vi n’aurait de toute façon pas pu fonc­tion­ner cor­rec­te­ment.

2. Programmer un scraper avec Outwit Hub

Bien que l’interface de ce logi­ciel de scra­ping soit inti­mi­dante (euphé­misme), Out­wit Hub n’est pas si com­pli­qué à uti­li­ser, une fois qu’on a digé­ré les tuto­riels de base. Il suf­fit d’identifier où se trouvent dans le code source les infor­ma­tions qu’on recherche et com­ment elles sont struc­tu­rées en lan­gage HTML.

En l’occurrence, les liens se trou­vant dans les par­ties qui m’intéressaient («Notes et réfé­rences » et « Voir aus­si » notam­ment) sont dans des balises liens («a») por­tant la classe CSS « exter­nal text ».

Capture d’écran 2014-09-10 à 19.16.20
Cap­ture d’écran de Out­wit Hub

Il suf­fit alors de créer un « extrac­teur »,en indi­quant à Out­wit Hub les chaînes de carac­tères se trou­vant juste avant et juste après l’information ciblée.  Par exemple, pour l’URL externe :

<a class="external text" href="

et

">

Pour extraire plu­sieurs infor­ma­tions à la fois (l’URL, mais aus­si le nom de domaine et le texte du lien), j’ai cepen­dant dû construire une expres­sion régu­lière. Sans vous faire un cours com­plet sur ces trucs-là (ce dont je serais bien inca­pable), sachez qu’on les croise un peu par­tout (de Yahoo Pipes à Adobe Inde­si­gn en pas­sant par les dif­fé­rents lan­guages de pro­gram­ma­tion).

Pour un non-déve­lop­peur, c’est un peu pénible à apprendre, mais ça rend bien des ser­vices, ça en vaut donc la peine.  Après avoir pas mal trans­pi­ré, j’ai fini par bâtir l’expression sui­vante (sûre­ment per­fec­tible, d’ailleurs) :

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

Out­wit Hub était alors paré pour le moment le plus agréable du pro­jet, celui où l’ordinateur tra­vaille à votre place : il a suf­fit de lui deman­der de pas­ser cet extrac­teur sur chaque page de l’échantillon, puis d’exporter tous les résul­tats obte­nus dans un gros fichier CSV (20 Mo).

3. Nettoyer les résultats avec Open Refine

Quand vous sou­hai­ter inter­ve­nir sur de gros fichiers de don­nées, les fonc­tion­na­li­tés les plus cou­rantes (comme Recher­cher / Rem­pla­cer) ne suf­fisent pas.

C’est là qu’Open Refine (ancien­ne­ment Google Refine) se révèle par­ti­cu­liè­re­ment utile, parce qu’il per­met de faire via une inter­face gra­phique très bien fichue des mani­pu­la­tions de tables qui doivent se faire sinon via des lignes de com­mande.

Là encore, il faut accep­ter de se plon­ger dans les tuto­riels et les pages d’aide pour apprendre à effec­tuer les opé­ra­tions sou­hai­tées, mais c’est du temps bien inves­ti, croyez-moi.

Dans le cadre de ce pro­jet, je me suis ser­vi de Google Refine pour pré­sen­ter pro­pre­ment chaque don­née dont j’avais besoin :

  • l’URL de la notice Wiki­pé­dia « scra­pé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 (sou­vent le titre de l’article)

J’ai aus­si répar­ti ces noms de domaines en deux caté­go­ries : « Actu » et « Autres » (pour tous les liens vers des sites annuaires, ins­ti­tu­tion­nels, ou per­son­nels).

C’était l’étape la plus fas­ti­dieuse : pour évi­ter d’y pas­ser la jour­née et de faire plan­ter Open Refine, je me suis limi­té aux médias cités au moins 30 fois dans l’échantillon.

Cer­tains sites dans cette liste avaient un sta­tut ambi­gu : j’ai conser­vé ceux pro­po­sant à la fois des articles et des sta­tis­tiques ou pages de réfé­rence (par exemple, Allo­ci­né), et d’exclure les purs annuaires (comme IMDB).

J’ai aus­si pra­ti­qué quelques regrou­pe­ments, pour les sites pos­sé­dant plu­sieurs sous-domaines (par exemple, en fusion­nant les liens vers www.lefigaro.fr et elections.lefigaro.fr en lefigaro.fr).

Si ça vous inté­resse d’explorer vous aus­si ces don­nées, vous pou­vez télé­char­ger 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ésor­mais net­toyés.

4. Dresser les classements avec Google Sheets

On approche du but : en impor­tant le CSV conte­nant tous les liens vers des sites de médias dans une feuille de cal­cul Google Sheets, il ne reste plus qu’à créer un rap­port de tableau croi­sé dyna­mique char­gé de comp­ter le nombre de liens pour chaque nom de domaine.

Cette infor­ma­tion est éga­le­ment dis­po­nible dans Open Refine, mais j’avais besoin d’une pré­sen­ta­tion par cel­lules pour pou­voir en faire un gra­phique dans la fou­lée.

(Je n’ai jamais vrai­ment com­pris com­ment fonc­tion­naient vrai­ment ces rap­ports, et je suis bien embê­té quand je dois expli­quer leur fonc­tion­ne­ment lors de for­ma­tions. Je me contente d’essayer diverses com­bi­nai­sons de lignes, de colonnes et de valeurs pour obte­nir le résul­tat sou­hai­té, ce qui finit tou­jours par arri­ver à force d’essais.)

5. Faire le graphique avec Datawrapper

Je ne sais pas s’il est pos­sible de tom­ber amou­reux d’un logi­ciel ou d’un ser­vice web, mais si c’est le cas, je dois confier une pas­sion sans doute exces­sive pour Data­wrap­per – selon moi, Mir­ko Lorenz, son pro­gram­meur,  a déjà sa place réser­vée au para­dis des déve­lop­peurs.

Un copié/collé des don­nées de Google Sheets et quelques réglages dans une inter­face mer­veilleu­se­ment bien pen­sée, et zou, le gra­phique est prêt.

6. Un tableau filtrable avec Datatables

A ma connais­sance, il existe peu d’outils acces­sibles pour pré­sen­ter de longues séries de don­nées pro­pre­ment à l’intérieur d’un article. Le plug-in JQue­ry Data­tables fait ça vrai­ment très bien, mais il faut être suf­fi­sam­ment à l’aise en HTML, en CSS et en JQue­ry pour s’en ser­vir.

J’ai donc récu­pé­ré le flux Json du Google Sheet pour bâtir dyna­mi­que­ment le tableau conte­nant les 23 014 liens vers des sites de médias, et acti­vé Data­tables une fois la table ter­mi­née.

7. Des échantillons sur des thématiques

Pour conti­nuer à explo­rer l’encyclopédie, j’ai choi­si des thèmes plus pré­cis et repé­ré des caté­go­ries (et leurs sous-caté­go­ries) de notices por­tant sur le sport, la poli­tique, la Bre­tagne et la BD.

J’ai fait subir le trai­te­ment décrit ci-des­sus aux liens externes ain­si repé­rés (ça va beau­coup plus vite la deuxième fois).

Voi­ci les don­nées récu­pé­rées, éga­le­ment dis­pos dans Google Sheet :

 

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

« Wiki­pe­dian pro­tes­ter », strip de XKCD (CC-BY-NC)

Les médias fran­çais et la ver­sion fran­co­phone de Wiki­pé­dia entre­tiennent une rela­tion com­pli­quée.  La fia­bi­li­té de l’encyclopédie col­la­bo­ra­tive a long­temps été mise en doute par des chro­ni­queurs et édi­to­ria­liste, mal à l’aise face à l’absence de « comi­té édi­to­rial » ou d’instance diri­geante bien iden­ti­fiée.

Cer­tains jour­na­listes n’hésitent pas à « van­da­li­ser » des notices pour mieux appuyer leur démons­tra­tion, comme pour un repor­tage d’Envoyé spé­cial dif­fu­sé en novembre 2012 et qui avait héris­sé le poil des Wiki­pé­diens ou pour le livre La Révo­lu­tion Wiki­pé­dia, publié sous la direc­tion du chro­ni­queur lit­té­raire Pierre Assou­line en 2007.

Pour­tant, les jour­na­listes uti­lisent quo­ti­dien­ne­ment Wiki­pé­dia pour leurs recherches d’information, même s’ils en connaissent sou­vent mal le fonc­tion­ne­ment et le com­plexe sys­tème d’autorégulation. En for­ma­tion, j’ai sou­vent dû prendre le temps de faire l’anatomie d’une notice, de la liste de sources en bas d’article à l’onglet « Dis­cus­sion », en pas­sant par la com­pa­rai­son des dif­fé­rentes ver­sions.

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

Et les Wiki­pé­diens eux-mêmes se servent lar­ge­ment des sites d’information pour sour­cer le conte­nu de leurs notices. Les rédac­teurs doivent en effet res­pec­ter une règle fon­da­men­tale : l’absence de tra­vaux inédits dans le texte des notices. Tout savoir qui y est réfé­ren­cé doit s’appuyer sur une source exis­tante, qu’il s’agisse d’un livre, d’une page offi­cielle ou, bien sou­vent, d’un article de presse.

Un porte-clés Wiki­pé­dia (Cary Bass-Des­che­nes/CC-BY-SA)

C’est pour cette rai­son qu’on croise régu­liè­re­ment la men­tion «(Réf. néces­saire)» [et non « cita­tion néces­saire, mer­ci Gilles, ndlr] dans le conte­nu d’une page, signe qu’un contri­bu­teur vigi­lant a édi­té la page pour signa­ler que l’information men­tion­née n’était pas cor­rec­te­ment sour­cée.

En 2012, l’écrivain amé­ri­cain Phi­lip Roth a pu mesu­rer toute l’intransigeance de cette règle quand il a ten­té de modi­fier la notice d’un de ses romans, cor­rec­tion refu­sée par un admi­nis­tra­teur de la Wiki­pé­dia anglo­phone. Un épi­sode qu’il a racon­té dans le New Yor­ker.

L’existence d’un nombre d’articles suf­fi­sant trai­tant d’une per­son­na­li­té ou d’un phé­no­mène étant d’ailleurs un cri­tère impor­tant pour juger de la « rece­va­bi­li­té » d’un nou­vel article  – ce qui avait amu­sé Daniel Schnei­der­mann lors d’une une émis­sion d’Arrêt sur images sur ce sujet sen­sible.

Mais quelles sont leurs sources pri­vi­lé­giées ? J’ai mené une petite enquête en me basant sur un échan­tillon de plus de 16 500 fiches conte­nant en tout plus de 100 000 liens externes. Je reviens pas à pas sur la méthode uti­li­sée dans un autre article de ce site, où je liste aus­si l’ensemble des don­nées uti­li­sées – sachez juste que mon ordi­na­teur a beau­coup res­sem­blé à ça ces der­nières heures :

Voi­là donc le top 50 des sites d’actu dont le conte­nu est le plus sou­vent cité en réfé­rence dans Wiki­pé­dia :

Si au lieu d’un échan­tillon « géné­ra­liste » de fiches, on se can­tonne à des sélec­tions res­ser­rées, on peut voir com­ment cette liste de médias de réfé­rence évo­lue thème par thème – n’hésitez pas à me contac­ter ou à lais­ser un com­men­taire si vous sou­hai­tez que j’explore d’autres thé­ma­tiques.

Enfin, si vous êtes jour­na­liste, vous avez peut-être envie de savoir quels conte­nus de votre média ou de son concur­rent font désor­mais réfé­rence, peut-être pour l’éternité – c’est quand même plus chic que d’être cité dans un tweet de Nadine Mora­no, non ?

Vous pou­vez cher­cher votre média et les notices dans lequel il est cité dans la liste com­plète des liens de l’échantillon « géné­ra­liste », soit 1% du total des fiches publiées sur Wiki­pé­dia. Si le tableau ne se charge pas, vous pou­vez retrou­ver la liste com­plète dans cette Google Sheet.

Si vous trou­vez des erreurs ou des bizar­re­ries, contac­tez-moi ou lais­sez un com­men­taire que je puisse jeter un œil à vos trou­vailles.