Un message correspond au contenu à proprement dit mais aussi aux métadonnées qui l'accompagne: l'auteur, la date et l'horraire de réception ainsi que les réations des autres membres de la conversation.
Je mets en avant quelques messages remarquables: celui qui a le plus de réactions, celui qui a le plus de pouces et celui le plus long.
Aussi j'affiche l'évolution de différents critères au cours du temps. On peut visualiser:
- la fréquence de réception messages,
- la fréquence de réaction sous les messages dont la part de réactions classées comme "sérieuses"
- le nombre de message envoyer par chaque personne
L'analyse du contenu se base sur de l'analyse de sentiments. D'un côté on associe à chaque messages un sentiment positif 1 ou négatif 0 et de l'autre on extrait de chaque message les entités citées (personnes, lieux, objets/concepts marquant). Ainsi on obtient une correspondance sentiment / entité. En comptant le nombre de sentiment positif / négatif associé à chaque entité puis en faisant la différence on peut classer les entités de la plus apprécié à la plus décrié.
Les résultats de cette partie ne sont pas affichés sur le site.
La récupération des messages se fait au travers d'une api accessible par un serveur Express qui utilise Puppeteer pour extraire les messages du code HTML du site de Messenger.
L'affichage se fait grace à un site one-page en VueJS. Les graphiques sont dessinés avec la librairie Plotly.
L'analyse de sentiment est développé en Python avec la plateforme TensorFlow. Je me suis inspiré du travail de Theophile Blard pour fine tune un model camembert pré-entrainé. J'ai utilisé différent jeu de données: tweets FR, commentaire allocine L'extraction des entitées des messages et faites grossièrement avec spaCy puis retraité et améliroé à la main.
\server contient l'api qui envoit les messages scrapés
\site contient le site VueJS qui traite et affiche ces messages
\sentiements contient les scripts permettant l'analyse de sentiements d'un jeu de messages provenant d'une conversation
Prérequis :
- Avoir Node.js installé
- Avoir un gestionnaire de paquet JS installé, j’utilise NPM
- Avoir installé VueCLI:
npm install -g @vue/cli
Procédure :
- Cloner le dépôt GitHub
- Exécuter la commande
npm install
successivement dans les deux répertoiresserver/
etsite/
- Pour lancer l’API exécuter :
node .\server.js
dans le répertoireserver/
- Pour lancer le serveur local permettant de visionner le site Vue exécuter npm run serve dans le répertoire
site/
- Dans un navigateur Edge, Chrome, ou Firefox (il est peu probable que ça fonctionne avec Internet Explorer) entrer l’url : http://localhost:8080
Pour exécuter les Notebook sur sa machine :
- Avoir un environnement Anaconda actif sur lequel est installé le package Jupyter
- Utiliser un éditeur de texte compatible comme VS Code ou JupyterLab
- Pour exécuter les notebooks sur GPU il faut installé CUDA et TensorFlow pour GPU. Attention il faut que les versions de Python, CUDA et TensorFlow soit compatible. La documentation TensorFlow explique la procédure d’installation
Pour exécuter les Notebook sur Google Colab :
- Aller sur ce lien Google Drive
- Ouvrir les Notebooks avec Google Colab
- Pour les exécuter il faut modifier la variable
chemin_dossier_contenant_projet
avec le chemin dans votre Drive du dossier contenant le dossiersentiments/