
Voici le troisième billet d’une série portant sur l’analyse du contenu textuel de commentaires Facebook en lien avec des articles de la presse écrite. Le second billet peut être lu ici
🌘 Introduction
Comment modéliser les commentaires Facebook pour une analyse linguistique avec Python ?
La modélisation utilise une représentation vectorielle dense via réduction de dimensions (LSA, LDA, plongements de mots) pour textes courts et clairsemés. Apprentissage non supervisé pour classification de pertinence, gérant défis comme fautes d’orthographe, sarcasme, salutations et contexte latent. Outils : Pandas, newspaper pour scraping, modèles non supervisés.
Alors que le second billet traitait des entités nommées, prises de parole et relations entre les commentaires, nous parlerons ici de modélisation et présenterons les données qui seront analysées.
🌘 Modélisation
🌘 Représentation vectorielle
Étant donné que les commentaires sont de courts textes, souvent formés à partir d’un très large lexique, en tenant compte des nombreuses fautes d’orthographe et mécanismes d’emphase, leur représentation sous forme vectorielle est très creuse. Il faudra donc nécessairement utiliser une forme de réduction de dimensions. Liebeskind et al. [8] propose quatre approches : analyse sémantique latente (LSA), allocation dynamique de Dirichlet (LDA), projection aléatoire (Lemme de Johnson-Lindenstrauss) ou plongements de mots.
Comme nos commentaires ne sont pas étiquetés, nous devons utiliser un apprentissage non supervisé. Les deux approches consistent à construire soit un modèle commun pour les articles et les commentaires, ou deux modèles distincts. Afin d’avoir une représentation qui est davantage axée vers les thèmes généraux, les auteurs recommandent d’utiliser des vecteurs denses et cours, tout au plus quelques centaines.
🌘 Classification de la pertinence
Selon les observations de Liebeskind et al. [8], les principaux obstacles à la modélisation de la pertinence des commentaires est la présence de salutations et de commentaires obscènes, les nombreux sous-entendus entre les commentaires (contexte latent) ainsi que la présence de sarcasme. Les commentaires qui ont été classés comme non pertinents étaient principalement des références implicites ou des salutations.
Quels corpus de textes sont analysés pour les commentaires Facebook francophones ?
Corpus d’articles et commentaires de Le Figaro (25 publications, 7155 commentaires), Radio-Canada (22, 3947) et TVA Nouvelles (24, 6262). Extraits via exportcomments.com (XLSX), Pandas pour commentaires, newspaper pour scraping d’articles et entités nommées.
🌘 Exemple d’application
🌘 Description des corpus de textes
Nous analyserons les articles provenant des pages Facebook de trois médias écrits francophones : Le Figaro (FIG), Radio-Canada (RC) et TVA Nouvelles (TVA). Pour chacun de ces médias, nous avons respectivement une publication Facebook contenant un lien vers un article journalistique, ainsi qu’un corpus de commentaires extraits depuis celle-ci.
| media | Nombre de publications |
|---|---|
| FIG | 25 |
| RC | 22 |
| TVA | 24 |
Le premier corpus étudié est constitué du texte des articles liés dans les publications (l’utilisateur de Facebook devant cliquer sur le lien pour y accéder). Le titre de l’article n’est pas inclus dans ce corpus. Le second corpus est constitué d’un ensemble de commentaires publiés par des utilisateurs du réseau social et associés à chacune des publications précédentes.
| media | Nombre de commentaires |
|---|---|
| FIG | 7155 |
| RC | 3947 |
| TVA | 6262 |
Ces deux corpus ont été créés à l’aide des données de commentaires extraites depuis l’application en ligne exportcomments.com [2] dans des fichiers XLSX. Les fichiers ont par la suite été utilisés par trois programmes Python :
-
Un premier pour extraire les commentaires depuis les fichiers téléchargés à l’aide de Pandas [10].
-
Un second pour extraire les textes depuis les URL disponibles dans les fichiers, par récupération de données (web scraping), en utilisant la librairie Python
newspaper[11]. Du même coup, cette librairie permet d’extraction d’entités nommées et l’étiquetage des parties du discours. -
Un troisième avec des fonctions d’extraction communes
Quelles techniques de réduction de dimensions pour représenter les commentaires Facebook ?
Pour vecteurs creux : LSA (analyse sémantique latente), LDA (allocation de Dirichlet), projection aléatoire (Johnson-Lindenstrauss) ou word embeddings. Vecteurs denses (quelques centaines de dims) pour thèmes généraux, modèles communs ou séparés pour articles/commentaires.
🌘 Suite
🌘 Billet(s) précédent(s)
🌘 Références
- [2] 2019. exportcomments.com. Consulté à l’adresse https://exportcomments.com/
- [8] Chaya Liebeskind, Shmuel Liebeskind, et Yaakov HaCohen-Kerner. 2018. Comment Relevance Classification in Facebook. In Computational Linguistics and Intelligent Text Processing, Springer International Publishing, Cham, 241‑254.
- [10] Wes McKinney. 2010. Data Structures for Statistical Computing in Python. In Proceedings of the 9th Python in Science Conference, 51‑56.
- [11] Lucas Ou-Yang. 2019. Newspaper3k: Article scraping & curation. Consulté à l’adresse https://github.com/codelucas/newspaper/