Git Product home page Git Product logo

jhroy / cdj_instagram Goto Github PK

View Code? Open in Web Editor NEW
0.0 2.0 0.0 5.62 MB

Répertoire contenant le code et les données ayant servi à la production d'un article pour Les Cahiers du journalisme, (revue évaluée par les pairs).

License: GNU General Public License v3.0

Python 19.66% Jupyter Notebook 80.34%
instagram journalism journalisme francophone canada quebec france suisse switzerland belgique

cdj_instagram's Introduction

Instagram: la «une» de l'ère mobile

Mosaïque de quelques-unes des images partagées par des médias francophones dans Instagram au cours de la deuxième décennie de ce siècle

Ce répertoire décrit avec plus de détails la méthodologie (avec fichiers et code) utilisée pour un article publié dans Les Cahiers du journalisme en 2021. Il s'agit d'une revue scientifique, avec comité de lecture. Les articles des Cahiers sont revus par les pairs. L'article que j'y ai publié s'insère dans un numéro spécial consacré au journalisme mobile, codirigé par Nathalie Pignard-Cheynel, Pascal Ricaud et Lara Van Dievoet. Il consiste en une analyse descriptive exploratoire des dix premières années d'utilisation d'Instagram par les médias francophones.

Étape 1 - Collecte de données dans CrowdTangle

La première étape de la collecte de données à consisté à recueillir toutes les publications Instagram de 32 médias représentant un échantillon représentatif des principaux médias de l'espace francophone (France, Canada, Belgique, Suisse, Liban). Pour ce faire, j'ai utilisé CrowdTangle, un outil de détection de contenu viral fourni par Facebook, à qui appartient Instagram. Il permet d'extraire des données historiques. Ainsi, toutes les publications Instagram de chacun des médias, dès lors qu'ils se sont mis à publier sur cette plateforme, si ces publications sont contenues dans CrowdTangle, ont été recueillies. La récolte a été effectuée début septembre 2020.

Le fichier mediasfrancoinstagram-public.csv regroupe ainsi 82 908 publications mises en ligne dans Instagram par 32 médias francophones entre le 26 mai 2011 (plus ancienne publication de notre échantillon) et le 31 août 2020. Les champs textuels description et image_text ont été retranchés afin de respecter la propriété intellectuelle des médias concernés. Un fichier complet pourra néanmoins être transmis à tout.e chercheur.euse qui le souhaiterait (contactez-moi par courriel). Ce fichier complet pourra permettre plus aisément à un.e chercheur.euse de reproduire les étapes ultérieures. Mais toute personne qui a accès à CrowdTangle pourrait puiser les publications Instagram des 32 médias francophones de notre échantillon et se créer son propre fichier, moyennant quelques heures de travail.

Le tableau ci-dessous présente la liste des médias examinés dans cette étude avec quelques métadonnées sur leurs publications.

Compte Instagram Pays Abonnés (au 31 août 2020) Nombre de publications (2011-2020) Somme des « J’aime » Somme des commentaires Somme des vues
FRANCE 24 France 1 346 479 6 045 4 360 312 100 563 18 286 023
Le Monde France 1 242 888 7 486 14 536 874 178 858 605 326
Radio France Internationale France 476 873 3 247 852 173 17 509 1 895 300
Le Figaro 🗞 France 439 673 4 834 4 818 443 96 956 2 298 006
Mediapart France 364 438 1 828 2 249 459 66 421 986 458
franceinfo France 342 512 2 573 1 694 917 36 465 7 332 685
BFMTV France 329 388 1 113 940 386 32 936 9 213 586
Libération France 300 364 2 896 2 575 117 41 349 1 577 385
RTL France 162 655 4 516 862 823 27 351 703 952
Radio-Canada Information Canada 153 190 6 199 1 253 095 36 502 7 962 640
La Presse Canada 138 544 3 705 688 150 14 737 96 463
TF1 Le JT France 127 721 1 083 598 876 12 599 5 819 446
La Voix du Nord France 122 275 3 385 1 270 199 18 814 514 416
TVA Nouvelles Canada 115 305 566 276 348 13 068 2 568 677
Ouest-France France 111 342 1 545 1 045 061 13 589 181 895
Le Devoir Canada 81 356 4 944 992 823 21 905 368 407
RTL info Belgique 72 868 1 854 730 283 23 380 1 365 645
LCI France 65 922 1 497 308 374 9 675 6 241 371
SudOuest France 65 566 727 418 714 6 524 49 258
Le Journal de Montréal Canada 65 011 632 99 042 4 070 157 544
RTBF Belgique 62 720 1 032 277 775 7 983 676 828
RTS - Radio Télévision Suisse Suisse 57 159 590 175 038 4 222 1 295 162
L'Orient-Le Jour 🗞 Liban 45 753 3 546 979 964 20 008 1 256 818
Le Soir Belgique 42 903 4 229 600 543 12 462 511 872
Le Temps Suisse 42 249 2 040 301 749 5 037 10 945
Tribune de Genève Suisse 31 110 1 858 287 051 5 746 270 169
Le Dauphiné Libéré France 27 540 810 111 297 2 025 60 967
24heures Suisse 26 167 1 537 131 546 3 607 132 621
Le Monde Afrique France 17 610 369 32 563 588 222
LaLibre.be Belgique 16 805 2 024 102 789 2 224 164 665
Le Matin Suisse 14 813 701 46 880 1 138 1 273
Le Soleil de Québec Canada 13 772 3 491 597 313 18 196 20 447
6 522 971 82 902 44 215 977 856 507 72 626 472

Étape 2 - Emojis, hashtags, mots et n-grams

Une fois ce corpus constitué, le script instanalyse.py prend les champs textuels de chaque publication et crée cinq fichiers CSV, un pour regrouper tous les emojis contenus dans notre corpus, un autre pour les mots-clics, et les trois dernier (après lemmatisation) pour les mots seuls, les bigrammes (paires de mots) et les trigrammes:

Ces fichiers contiennent aussi, pour chaque élément lexical, la somme des interactions de la publication dans laquelle ils se retrouvent afin de faire une pondération de leur utilisation au lieu d'une simple somme de leurs occurrences.

Je ne partage que les deux premiers, car les trois derniers sont trop gros pour être téléversés dans github... et pour être traités dans LibreOffice!

Avec les fichiers d'emojis et de mots-clics, il est donc possible de faire un tableau croisé et de calculer les interactions moyennes pour reproduire les figures publiées dans l'article. Voici l'exemple de la Figure 4 des 20 emojis ayant suscité le plus d’interactions par publication de notre corpus de médias francophones et se retrouvant dans 100 publications ou plus.

Les 20 emojis ayant suscité le plus d’interactions par publication

Les fichiers des mots seuls, des bigrammes et des trigrammes ont dû être traités à l'aide de pandas, car ils comptent respectivement 3,2 millions, 3,1 millions et 3,0 millions de lignes chacun. Le carnet jupyter instableaux.ipynb montre qu'un tableau croisé a été effectué dans chacun pour calculer le nombre d'occurrences de chaque mot, bigramme et trigramme, et pour les pondérer avec le nombre d'interactions des publications dans lesquelles ils ont été utilisés.

Étape 3 - Analyse TF/IDF

Afin de repérer les termes qui se sont démarqués dans le temps parmi les publications Instagram des 32 médias francophones sélectionnés, deux analyses TF/IDF ont été effectuées.

La première tâchait de voir quels mots étaient caractéristiques des publications de chaque média; la seconde faisait la même chose, mais par mois (quels mots étaient caractéristiques de ce mois-là par rapport à l'ensemble du corpus).

Pour chaque analyse, il s'agissait de créer des fichiers .txt contenant le texte de toutes les publications pour un média ou pour un mois donné. Dans le cas de l'analyse par mois, cette opération a été effectuée par le script insta-parMois.py. Ce script créait 106 fichiers .txt (un pour chacun des mois contenant des publications Instagram au cours de la période étudiée mai 2011 à août 2020). Tous les fichiers n'ont pas été reproduits ici, à part un seul (2020-08.txt qui couvre le dernier mois du corpus) fourni en guise d'exemple.

Les deux analyses TF/IDF proprement dites ont ensuite été effectuées dans un carnet jupyter tfidf.ipynb qui, de son côté, produisait 32 fichiers CSV pour l'analyse par média (un par média) et 106 fichiers CSV pour l'analyse par mois (un par mois). Chacun de ces fichiers contient tous les mots du corpus avec, pour chacun, un score correspondant à son degré de spécificité pour le média ou pour le mois donné. Plus ce score est élevé, plus cela signifie que l'utilisation de ce mot est caractéristique des publications instagram de notre corpus pour ce média ou pour ce mois.

Les résultats de l'analyse par mois ont servi à produire la figure ci-dessous. Les termes représentés sont ceux dont le score TF/IDF a été le plus élevé pour chaque mois, en autant qu'il ne s'agisse pas d'un terme temporel (année ou nom du mois) ou d'un terme décrivant un des médias de l'échantillon (mediapart, tf1, etc.).

Analyse TF/IDF

Étape 4 - Analyse des images

Une dernière analyse a été effectuéee sur 1% des images ayant suscité le plus d'interactions pour chacun des médias du corpus. Un total de 733 images ont été téléchargées manuellement (eh oui... cette opération était sans doute automatisable, mais je n'ai pas trouvé comment).

Chaque image a ensuite analysée avec l'API Computer Vision des Services cognitifs de Microsoft. Pour l'image ci-dessous, tirée du compte Instagram du Figaro, par exemple, l'API a retourné les renseignements se trouvant dans ce fichier: 36887214_2965943723431332_5578156666228047872_n.json

Image tirée du compte Instagram du Figaro

Deux scripts ont été utilisés à cette étape. Le script vision1.py soumettait chaque image à l'API et consignait ce qu'il lui retournait dans un fichier .json. Le script vision2.py lisait tous ces fichiers et examinait quelles principales catégories ou étiquettes leur étaient le plus souvent accolées par l'API.

Comme l'article dans Les Cahiers du journalisme le souligne, cette étape n'a pas permis de faire ressortir quoi que ce soit de pertinent ou d'utile. Cependant, un examen manuel de ce sous-ensemble d'images ayant suscité le plus de réactions a permis de dégager plus de sens, à savoir qu'Instagram est utilisé par les médias comme la UNE d'un journal et qu'il a des fonctions se rapprochant davantage du marketing que du journalisme.

cdj_instagram's People

Contributors

jhroy avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.