Skip to content

jhroy/CdJ_LeDevoir

Repository files navigation

Logo du Devoir

Un siècle de culture au Devoir

Méthodologie détaillée d'un article pour Les Cahiers du journalisme (revue évaluée par les pairs) sur la place de la culture dans les pages du journal entre 1910 et 2011.

✏️ ✏️ ✏️

Étape 1 - Trouver les samedis

Toutes les éditions du Devoir entre le 1er janvier 1910 et le 31 décembre 2011 sont disponibles dans la collection numérique du site web de Bibliothèque et Archives nationales Québec.

Cela fait près de 32 000 éditions sur plus de 50 000 fichiers accessibles en ligne (chaque cahier du journal est un fichier distinct). C'est beaucoup trop pour un seul article. J'ai choisi de ne prendre que les samedis. La première étape consistait donc à identifier tous les samedis depuis le 10 janvier 1910.

On en a la liste dans le fichier suivant :

Étape 2 - Recourir à un API caché de BAnQ

Une fois qu'on a les bonnes dates, il faut maintenant extraire les fichiers correspondants dans le site de BAnQ. Mais c'est un défi, car il n'y a aucun rapport entre la date de publication d'une édition donnée et son URL dans le site.

Par exemple, l'URL de l'édition du 1er mars 1985 est http://numerique.banq.qc.ca/patrimoine/details/52327/2790180. L'identifiant unique de cette édition est la dernière partie de son URL, soit 2790180. Rien, dans ce nombre, ne permet de reconnaître le 1er mars 1985.

En outre, si on augmente ce nombre de 1 à 2790181, on pourrait s'attendre à accéder à l'édition du 2 mars 1985. Eh non, on aboutit à celle du 1er avril 1931. Problème.

Il se trouve heureusement que BAnQ dispose d'un API pour ses collections. Cet outil (non documenté) permet de consulter les métadonnées d'un item de la collection de BAnQ. Par exemple, les métadonnées de l'édition du Devoir du 1er mars 1985 ressemblent à ceci :

Pour trouver quelles dates correspondent à quels identifiants, il faut aller à la pêche en essayant tous les identifiants possibles. C'est ce que fait l'un des premiers scripts programmés pour ce projet :

Il vérifie tous les identifiants dans une fourchette donnée et si l'API nous dit que cet identifiant mène à une édition du devoir, on l'inscrit dans un fichier CSV  (le fichier ci-dessous peut être utile à toute personne qui souhaiterait trouver rapidement les adresses web des 49 672 fichiers compris dans les archives complètes du Devoir et pesant, ensemble, près de 606,5 gigaoctets :

Une fois qu'on a trié uniquement les éditions du samedi, on se retrouve avec ce fichier qui va nous servir à l'étape suivante :

Étape 3 - Extraire les fichiers

Le script devoir-extraction.py puise dans le fichier devoir-source-des-pdf.csv pour télécharger les 10 753 fichiers PDF des éditions du samedi auxquelles on s'intéresse. Une fois chaque fichier téléchargé, il fait trois choses :

  • il extrait le texte du PDF à l'aide de la bibliothèque textract;
  • il sépare ce texte en entités lexicales, ou tokens, à l'aide de la bibliothèque NLTK (Natural Language Toolkit) et les sauvegarde dans un fichier texte (le script en produit 10 753 contenant un grand total de 4,1 milliards d'entités, alors ils ne sont pas tous recopiés ici, mais en voici un exemple: ledevoir-brut-19660219.txt);
  • il effectue ensuite un tri dans ces tokens afin d'exclure les mots vides et de ne conserver que les mots de deux caractères ou plus, puis il sauvegarde ces mots dans un fichier CSV (il y en a tout autant; en voici un exemple: ledevoir-token2-19921212_D.csv).

Voici la liste des mots-vides utilisés :

  • stopwords.py -> il s'agit en fait d'un fichier python ne définissant qu'une liste appelée stop contenant ces mots vides; le fichier est invoqué au début du script ci-dessus par la mention from stopwords import stop. Elle est inspirée de cette collection.

Une lemmatisation du corpus a également été effectuée grâce à l'outil TreeTagger. Mais parce que cet outil effaçait plusieurs noms propres, des mots importants si le sujet de l'analyse est la culture, la lemmatisation n'a finalement pas été retenue.

Étape 4 - Confection de deux thésaurus

L'objectif central de cette analyse était de mesurer la place de la culture dans les pages du Devoir au fil des ans. Pour y arriver, il fallait constituer deux thésaurus de mots relatifs à la culture. À partir d'une sélection aléatoire de textes puisés dans 34 éditions (thesaurus_sources.csv), deux thésaurus ont été confectionnés.

  • thesaurus_1.csv -> ce premier thésaurus comprend 760 mots directement reliés à la culture; chacun comprend une «cote» de 5 ou de 4 points.
  • thesaurus_2.csv -> ce deuxième thésaurus comprend 1439 mots qui, même s'ils ne sont pas directement reliés à la culture, peuvent dénoter qu'on se trouve dans un contexte culturel si des mots du premier thésaurus sont présents tout près; chacun comprend également une «cote» de 1, 2 ou 3 points.

Étape 5 - Analyse du corpus

Une fois les thésaurus confectionnés, un dernier script s'en sert afin de réaliser l'analyse finale de notre corpus :

Ce script «scanne» l'ensemble du corpus par blocs de x mots, x étant un nombre défini par l'utilisateur. Pour chaque bloc de mots, le script regarde d'abord si un mot du premier thésaurus est présent. Si c'est le cas, il vérifie également si un mot du second thésaurus est présent. C'est seulement si des mots des deux corpus sont présents qu'un «indice» (un nombre calculé à partir des «cotes» de chacun des mots présents) est donné à ce bloc de texte et ajouté à un indice global pour cette édition.

Pour les besoins de cette analyse pour Les Cahiers du journalisme, quatre «scans» ont été effectués sur chacune des 10 753 éditions : par blocs de 5 mots, par blocs de 10 mots, par blocs de 15 mots et par blocs de 20 mots. Une moyenne de ces quatre indices a été calculée, puis divisée par le nombre total de mots dans l'édition pour former un indice pondéré de culture pour cette édition. L'information a été enregistrée dans un fichier CSV :

Cette information a ensuite été synthétisée par année :

C'est ce dernier fichier qui a été la source du graphique produit pour Les Cahiers du journalisme.

About

Fichiers et scripts utilisés dans le cadre d'un article pour Les Cahiers du journalisme (revue évaluée par les pairs)

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages