X

Blog 13 : construire une liste de stop words

22 janvier 2022

English

Carnet de recherche

Le projet de recherche 'Mixology' s’inscrit dans la perspective de l’open research. Son objectif est de sonder les opinions en période de crise, ici à partir d’un corpus collecté via l’API de Twitter, du 12 au 31 décembre 2021.

En traitement automatique de la langue, les stop words sont des termes dont la signification manque de pertinence et qui peuvent donc être ignorés (Wilbur et Sirotkin, 1992 ; Lo et al, 2005). En d’autres mots, il s’agit d’un dictionnaire négatif (Fox, 1989). La classification et l’analyse de sentiments sur Twitter est généralement affectées par la nature bruyante des données des tweets : la suppression de mots vides permet donc d’en réduire le bruit (Saif et al., 2014). Toutefois, la suppression de certains termes sont susceptibles d’affecter les résultats d’une recherche. Il n’y a pas une seule méthode pour définir une liste de stop words, pas plus qu’aucune liste prédéfinie n’est plus utilisée qu’une autre. Toutefois, la Brown stop list (Fox, 1992) et la Van stoplist (Rijsbergen, 1979) sont considérés comme des standards (Saif et al., 2014).

Généralement, les pronoms, interjections et conjonctions peuvent être considérés comme des stop words. Etablir une liste de stop words doit à la fois tenir compte du domaine et de l’évolution de la langue. La fréquence des termes ou des tokens d’un corpus permet de travailler sur une liste de stop words, mais il n’y a pas de consensus à propos de celle à privilégier : les termes les plus fréquents doivent-il être exclus ou, au contraire, faut-il ignorer les termes à plus basse fréquence ? La meilleure méthode est celle qui permet d’aboutir aux meilleurs résultats (Fox, 1989 ; Saif et al., 2014).

De plus, une liste de stop words peut être très bien adaptée pour la génération de bigrammes et trigrammes, mais donnera lieu à de moins bonnes performances lorsqu’il s’agit de passer à l’analyse des sentiments. Pour cette raison, dans cette recherche, deux listes distinctes de stop words ont été établies, en vue d’optimiser l’adéquation à la tâche réalisée. En ce qui concerne le lexique n-grammes, les tokens présentant une fréquence inférieure ou égale à 5 ont été placés dans une liste spécifique. En effet, leur examen a permis de se rendre compte que ces faibles fréquences regroupaient des interjections, des chemins d’URL ainsi que des noms d’utilisateurs de Twitter. Cette liste ne peut être rendue publique pour des raisons d’anonymisation des utilisateurs de Twitter figurant dans le corpus de tweets.

Cette opération a été réalisée pour chacun des sous-corpus du corpus général. Une autre liste de stop words a été utilisée à la fois pour les lexiques n-grammes et pour l’analyse de sentiment, celle-ci se focalisant sur les termes vides de sens de la langue. Cet outil a permis de disposer d’une première base : https://countwordsfree.com/stopwords Son avantage est de proposer des listes prédéfinies en langue anglaise et en langue française, les deux langues du corpus. La V2 de cette liste de stop words (en langue anglaise) est disponible via la page Github du projet Mixology.

Toutes ces opérations ont été précédées par un important travail de nettoyage du corpus, celui-ci incluant l’élimination des doublons (mêmes identifiant, localisation, date et texte), et une harmonisation orthographique.

Tokenisation et stemming avec #RStats

Tokenisation : processus permettant de décomposer un document textuel en tokens, soit en mots uniques. Un token est donc une occurrence d’unigramme (Kuznetsov et Gurevych, 2018). Le package R tidytext propopse une fonctionnalité de tokenisation par unités de texte couramment utilisées (voir aussi Blog 8 pour les bigrammes et trigrammes).

Lemmatisation : analyse lexicale visant à regrouper tous les termes appartenant à une même famille (forme canonique, forme non fléchie d’un verbe, Turner et al.,2021). La lemmatisation est aussi appelée stemming ou racinisation. Le package R SnowballC s’appuie sur le la bibliothèque ‘libstemmer‘, laquelle implémente l’algorithme de Porter. Les langues actuellement prises en charge sont : danois, néerlandais, anglais, finnois, français, allemand, hongrois, italien, norvégien, portugais, roumain, russe, espagnol, suédois et turc.

Il existe également d’autres techniques de stemming possibles sous R, et le package tm permet aussi de réaliser des opérations de tokenisation et de stemming.


Références

Fox, C. (1992). Information retrieval data structures and algorithms. Lexical Analysis and Stoplists, pp. 102–130.

Fox, C. (1989, September). A stop list for general text. In Acm sigir forum (Vol. 24, No. 1-2, pp. 19-21). New York, NY, USA: ACM.

Kuznetsov, I., & Gurevych, I. (2018, August). From text to lexicon: Bridging the gap between word embeddings and lexical resources. In Proceedings of the 27th International Conference on Computational Linguistics (pp. 233-244).

Lo, R. , He, B., & Ounis, I. (2005, January). Automatically building a stopword list for an information retrieval system. In Journal on Digital Information Management: Special Issue on the 5th Dutch-Belgian Information Retrieval Workshop (DIR) (Vol. 5, pp. 17-24).

Turner, A. N., Challa, A. K., & Cooper, K. M. (2021). Student perceptions of authoring a publication stemming from a course-based undergraduate research experience (CURE). CBE—Life Sciences Education, 20(3), ar46.

Saif, H., Fernández, M., He, Y., & Alani, H. (2014). On stopwords, filtering and data sparsity for sentiment analysis of twitter.

van Rijsbergen, C. J., Information Retrieval, Butterworths, 1975

Wilbur, W. J., & Sirotkin, K. (1992). The automatic identification of stop words. Journal of information science, 18(1), 45-55.

 

# # #

Lire aussi

Blog 21 : politiques, experts et journalistes

Blog 20 : pour la vaccination, contre les restrictions

Blog 19 : analyse de sentiment comparée

Blog 18 : une crise sanitaire et politique

Blog 17 : anatomie du sous-corpus « mesures politiques/sanitaires » (en)

Blog 16 : analyse de sentiment du sous-corpus ‘vaccination’ (en, part.2)

Blog 15 : analyse de sentiment comparée du sous-corpus ‘vaccination’ (en, part.1)

Blog 14 : un dictionnaire pour l’analyse de sentiment adapté à la crise Covid

Blog 13 : construire une liste de stop words

Blog 12 : principaux dictionnaires pour l’analyse de sentiment

Blog 11 : description statistique du corpus avec #RStats

Blog 10 : l’analyse de sentiment ou l’évaluation de la subjectivité

Blog 9 : modélisation thématique du corpus ‘vaccination’ (en)

Blog 8 : traitement linguistique et quantitatif du corpus ‘vaccination’ (anglais, part.2)

Blog 7 : traitement linguistique et quantitatif du corpus ‘vaccination’ (anglais, part.1)

Blog 6 : collecte du corpus et préparation de l’analyse lexicale

Blog 5: le package R « textclean »

Blog 4 : cibler la bonne requête et nettoyer des messy data

Blog 3 : Twitter API et rtweet

Blog 2 : collecte du corpus

Blog 1: le projet

Les enjeux de la recherche sur les usages médiatiques en temps de crise