Cette question universelle nous préoccupe tous : de Cali au roi du Bhoutan.

Le premier en a fait une chanson dans laquelle il s’interroge sur sa vie sentimentale, le deuxième calcule le Bonheur National Brut de sa population à l’aide de 72 critères et en fait un outil de pilotage de son pays.

Chacun son truc.

La disponibilité de données massives issues des réseaux sociaux et d’algorithmes d’analyse du sentiment ouvre la voie à une nouvelle approche pour mesurer le niveau de bonheur d’un ensemble d’individus. Ainsi est né en 2008 dans le Vermont le projet hedonometer.org qui utilise les tweets en Anglais pour mesurer un niveau de bonheur des gens qui twittent en Anglais…

De fait, les ressources pour pratiquer l’analyse du sentiment en langue Anglaise sont nombreuses : du composant de base comme un dictionnaire pondéré au service REST tout intégré de Google.

Pour le Français, chaque étape du traitement (élaboration du dictionnaire, élimination des stop words, lemmatisation,…) demande encore pour l’instant un investissement supplémentaire.

C’est ce travail qui est décrit dans les paragraphes suivants.

Notre approche repose sur un algorithme développé par Peter Dodds, Chris Danforth et leur équipe du Computational Story Lab. Il est caractérisé par deux éléments clés :

  • Un dictionnaire de mots notés : l’évaluation humaine d’un ensemble de mots
  • Un programme qui va croiser les mots des tweets à ceux du dictionnaire et calculer l’indice final

Cours du Bonheur

Twitter

La collecte des données

Twitter fournit un accès à ses données (tweets) via des APIs REST. Nous collectons ces tweets en utilisant un programme Spark Streaming qui tourne sur l’infrastructure Cloud AWS depuis le 22 juin 2016.

Dictionnaire

Le dictionnaire

Pour l’évaluation des mots, l’équipe hebdonometer a utilisé Amazon Mechanical Turk. Ils ont constitué un dictionnaire des 10 000 mots les plus fréquents sur Twitter et Google Books et ont demandé aux utilisateurs de Mechanical Turk de les noter entre 1 et 9.

Nous avons récupéré ce dictionnaire, et nous l’avons traduit et adapté pour qu’il soit compatible avec la langue française, notamment en ajoutant/supprimant des mots en fonction de leurs fréquences dans la langue française.

Nous avons aussi apporté des améliorations à ce dernier, tel que la prise en considération des émoticônes.

Prétraitement

Prétraitement

Comme il a été souligné précédemment, l’étape de prétraitement du texte présente un défi. Cela est dû au manque de ressources et d’outils pour le traitement automatique du langage naturel en français.

Les tâches effectuées dans cette étape sont :

  • La constitution d’une base complète de stop words pour la langue française
  • L’utilisation d’OpenNLP pour la segmentation (tokenizer) des tweets et l’étiquetage grammatical des mots
  • Elaboration d’un dictionnaire pour la lemmatisation des mots

Ce dernier point est très important. En effet, dans la langue française, les mots peuvent prendre plusieurs formes (beaucoup plus que la langue anglaise) en fonction de leur genre (masculin ou féminin), leur nombre (un ou plusieurs), leur personne (moi, toi, eux…), leur mode (indicatif, impératif…) donnant ainsi naissance à plusieurs formes pour un même mot.

La lemmatisation permet donc de remplacer ces mots (par ex : aimerions) par leur forme canonique (« aimer »). Elle se traduit comme suit :

  • pour un verbe : ce verbe à l’infinitif
  • pour les autres mots : le mot au masculin singulier
Apache Spark

Calcul de l’indice

Le résultat de l’étape précédente, est une collection de mots lemmatisés générée à partir d’un corpus de tweets. Il ne reste plus qu’à calculer l’indice du bonheur.

La suite d’opérations de cette étape sont :

  • Le calcul des fréquences des mots
  • Le croisement de ces mots avec ceux du dictionnaire pour récupérer leurs notes
  • Le calcul de la moyenne des notes en pondérant avec la fréquence d’apparition de chaque mot

Les opérations de cette étape et celle d’avant sont exécutées dans un environnement Cloud en utilisant le framework de calcul distribué Apache Spark.

Les calculs sont effectués de façon périodique et automatique.

D3.js

Visualisation

D3.js est l’outil par excellence pour créer des représentations graphiques tout en gardant la main complète sur le rendu. C’est une bibliothèque Javascript pour représenter graphiquement des données.

Contrairement à d’autres outils qui sont moins souples, D3.js permet un contrôle total du résultat final, et donc, la mise en place de graphique personnalisable et interactif offrant une expérience utilisateur très agréable.