Archives par étiquette : R

Analyse quantitative de contenus 2.0

L’analyse quantitative de contenus connaît un renouvellement aussi récent que spectaculaire. Longtemps considéré par certains comme une technique mineure, la lexicométrie revient ainsi sur le devant de la scène. La numérisation automatique de nombreux textes comme les capacités de traitement ont donné une nouvelle jeunesse à ces pratiques désormais bien établies. Plusieurs initiatives démontrent cet intérêt renouvelé.

Une offre de logiciels en hausse

La première, c’est la multiplication des logiciels de lexicométrie. Car, bien qu’ancienne, l’étude quantitative des corpus textuels n’avait jamais complètement pris. Certes, dès les années 1950, le politiste Harold Lasswell la mettait en œuvre et inaugurait l’analyse quantifiée des contenus ; certes, elle avait connu des développement certains dans les années 1990 avec la diffusion de l’informatique, quand des modules avaient été développés pour les principaux logiciels statistiques et que des plateformes comme Prospero ou Alceste avaient été créées pour l’occasion ; certes, des revues publiaient des travaux qui mettaient en avant certains de ces travaux, comme c’est le cas de Mots. Mais ces méthodes n’ont jamais vraiment percé, en dépit des résultats intéressants qu’elles ont pu produire.

Outre une nouvelle version de Prospero en cours de développement chez les spécialistes de socio-informatique des controverses, trois nouveaux projets sont nés ces dernières années, qui offrent la possibilité de faire de l’analyse lexicométrique aisément. Deux sont des logiciels spécifiques : il s’agit d’Iramuteq, le logiciel développé depuis 2008 par Pierre Ratinaud, chercheur en sciences de l’éducation à Toulouse-2 et de TXM, le logiciel développé par une équipe de chercheurs de l’ENS-Lyon.

Des différences existent entre eux, du côté du codage initial (Iramuteq reprend le codage d’Alceste, un autre logiciel de traitement des données textuelles) comme de certaines fonctionnalités. Mais ils sont aussi assez proches. Par leur aspect ouvert et libre d’abord, ce qui n’était pas le cas de nombre de leurs prédécesseurs. L’un et l’autre s’appuient aussi sur le logiciel R, et permettent d’en exploiter les capacités sans en éprouver toutes les difficultés puisque des interfaces graphiques permettent de s’en servir sans programmer. Pour en savoir plus, les sites des logiciels fournissent des exemples et des tutoriels bien faits[1].

Le troisième projet, c’est RTemis (prononcer Artémis), le package R que viennent de créer Gilles Bastin et Milan Bouchet-Vallat, qui dispose lui aussi de son carnet sur Hypotheses. Dans l’esprit de ces promoteurs, RTemis (R Text Mining Solution) se veut être une plateforme gratuite, simple d’usage, dégagée des enjeux théoriques explicites qui gouvernent certains logiciels (Alceste repose sur la théorie des mondes lexicaux, Prospero sur une approche de sociologie des controverses). Il permet aussi une importation simple en acceptant différents formats (.txt, différents formats de texte délimité dont les .csv, mais aussi Alceste ou Twitter). Et il permet aussi une importation rapide depuis les grandes plateformes de référencement de textes médias (LexisNexis, Europresse, Factiva) – attention, plateformes payantes.

À partir de là, il propose toute une série de fonctions destinées à réaliser les différentes opérations standard de préparation du corpus (gestion de la casse, de la ponctuation, des « stopwords » et lemmatisation) ainsi que des outils pour traiter ces données. Je ne m’étends pas sur le sujet car un prochain billet illustrera les usages d’R.Temis, mais je recommande vivement la lecture de l’article de Bastin et Bouchet-Vallat, paru récemment dans le Bulletin de Méthodologie Sociologique. Les auteurs décrivent, statistiques à l’appui, le traitement de l’affaire Julian Assange par différentes agences de presse. Ce faisant, ils montrent en pratique les fonctionnalités du package.

 

Topic Modeling

Si les logiciels précédents améliorent des techniques désormais bien établies, d’autres approches en développement ouvrent elles de nouveaux horizons. C’est le cas du topic modeling, qui permet de déterminer automatiquement les thèmes contenus dans un ensemble de textes, afin d’en saisir leur répartition. La technique, développée depuis une dizaine d’année par David Blei, un informaticien de Princeton, suscite un intérêt croissant. Et ce jusque dans les sciences sociales : un numéro récent de Poetics, lui était justement consacré récemment. Coordonné par John Mohr, un sociologue intéressé de longue date aux formes de quantification en sociologie de la culture, il réunissait une dizaine de chercheurs, moitié sociologues, moitié informaticiens.

Comment fonctionne le topic modeling ? Sans rentrer dans les détails, on peut dire que la technique (qui dispose de modules prêts à l’emploi pour C, Python et R entre autres)

  1. Recherche les mots qui reviennent régulièrement ensemble dans un document
  2. Les rassemble dans un « thème », c’est-à-dire une série d’une dizaine de mots (deux mots peuvent appartenir à un thème). Le chercheur doit alors voir si le thème fait sens, et le cas échéant le nommer.
  3. Mesure la fréquence de chacun de ces thèmes dans chacun des documents du corpus.

 

Sur le plan technique, les résultats sont impressionnants et démontrent les capacités toujours croissantes du Machine Learning, cette branche de l’intelligence artificielle en plein développement. Mais y a t-il un intérêt pour les sciences sociales? Il me semble que les résultats des différents articles de Poetics font sens uniquement parce que les auteurs ont une connaissance du sujet qu’ils traitent, et savent donc sur la base d’une connaissance empirique précise ce qu’ils veulent dire, ou au moins comment sélectionner les informations pertinentes dans le maelström d’informations offertes par les programmes. C’est clairement le cas pour deux articles particulièrement intéressants du numéro : celui de P. DiMaggio et al. sur les discours relatifs aux musées (un sujet dont l’auteur est familier depuis plus de trente ans), ou pour l’article d’E. Marshall sur l’évolution croisée de la démographie en France et en Grande-Bretagne (à laquelle l’auteure vient de consacrer une thèse).

Reste à savoir si le topic modeling peut apporter autre chose qu’un vernis scientisé à des analyses qui seraient déjà plus ou moins établies par les chercheurs par des méthodes plus classiques ? Une présentation Gabriel Lewertowski et Nicolas Bourgeois lors du dernier colloque du SAMM (Statistique, Analyse, Modélisation Multidisciplinaire) semble montrer qu’au-delà de la pyrotechnie, le topic modeling peut effectivement servir la recherche.

À partir d’une étude du corpus du Monde Diplomatique, ils montraient bien l’utilité de ce genre d’analyses. Le graphique ci-dessous représente les résultats relatifs à un thème déterminé automatiquement, mais qui porte sans ambigüités sur le Moyen-Orient. À gauche, on trouve les mots qui constituent le topic (avec un score, qui permet de mesurer sa contribution au thème). A droite la répartition dans le temps. À partir de là, les utilisations sont nombreuses : on peut chercher à voir le rôle d’un auteur ; les variations de ligne éditoriale ; le type d’item consacré à ce thème (dossier, article, encadré, tribunes, etc.). Ou, pour une période donnée, on peut réaliser des mesures qui relient des thèmes à leurs auteurs, afin de saisir les vecteurs d’importation comme la division du travail au sein d’une rédaction. Bref, la sociologie du journalisme, celle de l’expertise et la sociologie des idées (pour ne citer que quelques sous-domaines) pourraient tirer profit du topic modeling, surtout que se développent des techniques qui permettent d’éprouver la significativité des résultats. Affaire à suivre donc !

 

SAMM-TM

 


[1] On trouve aussi de nombreux conseils sur le carnet Devenir historien-ne, de la plateforme Hypotheses.

étienne

Chercheur CNRS (SAGE-Université de Strasbourg). Données numériques, sociologie politique, épistémologie des sciences sociales.

More Posts

Des listes aux matrices (réseaux de mode 2)

La multiplication des informations disponibles en ligne a peut-être eu un effet relativement inattendu : le retour en grâce d’analyses de réseau bi-mode. Une partie significative de données disponibles en ligne facilement sont en effet des listes « d’individus » appartenant à des « groupes » (entreprises, commissions, conseil d’administration, films). Or c’est justement ce lien entre deux types d’entités que fait l’analyse bimode. C’est le cas de l’exemple bien connu des entreprises du CAC 40 et des membres de leurs conseils d’administration respectifs, représentés ci-dessous (voir ici pour la source).

CAC

Après une période faste[1], le two-mode (aussi connu sous le nom de réseau d’affiliation) a fait l’objet d’une attention plus distante de la part des spécialistes. La critique à son égard est bien connue : parce que les « liens » entre individus étaient des liens supposés plutôt qu’établis, le two-mode serait un mode pauvre. Peut-on, par exemple, inférer de la co-présence à un conseil d’administration un « lien » entre deux personnes. Et si on le fait, de quelle nature est-il et que peut-on en dire (au-delà de « c’est un – plus ou moins – petit monde ») ? Et les personnes sont-elles là pour les mêmes raisons ? Comment savoir si elles sont actives ou pas dans le groupe ? Si Bernard Arnault et Bernadette Chirac (Chodron de Courcel) siègent (au moins en théorie) ensemble au CA de LVMH, ont-il le même poids dans ses prises de décision ?

À la faveur de la disponibilité nouvelle de certaines sources et de l’intérêt croissant pour les méthodes quantitatives (et de réseau en particulier), le two-mode semble pourtant revenir en grâce. En témoignent me semble t-il  certains fort jolis dessins, et un numéro spécial de la revue phare du domaine, « Social Networks ». En témoignent aussi les nombreuses demandes que j’ai reçues depuis le début de l’année de faire de telles analyses, ou de mettre en forme des données. Je saisis donc l’occasion pour faire un rapide tutoriel pour transformer les listes en matrices, lisibles par différents logiciels.

Préparer les données

Une des difficultés de l’analyse de réseau se situe souvent en amont de l’analyse, dans la mise au format des données requises. Le plus souvent, les traitements demandent que celles-ci  soient présentées sous forme d’une matrice avec en ligne les entités de type A (par exemple les individus) et en colonne les entités de type B (par exemple les organisations). Dans les cellules, on a 0 ou 1 (ou un autre entier) selon que l’individu (en ligne) en question appartient à l’entité indiquée en colonne.

matrice

L’image ci-dessus est un exemple de ce à quoi on veut arriver.  À des fins d’illustration, on travaille ici partir d’un extrait de la base de données compilée en ce moment par les chercheur.e.s réunies autour de l’enquête SOMBRERO. Cette étude des manifestations et de leurs acteurs dans trois villes (Paris, Lille, Marseille, Rennes) cherche à voir les participations conjointes d’organisations (partis politiques, syndicats, associations) à des manifestations de rue. L’ensemble est saisi à partir d’archives et de sources de presse. En ligne (EVT), les manifestations (on leur a donné un chiffre). En colonne (value), le nom des organisations qui y participent.

Les manières de coder sont nombreuses, tout comme le sont les manières d’importer les données sous R. Mais certains logiciels (UCINET, très prisé par certain.e.s car simple et efficace) préfèrent les matrices (avec les individus en lignes, et les organisations en colonnes). Comment passer à cette matrice quand on a un autre format? Deux cas classiques peuvent être distingués.

Le cas des listes simples

Souvent, les données collectées sont présentées sous la forme de deux colonnes. L’une représente les entités de type A, l’autre représente les entités de type B. On les a recopiées (ou aspirées) depuis une source (un site web). Le format liste est pratique car il est souvent bien plus rapide que la création manuelle d’une matrice avec les individus et les organisations uniques.

Mais pour bien des logiciels, il faut repasser cette liste en matrice. Le passage d’une liste à une matrice (qui peut être pondérée) est assez simple. Si notre liste s’appelle ma_liste, alors ma_table est une matrice au format requis


#Crée une liste fictive, pour l'exemple
ma_liste<-as.data.frame(cbind(c("manif1", "manif1", "manif2", "manif3", "manif4", "manif4", "manif5"), c("orga1", "orga2", "orga3", "orga3", "orga1", "orga1", "orga3")))
colnames(ma_liste)<-c("MANIF", "ORGAS")

#Transforme cette liste en matrice
ma.table<-as.matrix(table(ma_liste))

On passe alors de l’image de gauche à celle de droite.La commande as.matrix permet juste de s’assurer que le format reconnu est bien une matrice, ce qui est souvent préférable en la circonstance.

list-table

 Listes multiples

Parfois, on se retrouve dans le cas où, pour des raisons de lisibilité, on a sur une même ligne l’entité A (par exemple les individus), puis toutes les personnes qui y participent. S’il est plus lisible au moment de la saisie, ce format n’est pas le plus maniable. Plusieurs solutions existent, on en propose une qui nous ramène au format liste simple évoqué ci-dessus.

Soit une série de manifestations et les organisations qui y participent.  Chaque ligne représente une manifestation unique (EVT) et les identifiants des organisations (IDORGA1, IDORGA2, ….jusqu’à 10 possibles ici).

head.sombrero

On a certes un tableau, mais ca ne ressemble pas vraiment à la matrice qu’on veut car chacune des colonnes ne renvoie pas à une organisation donnée, mais seulement à la première qui apparait comme présente à cette manifestation dans les sources.
Pour obtenir une représentation matricielle, il faut repasser cela en liste. On charge pour cela le package reshape, qui permet des manipulations de données aisées (1), puis on relie les différentes colonnes les unes sous les autres tout en conservant le numéro de l’événement (2). On supprime la colonne des identifiants orgas, qui ne sert plus à rien (3), et on n’oublie pas d’enlever les non-réponses (4).


(1) require(reshape)# l'installer si on ne l'a pas!
(2) base.sombrero <- melt(base.sombrero, c=”ID_MANIF”)
(3) base.sombrero <- base.sombrero [,-c(2)]
(4) base.sombrero <- base.sombrero [!is.na(base.sombrero),]

 

L’objet base.sombrero est prêt à être traité comme une liste simple, comme évoqué précédemment. Il ressemble d’ailleurs à la première liste représentée ci-dessus.

Voilà pour la transformation de listes en matrice. Pour la transformation à l’inverse, les mêmes procédures s’appliquent, mais dans l’autre sens. Comme c’est souvent le format matrice qui est attendu, on ne s’y attarde pas ici. Et comme les tutoriels pour apprendre à se servir des différents packages d’analyse de réseaux sont nombreux, je ne m’y attarde pas non plus (voir par exemple la documentation de igraph ou les bons conseils de L. Beauguitte sur le site du groupe FMR).

Pour avoir une idée de l’intérêt heuristique de la chose, voilà une représentation (bipartite donc) d’une partie de la base Marseille de l’équipe Sombrero (cliquer pour zoomer).

Pour plus d’informations sur cette enquête, Mathilde Pette (Clersé, Lille-1) et Julie Pagis (CERAPS/CNRS) présenteront les premiers résultats des traitements via l’analyse de réseaux lors de du colloque ‘Reconstruire des espaces militants dans une perspective comparée’ (programme en PDF ici) qui aura lieu a Lausanne les jeudi 27 et vendredi 28 mars.

Marseille - 2mode


[1] Voir par exemple R. Breiger (« The duality of persons and groups », Social Forces) 1974, qui affirmait que le two-mode était le meilleur site pour étudier la co-construction des individus et des structures sociales, et les nombreuses études d’interlock.

étienne

Chercheur CNRS (SAGE-Université de Strasbourg). Données numériques, sociologie politique, épistémologie des sciences sociales.

More Posts

La féminisation des revues de sociologie depuis 1960

Billet écrit par B. Coulmont, A. Hobeika et É. Ollion, et publié conjointement sur http://coulmont.com et http://data.hypotheses.org

Dans un récent article (PDF), West (un biologiste, pas la sociologue du genre) et ses collègues montraient à partir des articles de JSTOR que si le sex-ratio évolue sensiblement au cours des dernières décennies, l’égalité n’est pas encore de mise entre hommes et femmes dans les publications. Ils soulignaient en particulier que les hommes sont toujours sur-représentés dans des positions de prestige (premier et dernier auteur).

Qu’en est-il en France ? Partant d’une base des revues de sciences sociales françaises compilée par A. Hobeika et E. Ollion dans le cadre d’une recherche en cours sur l’histoire de la discipline par ses publications[1], on obtient une image de la sociologie dans le temps.

D’un point de vue global, au cours des années soixante aux années quatre-vingt-dix, la féminisation progresse, mais très lentement : 81% des auteurs sont des hommes dans les années 1960, ils ne sont plus que 71% dans les années 1990[2].

pie60s

pie90s

 

 

La féminisation est aussi très inégale suivant les revues. Certaines (Archives de sciences sociales des religions, Économie et statistique, Population) voient la part des auteures féminines augmenter substantiellement, alors que d’autres restent des bastions masculins (comme les Actes de la recherche en sciences sociales et la Revue française de sociologie)[3].

paletteRdYlBu

Déterminer le sexe des auteurs à partir de leurs prénoms ?

Pour établir le sexe des auteurs, nous nous sommes appuyés sur leur prénom, méthode utilisée par West (cité plus haut) ou par Carrasco pour retrouver le sexe des pacsés [Carrasco V., 2007. — « Le pacte civil de solidarité : une forme d’union qui se banalise ». Infostat justice, 97 pp. 1–4.]

Mais quand on cherche à inférer le sexe du prénom, plusieurs méthodes sont possibles.

La première consiste à faire ce codage manuellement : la familiarité avec la discipline permet de savoir que Claude Poliak n’a pas le même sexe que Claude Dargent, que Dominique Méda et Dominique Wolton non plus. Mais c’est très chronophage.

Parmi les techniques de codage automatique, deux autres sont possibles. On peut établir une liste de prénoms indiscutablement sexués (Baptiste, Yvette, Émile) à partir d’annuaires, et leur attribuer une valeur (M/F ou 0/1), laissant indéterminés les prénoms épicènes. Toutefois, si on dispose du fichier des prénoms (INSEE), une autre possibilité est d’associer à chaque prénom un score (de féminité, de masculinité) en fonction de son usage social : ainsi 99,95% des Catherine, au XXe siècle en France, ont été déclarées à la naissance comme étant du sexe féminin ; ce chiffre est de 0,08% pour les Simon. Les Dominique sont à 41% des filles, les Claude le sont à 12%, etc. Utiliser cette méthode revient donc à supposer que les prénoms des sociologues ont la même fréquence d’utilisation pour des hommes/femmes que dans la société française toute entière, ce qui semble raisonnable.

On a ici mené un test de ces méthodes, en recodant manuellement le sexe des auteurs pour une revue, la Revue Française de Sociologie. On compare les résultats à ceux des deux autres procédures. Pour la période 1960-1999, le nombre d’articles de cette revue dans notre base est de 1723. En excluant ceux pour lesquels aucun auteur n’est mentionné[4], on a in fine 1329 prénoms.

Les trois méthodes donnent sensiblement le même résultat, malgré des nombres de cas différents sur lesquels elles butent (« NA méthode » ci-dessous). Avec 17 prénoms non-détectés seulement (parfois répétés, d’où les 28 NA), le fichier des prénoms (INSEE) apparaît comme une solution à la fois commode et efficace pour un traitement automatisé tel que celui qu’on vient de faire[5].

Codage manuel Liste restreinte de prénoms Fichier des prénoms
Homme 79.08 78.64 78.67
Femme 20.92 21.35 21.33
Nb. individus 1329/1723 1063/1723 1301/1723
Infos manquantes 394 394 394
NA méthode 0 266 28

 

Des chiffres sur la situation dans la sociologie étasunienne, calculés avec des méthodes similaires, sont disponibles chez Neal Caren et chez Philip Cohen.

Et ci-dessous le graphique avec l’ensemble des revues de sociologies prises en compte dans l’analyse (cliquer pour agrandir).
All-BuYlRd


[1] Elle recense les publications dans les revues de sociologie française depuis les années 1960 (articles et symposiums, mais pas compte-rendus). La base est organisée par signatures : chaque ligne désigne un auteur et un article (par exemple, Bourdieu P. & Wacquant L. 1999 donne lieu à deux lignes dans la base : une pour chaque auteur).

[2] La base recense plus de 20 000 articles et comptes-rendus dans une vingtaine de journaux : Agora, Actes de la Recherche en Sciences Sociales, Archives de Sciences Sociales des Religions, Critique internationale, Déviance et société, Espace population et sociétés, économie et statistiques, Genèses, Pôle Sud, Politix, Population, Réseaux, la Revue Française de Sociologie, Sociétés contemporaines, Sociologie et santé, Tiers-Monde. Elle s’appuie largement sur les données du site Persée, complétées ponctuellement pour les revues qui en sont absentes.

[3] Dont B. Lahire disait récemment qu’elles étaient « les deux revues françaises de sociologie les plus académiques »).

[4] Soit il n’y en avait pas, soit on n’a pas réussi à le dissocier du nom dans les rares cas où les deux n’étaient pas clairement séparés. C’est une limite de ce traitement complètement automatisé, même si on a de bonnes raisons de penser que cela ne change rien aux résultats présentés ici.

[5] Si les prénoms sont à l’avenir plus épicènes, alors cette méthode pourrait s’avérer problématique. Elle l’est parfois entre pays, Jean Leca n’étant pas du même sexe que Jean Comaroff.

 

Et pourtant, ils mentent…

Âges déclarés et sites de rencontres : une procédure de collecte automatisée de données

S’il est un fait sur lequel s’accordent toutes les études sur les sites de rencontre, c’est la tendance de leurs utilisateurs à sous-déclarer leur âge. Il est souvent démontré en comparant les profils en ligne à une source d’information plus fiable, le plus souvent un entretien. On propose de retrouver ce résultat  à partir d’une analyse quantitative faite à distance, sans rencontrer d’usager de ces sites, et en quelques minutes. Disons le immédiatement, les résultats obtenus sont moins riches et plus incertains qu’une véritable enquête. Mais parce que l’objectif est d’illustrer les techniques de collecte automatique de données, on repart de ce fait bien établi pour proposer une méthode pas-à-pas.

Lire la suite sur Quanti

Mesurer l’espace télévisuel accordé à un sujet

Cet exemple condense trois des éléments qui sont développés dans ce blog : la présentation d’une base de données publique et son utilisation; des éléments de programmation, et des résultats de visualisation des données.

Les émissions de télévision, un matériau sous-exploité

Beaucoup de chercheurs en sciences sociales sont amenés à s’intéresser au traitement médiatique d’un sujet donné. Pour les sources, si les dépêches d’agence étaient autrefois privilégiées du fait de leur brièveté, c’est aujourd’hui vers la presse écrite qu’ils se tournent majoritairement. Il s’agit en effet d’une source commode d’accès : bien archivée, disponible de façon exhaustive en bibliothèques et de plus en plus directement sur internet et interrogeables par mots-clés (Factiva, par exemple).

Cependant, on pourrait contester cet usage privilégié :

  • le public touché est très restreint par rapport à celui de la télévision, et cet écart ne fait que s’accroître
  • méthodologiquement, le contenu textuel brut est long et malaisé à traiter. En particulier, il ne peut — sauf à recoder intégralement — distinguer les usages propres et figurés d’un mot (et donc faire la différence entre deux occurrences aussi différentes que “le danger des sectes” et “François Bayrou, chef de secte”, la première seulement étant intéressante pour nous)

Les contenus télévisuels sont paradoxalement très peu représentés dans les études quantitatives qui prennent les médias pour objet. Pour paraphraser Solow, on pourrait presque dire que la télévision est partout, sauf dans les statistiques des chercheurs en sciences sociales. Le problème principal est d’ordre technique : comment coder et synthétiser rapidement l’information sur les programmes télévisuels ?

Une source commode et fiable : la base de l’INA

Complétude

En France, l’existence et l’accessibilité des archives de l’Institut national de l’audiovisuel (INA) permettent fournir de pallier cette difficulté. Au titre du dépôt légal de l’audiovisuel français, l’INA conserve l’ensemble des programmes diffusés par les différentes chaines de télévision ou de radio. Le recensement opéré est ainsi a priori complet, et chaque document est déjà codé de manière relativement fiable, précise et complète, par mots-clefs et selon diverses informations (chaine de diffusion, durée, type d’émission…).

Fiabilité

Le codage est réalisé par le personnel au moment du dépôt des fichiers. Certes imparfait (les fiches sont remplies par des personnes différentes, sur une période de plus de quinze ans), il est cependant relativement efficace. Les recoupements ponctuels effectués sur la base des recensions faites par d’autres moyens montrent que le codage n’est pas arbitraire, et que la chronologie que l’on peut en tirer correspond assez bien à celle obtenue par d’autres moyens. De fait, tout sujet relativement institué, même s’il a des frontières floues, a de bonnes chances d’être bien représenté. C’est par contre moins vrai des « nouveaux » sujets : il faut sûrement attendre qu’un « problème public » soit reconnu comme tel pour qu’on puisse trouver une notice qui le mentionne). De manière générale, il est de bonne politique de chercher à « étendre » les mots clés, c’est-à-dire de faire des requêtes pour des termes proches (par exemple, pour secte : gourou, manipulation mentale, etc.), et de compiler tous les résultats obtenus.

Accessibilité

Si l’INA est une institution accueillante[1], il se trouve que depuis peu, une partie de sa base de données est accessible directement et gratuitement par internet. La période couverte commence au 1er janvier 1995, et la base recense les différents médias hertziens et câblés ainsi que les radios, au fur et à mesure de leur création. La recherche par mots-clefs permet donc une étude rapide et exhaustive sur un terme donné.

Un petit obstacle technique

Comment télécharger les résultats correspondant à une requête particulière, pour les traiter finement (nettoyages, tris croisés, représentations graphiques) ? Ceux-ci sont présentés sous la forme d’un tableau de texte, qui devrait être simple à utiliser, par un copier-coller dans un tableur par exemple.

Malheureusement, cela se révèle impossible, pour des raisons liées au fonctionnement du site[2]. Cependant, comme le navigateur affiche une forme régulière (tableau), il doit bien y avoir un moyen de récupérer les données affichées en gardant la régularité de cette forme.

On se propose de présenter ici une procédure simple qui permet de résoudre ce problème. Elle passe par le recours à quelques lignes de programmation, ici en R. On présente ici rapidement le code, qui est réutilisable tel quel. L’explication détaillée de tous les élélemnts de la syntaxe fera l’objet de prochains billets.

Une procédure de collecte automatisée des données

Faire une recherche sur le catalogue en ligne

Dans le cadre d’une recherche sur la question des sectes en France, on a tenté de trouver une manière de faire une étude exhaustive des émissions télévisuelles sur le sujet. Une fois connecté au catalogue en ligne, on saisit alors la requête que l’on souhaite effectuer dans un formulaire simple. Ici, on veut obtenir toutes les occurrences du terme « secte » ou « sectaire » (au singulier et au pluriel), du 1er janvier 1995 au 31 décembre 2010, sur les chaines hertziennes.

Formulaire de requête sur la base de l’Inathèque

On obtient environ 2500 résultats, qu’on veut conserver afin de les consulter ; on clique alors sur « Afficher tous les résultats ». Le navigateur affiche lentement l’ensemble de la page (plusieurs minutes parfois), et c’est cette page que l’on va manipuler pour ensuite pouvoir l’ouvrir avec un tableur classique ou un logiciel de statistiques. Notons pour l’instant l’adresse (URL) de cette page, qui est de la forme http://inatheque.ina.fr/Ina/ws/dltv/dlweb/general avec de nombreux signes cabalistiques après (si vous regardez bien, vous verrez les mots que vous avez demandé entre deux signes %).

Extraire les données de la page web

On va ensuite travailler avec R, à partir de cette URL, pour la traduire en un fichier lisible par un tableur (au format .csv : simple fichier texte où les données sont séparées par des points-virgules).

Installer R

Pour l’installation et les premiers usages de R, on se permet de renvoyer au site du programme. On suppose aussi que vous disposez d’un tableur (de type Excel ou, mieux, Libre Office). Pour faire fonctionner le programme, il faut en plus installer deux modules[3] spécifiques de R : RCurl et XML, qui permettent de télécharger la page web et d’en extraire les informations qui nous intéressent.

Charger la page et en extraire les informations

Un petit programme permettant de télécharger et traiter la page dont on a noté l’URL :

library(RCurl)
library(XML)

webpage <- getURL("http://inatheque.ina.fr/Ina/ws/dltv/dlweb/general/ResultSet?rpp=-50&upp=0&w=NATIVE%28%27ITOUSTEXT+ph+like+%27%27secte%27%27%2C%27%27sectes%27%27%2C%27%27sectaire%27%27%2C%27%27sectaires%27%27%27%29&r=1", .encoding="LATIN1")
page <- readLines(tc <- textConnection(webpage)); close(tc)
arbre.page <- htmlTreeParse(page, useInternalNodes = TRUE)

emissions <- xpathSApply(arbre.page,
                         "//div[contains(@class, 'result_line')]",
                         xmlValue)

emissions.clean <- gsub("\\t|\\n", "", emissions)
emissions.final <- gsub(" {20,180} ", ";", emissions.clean)

write.csv(emissions.final,
          file="/Users/eollion/SectesTV/INA-sectes.csv",
          fileEncoding='latin1')

Les deux premières lignes chargent les modules. L’opération de téléchargement de la page s’effectue ensuite (getURL), puis on analyse la structure de la page web chargée (on parse du HTML).

Le bloc suivant (xpathSapply) sélectionne ce qui correspond aux lignes du tableau affichées dans le navigateur. Elles sont identifiées d’une certaine manière dans le code HTML pour être affichées sous forme de lignes, et c’est ainsi qu’on peut les repérer ; ça paraît obscur, mais il y a des outils pour se repérer et écrire ce genre de commandes assez facilement. Voir chez François Guillem pour des bonnes premières explications sur ce point.

Ce qu’on a récupéré dans emissions ressemble presque à ce qu’un navigateur afficherait, sauf qu’ici les écarts de position sur la page sont représentés par des espaces. Il suffit de les remplacer par des points-virgules, et après un peu de nettoyage d’espaces, on a le notre tableau sous format .csv. Il ne reste plus qu’à l’écrire dans un fichier en sortie.

Voilà, normalement on peut ouvrir le fichier produit dans un tableur, et en principe tout va bien, y compris les accents (il se peut qu’Excel soit capricieux, on verra plus tard comment contourner ça). On peut alors faire un peu de nettoyage si nécessaire, et de recodage, par exemple les chaînes (rechercher « La Cinquième » et remplacer par « France 5 », etc.), ou pour mettre ensemble des « types » d’émissions proches.

Après constitution de la base, nettoyage et recodage de celle-ci, on en a conservé 1834 entre le 1er janvier 1995 et le 31 décembre 2010. La table est donc prête, on peut procéder à des représentations graphiques, ou des statistiques, et commencer les analyses sociologiques.

Les graphiques ci-dessous sont un exemple de visualisations possibles et rapides grâce à ggplot, moyennant quelques manipulations, que l’on abordera prochainement.

 

Représentation par chaine
Histogrammes

 


Représentation par type de programme et par chaine
Polygones de fréquence

 

Représentation par chaine

Nombre de programmes par jour
(période de 2 mois)

 


  1. De nombreux chercheurs ont d’ailleurs tiré profit des opportunités offertes par l’Inathèque. Située dans les locaux de la Bibliothèque nationale de France, elle met à disposition du public un ensemble important de ressources : les enregistrements comme les notices sont librement consultables, et un service d’aide à la recherche dans la base de données de l’INA est proposé.  ↩

  2. On peut imaginer que c’est volontaire, le résultat d’une stratégie visant à éviter le pillage des données par des robots.  ↩

  3. Packages et modules sont deux mots pour la même chose. Aller dans le menu « Installateur de Package », cliquer sur « Acquérir liste », rechercher ceux que vous souhaitez (ici RCurl et XML), puis installer.  ↩

étienne

Chercheur CNRS (SAGE-Université de Strasbourg). Données numériques, sociologie politique, épistémologie des sciences sociales.

More Posts