analyse de sentiment twitter - agroparistech

10
Analyse de sentiment Twitter Alwine Lambert Gabriel Bellard Guillaume Lorre Karim Kouki Abstract Nous présentons une méthode d’analyse de senti- ments à partir de messages issus de l’application Twitter avec la base de données Sentiment140. Nous insistons sur la phase de pré-traitement des messages, nous essayons une méthode de gra- dient boosting et un réseau de neurones convolu- tifs. Nous présentons finalement une application permettant de classifier des tweets récents. Introduction L’analyse de sentiment est une tâche de traitement auto- matique des langues et d’extraction d’information. Pour un texte donné, il faut identifier la polarité du texte comme étant soit positif, soit négatif. Pang et Lee (Pang, Bo, and Lillian Lee, 2008) indiquent plusieurs méthodes, plusieurs références de performance et ressources pour réaliser cette tâche. La polarité d’un sentiment peut être calculée selon plusieurs seuils et peut être vue comme plusieurs différentes classes. Dans notre projet, nous considérons les textes comme pouvant appartenir à seulement deux classes (classification binaire) : soit le texte est positif, soit le texte est négatif. Récemment, l’analyse de sentiments a reçu beaucoup d’at- tention non seulement de la part de la recherche scientifique mais aussi par les domaines de la publicité et du marke- ting. Cela peut être attribué aux récentes avancées dans les réseaux sociaux et à la rapidité du relais de l’information. Les grandes masses de données réelles issues des réseaux sociaux sont largement utilisées pour, justement, l’analyse des sentiments. Analyser les messages récents issus des ré- seaux sociaux pourrait donner l’opinion générale des utili- sateurs envers un sujet spécifique. Nous essayons deux différents modèles. L’un est un algo- rithme de gradient boosting où nous normalisons les textes. Proceedings of the 33 rd International Conference on Machine Learning, New York, NY, USA, 2016. JMLR: W&CP volume 48. Copyright 2016 by the author(s). L’autre modèle est un réseau de neurones convolutifs avec une normalisation indexant les mots dans un vocabulaire. Nous appliquons une phase de pré-traitement de tweets pour réduire le bruit pour les deux modèles. Nous obtenons une précision de 80% et 79% respectivement. Parmi les approches concernant l’analyse de sentiments et d’opinions, plusieurs utilisent des ressources lexicales donnant de l’information sur la polarité des mots. Nous utilisons dans nos méthodes la ressource lexicale Senti- WordNet (Esuli A, Sebastiani F, 2006) qui contient de l’information sur la polarité de termes basée sur la base de données WordNet 1 . Nous utilisons des méthodes de sélection de caractéris- tiques pour réduire l’espace de caractéristiques à un sous- espace de caractéristiques pertinentes. Finalement nous présentons une application permettant de récupérer de nou- veaux messages sur un thème donné pour évaluer l’opinion des utilisateurs de Twitter sur ce thème. 1. Sentiment140 et données Twitter 1.1. Ensemble de données L’ensemble de données Sentiment140 contient environ 1,6 millions tweets qui ont été récupérés automatiquement avec l’API Twitter. Ces tweets ont été annotés automatiquement en supposant que ceux contenant l’émoticône « :) » étaient positifs et ceux contenant l’émoticône « :( » étaient néga- tifs. Ceux ne contenant aucun de ces émoticônes, et ceux qui contenaient les deux, n’ont pas été gardés. L’ensemble d’entraînement est annoté en deux classes (po- sitif et négatif) alors que l’ensemble de test est annoté à la main sur trois différentes classes (positif, négatif et neutre). Pour nos expériences, nous n’utilisons que les classes po- sitif et négatif de l’ensemble de test. La table 1 donne les détails de l’ensemble de données. Chaque ligne du fichier contient un seul tweet contenant au maximum 140 caractères et peut contenir plusieurs phrases 1. https://wordnet.princeton.edu/wordnet/

Upload: others

Post on 13-Feb-2022

9 views

Category:

Documents


0 download

TRANSCRIPT

Analyse de sentiment Twitter

Alwine LambertGabriel BellardGuillaume LorreKarim Kouki

AbstractNous présentons une méthode d’analyse de senti-ments à partir de messages issus de l’applicationTwitter avec la base de données Sentiment140.Nous insistons sur la phase de pré-traitement desmessages, nous essayons une méthode de gra-dient boosting et un réseau de neurones convolu-tifs. Nous présentons finalement une applicationpermettant de classifier des tweets récents.

IntroductionL’analyse de sentiment est une tâche de traitement auto-matique des langues et d’extraction d’information. Pourun texte donné, il faut identifier la polarité du texte commeétant soit positif, soit négatif. Pang et Lee (Pang, Bo, andLillian Lee, 2008) indiquent plusieurs méthodes, plusieursréférences de performance et ressources pour réalisercette tâche. La polarité d’un sentiment peut être calculéeselon plusieurs seuils et peut être vue comme plusieursdifférentes classes. Dans notre projet, nous considérons lestextes comme pouvant appartenir à seulement deux classes(classification binaire) : soit le texte est positif, soit le texteest négatif.

Récemment, l’analyse de sentiments a reçu beaucoup d’at-tention non seulement de la part de la recherche scientifiquemais aussi par les domaines de la publicité et du marke-ting. Cela peut être attribué aux récentes avancées dans lesréseaux sociaux et à la rapidité du relais de l’information.Les grandes masses de données réelles issues des réseauxsociaux sont largement utilisées pour, justement, l’analysedes sentiments. Analyser les messages récents issus des ré-seaux sociaux pourrait donner l’opinion générale des utili-sateurs envers un sujet spécifique.

Nous essayons deux différents modèles. L’un est un algo-rithme de gradient boosting où nous normalisons les textes.

Proceedings of the 33 rd International Conference on MachineLearning, New York, NY, USA, 2016. JMLR: W&CP volume 48.Copyright 2016 by the author(s).

L’autre modèle est un réseau de neurones convolutifs avecune normalisation indexant les mots dans un vocabulaire.Nous appliquons une phase de pré-traitement de tweetspour réduire le bruit pour les deux modèles. Nous obtenonsune précision de 80% et 79% respectivement.

Parmi les approches concernant l’analyse de sentimentset d’opinions, plusieurs utilisent des ressources lexicalesdonnant de l’information sur la polarité des mots. Nousutilisons dans nos méthodes la ressource lexicale Senti-WordNet (Esuli A, Sebastiani F, 2006) qui contient del’information sur la polarité de termes basée sur la base dedonnées WordNet 1.

Nous utilisons des méthodes de sélection de caractéris-tiques pour réduire l’espace de caractéristiques à un sous-espace de caractéristiques pertinentes. Finalement nousprésentons une application permettant de récupérer de nou-veaux messages sur un thème donné pour évaluer l’opiniondes utilisateurs de Twitter sur ce thème.

1. Sentiment140 et données Twitter1.1. Ensemble de données

L’ensemble de données Sentiment140 contient environ 1,6millions tweets qui ont été récupérés automatiquement avecl’API Twitter. Ces tweets ont été annotés automatiquementen supposant que ceux contenant l’émoticône « :) » étaientpositifs et ceux contenant l’émoticône « :( » étaient néga-tifs. Ceux ne contenant aucun de ces émoticônes, et ceuxqui contenaient les deux, n’ont pas été gardés.L’ensemble d’entraînement est annoté en deux classes (po-sitif et négatif) alors que l’ensemble de test est annoté à lamain sur trois différentes classes (positif, négatif et neutre).Pour nos expériences, nous n’utilisons que les classes po-sitif et négatif de l’ensemble de test. La table 1 donne lesdétails de l’ensemble de données.

Chaque ligne du fichier contient un seul tweet contenant aumaximum 140 caractères et peut contenir plusieurs phrases

1. https://wordnet.princeton.edu/wordnet/

Analyse de sentiment Twitter

Table 1. Sentiment140Ensemble d’entraînement

positif 800,000négatif 800,000total 1,600,000

Ensemble de test

positif 182négatif 177neutre 139total 498

(selon la longueur). Parce que les tweets ont été collectésdirectement sur l’API twitter, ils peuvent donc contenir desadresses HTML, des hashtags # et des noms d’utilisateurs(précédés d’un @). Finalement la structure de chaque ligneest la suivante :

1. la polarité du tweet (e.g, 0 = négatif, 2 = neutre, 4 =positif)

2. l’id du tweet (e.g, 4510)

3. la date du tweet (e.g, Sat May 16 23 :58 :44 UTC2009)

4. le nom de l’utilisateur qui a posté le tweet (e.g, ro-botickilldozr)

5. le texte du tweet (e.g, "I must think about posi-tive..")

1.2. Caractéristiques des tweets

Nous présentons rapidement dans cette sous-partie les prin-cipales caractéristiques d’un tweet et de Twitter.

1.2.1. LONGUEUR

La longueur maximale d’un message posté sur Twitter estde 140 caractères.D’après Go et al.(Go, Alec and Bhayani, Richa and Huang,Lei, 2009), la longueur moyenne des tweets est de 14 motsou 78 caractères sur ce corpus. Cette longueur est trèscourte contrairement à celles utilisées dans d’autres corpuspour la classification de sentiments (comme les critiques defilms).

1.2.2. DISPONIBILITÉ DES DONNÉES ET MODÈLE DULANGAGE

Les sujets abordés sur Twitter sont très divers et l’API twit-ter permet de récolter des millions de messages. En effet,le nombre de tweets postés chaque jour est immense. Lesutilisateurs peuvent poster des messages depuis n’importequel lieu et avec différents appareils. Il est à noter qu’untweet peut contenir des fautes d’orthographe liées à l’utili-

sation de smartphones et à la limitation de caractères. Deplus, le registre de langue utilisé peut être familier.

1.3. Exploration des données

Figure 1. Nuages de mots

. Avant prétraitement . Après prétraitement

Une représentation classique des données dans le cas dutraitement automatique des langues est le nuage de mots.Sous cette forme, on peut visualiser très facilement les motsles plus couramment employés. Outre les couleurs qui ontune fonction uniquement décorative, la fréquence des motsdans la base de données employée est proportionnelle à lataille des mots en question dans l’image.

Ici, nous avons représenté les données brutes avec etsans aucun pré-traitement sur les deux représentations gra-phiques fournies. Dans le cas des données brutes, les bruitsobservés sont dus à la structure des en-têtes des tweetsprincipalement. Dans le cas des données (légèrement) pré-traitées, nous arrivons à filtrer une bonne partie du bruit etles données deviennent informatives et peuvent commencerà être analyser.

2. Matériels et méthodesNous présentons maintenant toute la méthodologie du pré-traitement des données, nous expliquons nos méthodes uti-lisées pour la vectorisation des textes et présentons l’utili-sation de la ressource lexicale SentiWordNet.

2.1. Pré-traitement des données

Après avoir observé les données, nous avons vu que lesphrases contenaient des balises HTML, des mots-vides ettoute la ponctuation. Nous avons donc commencé par éli-miner le bruit pour normaliser nos phrases.Nous supprimons les balises HTML avec le module Beau-tifulSoup 2. Nous supprimons aussi tous les caractères quine sont pas des lettres et donc, supprimons toute la ponc-tuation des textes. Parce que les mots-vides, par définition,n’apportent pas d’information au texte, nous les éliminonsaussi. Toutes les lettres sont également passées en minus-cule.

2. https://www.crummy.com/software/BeautifulSoup/

Analyse de sentiment Twitter

Finalement, nous racinisons tous les mots pour traiterchaque flexion d’un mot en un seul et même mot. Nousdétaillons ci-dessous quelques étapes importantes du pré-traitement.

Pseudos : Les pseudos (e.g., @username) étant inutilespour l’analyse de sentiments, nous remplaçons tous les@usernames par le texte AT_USER afin de pouvoir les sup-primer par la suite.

Lettres répétées : Le langage utilisé sur Twitter est pour laplupart du temps familier. Il n’est donc pas rare que desmots soient écrits avec une lettre (ou plusieurs) qui se ré-pète alors qu’elle ne le devrait pas. Par exemple le mot”dog” peut se trouver de la forme ”dooooooog” sur Twit-ter. Dès qu’un mot contient des lettres identiques qui serépètent plus de deux fois, elles sont remplacées par seule-ment deux occurrences de cette même lettre (”dooooooog”devient ”doog”).

Hashtags : Les hashtags sur Twitter sont utilisés pour créerune connexion instantanée avec d’autres utilisateurs. Lemot qui suit le # est généralement un mot qui fournit beau-coup d’informations sur le sentiment de la phrase. Nousconservons donc ce mot, mais le caractère hashtag est sup-primé.

Racinisation : Nous transformons toutes les flexions enleur racine. L’objectif est de réduire les formes dérivéesd’un mot à une forme de base commune afin de pouvoirfaciliter la correspondance entre les différents termes.

2.1.1. EFFET DU PRÉTRAITEMENT

La Table 2 montre l’effet de ces prétraitements sur lenombre de mots utiles dans le texte.

Réduction Nombre de caractéristiques % de l’original

None 1 578 617 100%Username 64 982 95.88%URLs 708 571 55.11%Lettres répétées 199 784 87.34%All 973 337 38.34%

Table 2. Effet de la réduction du bruit

Toutes ces suppressions de bruit du texte mènent à une ré-duction de l’ensemble de corpus jusqu’à 38.34% de la tailledu corpus original.

2.2. Sac de mots et Hashing Trick

Le sac de mots (Bag of Words) est un modèle utiliséen traitement automatique des langues. Un sac de motsclassique garde en mémoire un vecteur de la taille duvocabulaire pour chaque document (tweet). Si la taille duvocabulaire est grande, le dictionnaire le sera aussi.

Une méthode, appelée Hashing Trick, devient plus efficacequand la taille du vocabulaire augmente. En hashant lesmots, nous obtenons un index de dimension n déterminé àl’avance. Si nous choisissons une dimension trop faible, ily aura des collisions (lorsque plusieurs mots sont indexésà la même clé), si nous choisissons une dimension tropgrande, nous gaspillons de la mémoire car la majorité descaractéristiques auront une valeur égale à 0.Nous pouvons noter qu’avec cette méthode, malheureuse-ment, il n’existe aucun moyen de calculer la transforméeinverse pour retrouver les mots pertinents au modèle.

Nous utilisons les implémentations de scikit-learn et nouscomparons les résultats en termes de performance et de pré-diction.

2.3. Sentiwordnet

SentiWordNet est une ressource lexicale contenant del’information sur la polarité des termes extraits de la basede données WordNet. Sentiwordnet a été construit par uneméthode non supervisée et est très utilisée dans les tâchesd’analyse de sentiments, cette ressource contient une basede données de termes anglais facilement utilisable.

Avant de raciniser les mots de chaque texte, nous utilisonsSentiWordNet pour ajouter de nouvelles caractéristiquesà nos modèles. Dans la base de données, chaque motcontient un score de positivité et un score de négativité.Pour chaque mot qui n’est ni un mot vide ni une marquede ponctuation, nous cherchons le mot dans la base dedonnées en utilisant son étiquetage morpho-syntaxique(PoS tagging) pour trouver le mot le plus proche du sensde mot recherché.

Nous calculons deux scores différents pour la polarité dela phrase. Un score contient l’addition du score des motstrouvés positifs (noté scorep), l’autre contient l’additiondu score des mots trouvés négatifs (noté scoren). Nousavons essayé deux méthodes pour la bonne utilisation deces scores :

2.3.1. UN SCORE GLOBAL

Dans ce cas là, nous calculons un score global sur la phraseen additionnant le score positif et en soustrayant le scorenégatif : scoreg = scorep − scoren

score[polarite] = scoreg

Ainsi, si la phrase est plutôt négative elle aura un scoreglobal négatif et, inversement, un score global positif sila phrase est positive. Nous sauvegardons le score dans undictionnaire.

Analyse de sentiment Twitter

2.3.2. DEUX SCORES

Dans ce cas là, nous gardons les scores positifs et négatifstels quels et nous créons deux dictionnaires distincts. Ainsichaque phrase contient deux scores positifs dans le sensmathématiques matérialisant un score d’opinion positif etun score d’opinion négatif. Le classifieur utilisera les deuxvaleurs pour la prédiction :

score[positif ] = +scorepscore[negatif ] = +scoren

Nous avons comparé nos résultats avec et sans l’ajout deces nouvelles caractéristiques.

2.4. Amélioration des formes négatives

Das et Chen (Das S. and Chen M, 2001) ont implémentéune méthode dans leurs recherches pour l’extraction desentiments de messages provenant de forums sur les ac-tions en bourse. Ils ont déterminé que la négation dans unephrase inverse le sens de la phrase. Ils ont discuté sur com-ment les mots tels que not, never ou no sont utilisés pourinverser le sens d’une phrase. Pour mettre en valeur la né-gation de la phrase, ils commencent par détecter les motsdes phrases et les marquent d’un tag négatif. Pang et Lee(Pang, B., Lee, L. and Vaithyanathan, S, 2002) utilisent lamême technique en ajoutant le mot de négation à chaquemot jusqu’à la première marque de ponctuation suivant lemot de négation trouvé.

Voici un exemple illustrant leur méthode :

« I do not NOT like NOT this NOT movie , but I like thisone . »

Nous avons essayé cette méthode mais cela n’a pas amé-lioré notre modèle.Par ailleurs, nous avons constaté qu’en modifiant la mé-thode de la façon suivante :

« I do not NOT_like NOT_this NOT_movie , but I like thisone . »

, nous obtenons une meilleure précision couplée à Senti-WordNet. Cependant, il est à noter que la méthode est li-mitée par la liste de mots impliquant une négation (nousutilisons seulement "not", "n’t" et "no") et la liste est forcé-ment incomplète.

2.5. Sélection de caractéristiques

Dans la classification de texte, la sélection de caracté-ristiques (feature selection) est une méthode qui permetde sélectionner une sous-partie spécifique de termes del’ensemble d’entraînement et seulement utiliser cette

sous-partie pour la tâche de classification. Les principauxavantages de cette méthode sont la réduction de la di-mension des données et, par conséquent, cela permet unentraînement plus rapide mais aussi elle peut améliorer laprécision du système en supprimant des caractéristiquespouvant être vues comme du bruit.

Nous utilisons la méthode SelectKBest implémentée dansScikit-learn avec la méthode χ-Square (chi2 ou χ2) pourune première sélection de caractéristiques. Cette méthodeest principalement utilisée en statistiques pour testerl’indépendance de deux événements. Dans la sélection decaractéristiques, chi2 calcule si l’occurrence d’un termespécifique et l’occurrence d’une classe spécifique sontindépendantes. Ainsi chaque terme est évalué et tous lestermes finissent ordonnés par leur score. Un score élevéindique que l’hypothèse nulle d’indépendance doit êtrerejeté et, que, l’occurrence du terme et de la classe sontdépendantes. Si la classe et le terme sont dépendantsl’un de l’autre, la caractéristique est sélectionnée pour laclassification (les k premières caractéristiques).

Une autre technique que nous utilisons, seulement lorsquenous n’utilisons pas le hashing trick, est la suppression desmots rares et trop fréquents du vocabulaire. Nous ne gar-dons que les mots qui apparaissent au moins 2 fois et sup-primons les mots qui apparaissent dans plus de 95% destweets.

3. ModèlesNous comparons deux types de modèles différents avecleur pré-traitement respectif. Tout d’abord, nous essayonsla méthode d’eXtreme Gradient Boosting (Tianqi Chen,Carlos Guestrin, 2016) où nous pouvons mettre en œuvrele sac de mots avec le hashing trick. Ensuite, nous utili-sons et comparons les résultats avec un réseau de neuronesconvolutifs.

3.1. eXtreme Gradient Boosting

Nous commençons par définir le boosting et introduisonsl’eXtreme Gradient Boosting pour la tâche de classifica-tion.

3.1.1. BOOSTING

La principale idée derrière le boosting est de combiner plu-sieurs simples et modérément imprécis apprenants en unseul et très précis apprenant. Les apprenants faibles sont en-traînés séquentiellement de la sorte que chaque apprenantest entraîné sur les exemples qui étaient les plus difficiles àclassifier par les apprenants précédents. Donc à chaque ité-ration, un nouvel apprenant faible est entraîné en fonction

Analyse de sentiment Twitter

de l’erreur faite par tous les apprenants.

3.1.2. GRADIENT BOOSTING MACHINES- GBM

Pour faire le lien avec le cadre statistique, une méthode deboosting basée sur la descente de gradient a été formulée(Freund Y., Schapire R., 1997), (Friedman J., HastieT., Tibshirani R. , 2000), (Friedman J. , 2001). Cetteformulation du boosting a été appelée les gradient boostingmachines (GBMs).

Dans l’apprentissage avec GBM, des nouveaux modèlessont entraînés pour donner une estimation plus précise de laréponse. L’idée principale derrière cette nouvelle méthodeest de construire de nouveaux apprenants pour qu’ils soientcorrélés de façon maximale avec le gradient négatif de lafonction de perte, associée à l’ensemble des apprenants.

Notons que la plupart des compétitions en data science sontremportée par des méthodes de gradient boosting.

3.1.3. GBM POUR LA CLASSIFICATION DE TEXTE

Une des propriétés importantes des GBMs est la possibilitéde construire des modèles creux très utilisés dans la clas-sification de textes et, plus précisément, dans l’analyse desentiments.

3.1.4. XGBOOST

XGboost est une implémentation avancée des GBM. Ils dif-fèrent sur plusieurs points :

— Les GBM n’ont pas de régularisation qui prévient lesur-apprentissage alors que XGboost en a une auto-matiquement intégrée.

— Les GBM arrêtent de séparer les nœuds lorsqu’ilstrouvent une perte négative dans la branche (c’estun algorithme glouton). Xgboost, quant à cette mé-thode, sépare jusqu’à une certaine profondeur (don-née en paramètre) et commence à tailler dans le che-min inverse et supprime les branches qui n’ont pasde gain positif.

3.2. Réseaux de neurones - CNN

Un réseau de neurones convolutifs (Convolutional NeuralNetworks) est un type particulier de réseau de neurones.Ce type de réseaux est généralement utilisé pour le trai-tement d’images mais nous l’appliquons sur une tâche declassification de textes.

3.2.1. DÉFINITION D’UN CNN

Une architecture CNN est formée par plusieurs couches al-ternant entre couches de convolution et couches d’agréga-tion (pooling). Dans un réseau de neurones convolutifs, les

convolutions sont créées sur la couche d’entrée et sont utili-sées pour calculer la sortie. Cela résulte en des connexionslocales où chaque région de l’entrée est connectée à unneurone dans la sortie. Chaque couche applique différentsfiltres et agrège les résultats de chaque filtre. Chaque filtrecrée un segment de l’image contenant des caractéristiquesde bas niveau pour le rendre dans une représentation deplus haut niveau (principe de compositionnalité). De plus,les convolutions rendent le problème invariant à la position(rotation, translation, changement de taille). C’est pour-quoi les CNN sont grandement utilisés dans le traitementd’images.

3.2.2. CNN POUR L’ANALYSE DE SENTIMENTS

À la place des pixels d’une image, nous utilisons une ma-trice représentant les phrases et les mots de notre corpus.Chaque ligne de la matrice correspond à un mot (plus pré-cisément à son « plongement de mots » (word embedding)).La figure 4 montre un réseau de neurones convolutifs appli-qué à une tâche de classification de textes.

3.2.3. POOLING

La particularité des réseaux de neurones se trouve aussidans les couches d’agrégations qui sont utilisées après lescouches de convolutions. Plusieurs méthodes existent pourfaire cette tâche et nous utilisons celle qui applique l’opé-ration max au résultat de chaque filtre.L’agrégation a plusieurs avantages dont l’assurance que lamatrice en sortie sera d’une taille fixe égale au nombre defiltres utilisés (une agrégation par filtre). Ainsi, cela permetd’utiliser des phrases de tailles différentes et des tailles defiltres différents pour obtenir toujours les mêmes dimen-sions en sortie.En plus de cela, cette méthode fait elle aussi de la sélectionde caractéristiques car chaque filtre essaiera de détecter unecaractéristique spécifique (comme l’utilisation des marquesnégatives).

Figure 4. Illustration d’un CNN pour une classification de texte

Analyse de sentiment Twitter

3.2.4. ARCHITECTURE

Nous utilisons le prétraitement expliqué dans la sectionprécédente, segmentons nos phrases et les transformonsen matrice de phrases, chaque ligne est une représentationvectoriel de chaque token. Nous utilisons un modèle pré-entraîné de GloVe (Jeffrey Pennington, Richard Socher,and Christopher D Manning., 2014) (Global Vectors forWord Representation), un modèle indexant les mots dansun vocabulaire. Nous notons la dimension d’un vecteur motpar d et si la taille d’une phrase est notée s, alors la dimen-sion de la matrice de la phrase sera s × d. De plus, nousutilisons la méthode du zero-padding pour rendre la taillede chaque vecteur mot fixe et égale à d. Ainsi, nous pou-vons traiter chaque phrase comme étant une image et ap-pliquer des filtres comme définis plus haut. Il est conseilléd’utiliser des filtres de largeur équivalente à la dimensiondes vecteurs (i.e., d). Après l’étape de convolution, nousutilisons la méthode du max pooling que nous donnons àune fonction d’activation de type softmax pour générer laclassification finale. Finalement, l’optimisation de notre ré-seau est fait par la méthode Adam (Kingma, D. P., & Ba, J.L., 2015) qui calcule un taux d’apprentissage pour chaqueparamètre.

4. RésultatsNous comparons les résultats obtenus entre la méthode degradient boosting et le réseau de neurones convolutifs avecdifférents pré-traitements.Nous utilisons une sous-partie des données, soient 500000données aléatoirement tirées sur les 1600000 disponibles,pour que les analyses soient plus rapides (et nous avons vuque les résultats sont peu différents avec plus de données).

4.1. XGboost

Nous comparons les résultats avec et sans l’utilisation de laméthode du hashing trick, nous regardons les résultats avecl’utilisation de SentiWordNet. De plus, nous ajoutons uneméthode de sélection de caractéristiques. Finalement, nouscomparons les résultats lorsque nous normalisons les textesavec un tf-idf.

4.1.1. HASHING TRICK

Nous commençons par présenter, dans le tableau 3, les ré-sultats que nous avons obtenus lors de l’utilisation du ha-shing trick. Nous montrons que la force de la méthode ré-side essentiellement dans la réduction du temps de vectori-sation.

SentiWordNet hashing précision-score v. entraînement v. test

0 0.7966 17.95 0.020 X 0.782 11.3 0.021 0.7994 16.72 0.011 X 0.7855 12.9 0.022 0.7984 16.91 0.012 X 0.7838 12.4 0.01

Table 3. Temps de vectorisation (v.) en secondes avec et sans Ha-shing trick

4.1.2. AMÉLIORATION DES NÉGATIONS

Nous avons tester trois modèles (pour chaque calcul descores de SentiWordNet et sans) avec simultanément le pa-ramètre négation. Les scores obtenus sont écrits dans latable 4.Nous pouvons remarquer que l’amélioration des formes né-gatives seule fait baisser la précision du modèle mais enajoutant les scores de polarité de SentiWordNet, la préci-sion augmente jusqu’à 79,94%.

SentiWordNet précision-score

0 0.78271 0.79942 0.7939

Table 4. Negation avec SentiWordNet

4.1.3. SÉLECTION DE CARACTÉRISTIQUES

Nous montrons maintenant l’efficacité de la sélection decaractéristiques. Nous améliorons le meilleur score obtenudans la sous-partie précédente en ajoutant la sélection decaractéristiques avec SelectKBest (k = 500000) et nouscomparons avec le hashing trick (Figure 5).

SentiWordNet hashing S.C précision-score

1 X 0.7811 X 0.802

Table 5. Sélection de caractéristiques (S.C) vs hashing trick (avecnégation)

4.1.4. TF-IDF

Nous essayons d’ajouter la normalisation des textes avec letf-idf. C’est une méthode très souvent utilisée dans la clas-sification de textes qui donne de l’information par rapportà l’occurrence des mots.Nous utilisons le meilleur modèle obtenu aux étapes précé-dentes et normalisons en tf-idf (Figure 6).

Analyse de sentiment Twitter

tf-idf précision-score

0.802X 0.7883

Table 6. TF-IDF

Un problème rencontré lors de l’utilisation du tf-idf sur destweets vient de la longueur des tweets. Cela crée une bornesupérieure au TF (fréquence des termes) qui réduit l’impor-tance des poids. De plus, le vocabulaire utilisé sur Twitterest immense, de nouveaux mots sont souvent créés et celarend la représentation vectorielle des tweets problématique.

4.1.5. UN MOT SUR LE HASHING TRICK

La méthode du hashing trick offre un gain de temps pourla vectorisation non négligeable. Nous voyons surtoutla différence sur les corpus contenant beaucoup de dedonnées à vectoriser. Plus le vocabulaire est grand, plusla matrice contenant le sac de mots sera grande. En effet,chaque ligne aura la taille du vocabulaire alors que chaqueligne dans le hashing trick ne contient que les mots duvocabulaire qui constituent la phrase. Néanmoins, laperformance est souvent réduite.

La Table 7 donne le temps de vectorisation avec et sansla méthode du hashing trick sur le corpus entier (1600000tweets). Nous voyons la différence énorme qu’apporte cetteméthode (plus de 21 minutes contre seulement 24 secondespour un taux de différence de performance d’environ 2%en moyenne).

hashing trick v. train time v. test time

1284s 33sX 24s 1.36s

Table 7. Hashing trick - temps de vectorisation

4.1.6. INTERPRÉTATIONS

A chaque fois que la technique du hashing trick est uti-lisée, le modèle perd en précision. Nous avons expliqué,dans la sous-section sélection de caractéristiques, l’utili-sation d’une technique qui consiste à supprimer les motstrop ou pas assez fréquents dans le vocabulaire. Cette tech-nique n’est utilisée que lorsque la méthode de hashing trickn’est pas utilisée. La suppression de mots pourrait doncêtre une explication quant à la différence de performancedu modèle. Utiliser ou non le hashing trick afin de gagnerdu temps lors de la vectorisation est une question de choixentre vitesse et performance.L’utilisation de SentiWordNet produit une amélioration du

modèle, les résultats sont meilleurs lorsqu’un seul score estutilisé. L’amélioration des formes négatives permet égale-ment d’augmenter le score de précision. Ces deux para-mètres sont nécessaires pour obtenir un modèle adéquat.Finalement, le meilleur score obtenu pour xgboost est de0.802% avec la sélection de caractéristiques, la négation etun seul score pour SentiWordNet sur la base de donnéesSentiment140.

4.2. CNN

Nous transformons les phrases en séquences et essayonsl’amélioration des négations. Nous comparons aussi les ré-sultats avec et sans GloVe.Nous n’utilisons ni SentiWordNet ni la sélection de carac-téristiques car les CNN ne prennent que des séquences.Nous utilisons une taille de lots de 500 et 250 filtres delongueur 3.

4.2.1. AMÉLIORATION DES NÉGATIONS

Nous essayons l’amélioration des négations appliquée auxréseaux de neurones convolutifs. Nous voyons une très lé-gère augmentation (10−3) de la précision du modèle (Fi-gure 8).

négation précision-score

0.771X 0.777

Table 8. négation sur les CNN

4.2.2. UTILISATION DE GLOVE

GloVe est un modèle pré-entraîné sur les phrases et motsde Wikipédia pour le plongement de mots (word embed-dings). Chaque mot est représenté par un vecteur de lon-gueur d = 100 et représente la corrélation entre les mots.Dans notre réseau de neurones, GloVe nous permet d’ini-tialiser nos vecteurs aux poids correspondant à ceux deGloVe. Nous comparons donc l’utilisation de ce modèleavec une initialisation des poids uniforme par la racine car-rée du nombre d’entrée (Lecun initialisation) dans la figure9.Glove permet encore une légère amélioration de notre mo-dèle.

GloVe précision-score

0.7883X 0.7904

Table 9. GloVe

Analyse de sentiment Twitter

4.3. Précision, rappel et F1-score

La précision seule ne permet généralement pas de garantirque le modèle fonctionne correctement. C’est pourquoi latable 10 montre les résultats en précision, rappel et f1-scorequi rendent la cohérence du modèle plus précise.

XGBoost précision rappel f1-score support

positif 0.83 0.75 0.79 177negatif 0.78 0.85 0.81 182

0.80 0.80 0.80 359

CNN précision rappel f1-score support

positif 0.77 0.81 0.79 177negatif 0.81 0.76 0.79 182

0.79 0.79 0.79 359

Table 10. Précision, rappel et F1-score

Les résultats des deux modèles sont très proches mais leCNN a besoin de moins de pré-traitement pour atteindreun très bon score. De plus, le CNN entraîne le modèlebeaucoup plus rapidement (3 époques sont suffisantes etprennent environ 3 minutes) que xgboost (environ 35 mi-nutes).

5. ApplicationDans cette section, nous présentons application permettantde donner l’avis des utilisateurs de Twitter sur un sujetdonné.Nous expliquons nos motivations à la création de cette ap-plication et nous détaillons son fonctionnement.

5.1. Introduction

Les utilisateurs de Twitter postent des messages de leursopinions en temps réel sur des sujets variés, parlent deleurs problèmes courants, se plaignent ou expriment leurssentiments sur des produits qu’ils utilisent tous les jours.Plusieurs grandes entreprises utilisent les réseaux sociauxpour demander l’avis de leurs utilisateurs et avoir un sen-timent général sur leurs produits. Ces mêmes compagniespeuvent améliorer leurs productions grâce aux avis postéssur ce genre de plate-formes. Nous créons donc une tech-nologie permettant de détecter et rendre l’opinion générald’un thème (un produit, un film ou même une personnalité).

5.2. Méthode

5.2.1. PRINCIPE

Après la phase d’apprentissage de nos meilleurs modèlessur le corpus entier de 1600000 tweets, nous sauvegardonsles modèles pour pouvoir les utiliser pour prédire defutures données.Les données à prédire sont des données en temps réelsprises de Twitter grâce à son API (et le module Tweepy 3).L’API Twitter donne certaines limites qui nouscontraignent à récupérer seulement 1000 tweets.

5.2.2. THÈME ET MODÈLES À CHOISIR

Nous demandons à l’utilisateur de rentrer un thème sur le-quel il souhaite avoir l’opinion des utilisateurs de Twitter.Le thème étant simplement une suite de mot (un seul motau minimum) qui sera en commun à tous les tweets té-léchargés. L’utilisateur choisi ensuite le modèle à utiliserpuis peut choisir d’utiliser la ressource lexicale SentiWord-Net pour enregistrer la polarité des mots qui servira à l’af-fichage. Cette description correspond à la Figure 5.

Figure 5. Thème à rechercher

5.2.3. PRÉ-TRAITEMENT

Lorsque les tweets sont téléchargés, ils passent par la phasede pré-traitement qui correspond au modèle utilisé.

— Si le modèle de gradient boosting est sélectionné,les phrases auront l’amélioration des négations,SentiWordnet, la sélection de caractéristiques et latransformation en sac de mots.

— Si le modèle du réseau de neurones convolutifsest sélectionné, les phrases auront l’améliorationdes négations, la transformation des phrases en sé-quences, le zero-padding et utilisera le plongementde mots avec GloVe.

Même si nous ne téléchargeons que 1000 tweets, lepré-traitement est long pour une application (environ 40secondes). Pour un déploiement en production de l’appli-cation, nous réduirions le nombre de tweets téléchargés(une centaine).

3. http ://www.tweepy.org/

Analyse de sentiment Twitter

5.3. Affichage

Pour montrer le bon fonctionnement de l’application,nous montrons d’abord deux thèmes qui affichent unsentiment distingué des utilisateurs de la plate-forme puisnous affichons des thèmes qui pourraient être utiles auxentreprises concernées.

Chaque image contient trois éléments à prendre en compteet deux couleurs.La couleur verte correspond à un sentiment positive alorsque la couleur rouge correspond à un sentiment négatif.Les trois éléments sont quant à eux dénotés par les numé-ros 1, 2 et 3 sur la Figure 6 et nous allons maintenant lesdécrire.

1. Le premier élément donne le pourcentage de pola-rité des au plus 1000 tweets téléchargés (un thèmepeu commun n’aura pas forcément 1000 tweets).

2. Le deuxième élément donne le nombre de tweetspositif et négatif téléchargés.

3. Le troisième et dernier élément affiche les 50tweets les plus récents sur les 1000 téléchargés.

Nous pouvons remarquer deux choses sur le dernier élé-ment. Tout d’abord, nous voyons la date correspondant auxtweets téléchargés pour chaque ligne. Ensuite, nous pou-vons voir en gras quelques mots (essentiellement le motlove). Ces mots correspondent au calcul de polarité effec-tué par SentiWordNet.Pour chaque mot des tweets, nous sauvegardons ses scoresde polarité positif et négatif puis pour un sentiment d’untweet prédit, nous affichons en gras, avec une échelle devaleur, le mot seulement pour le sentiment donné.Par exemple, dans une phrase positive, le mot love sera engras avec une échelle de gras plus grande qu’un mot ayantun score positif plus faible et, dans une phrase négative,love ne sera pas mis en gras.

5.3.1. THÈMES EXHIBÉS

Nous montrons le bon fonctionnement de notre applica-tion pour les deux images suivantes Figures 6 et 7. Nosmeilleurs modèles ont 80% de précision et ne sont pas par-faits, c’est pourquoi nous pouvons trouver de mauvaisesprédictions.

Thème positif : LOVE

Nous voyons que le thème est à 80% positif et, donc,plus de 800 tweets ont été prédits comme étant de sentimentpositif. C’est à quoi nous nous attendions.

Figure 6. Love

Thème négatif : HATE

Nous voyons que le thème est à 88% négatif et, donc,quasiment 900 tweets ont été prédits comme étant de senti-ment négatif. C’est à quoi nous nous attendions.

Figure 7. Hate

5.3.2. THÈMES UTILES

Dans les images suivantes (Figure 8 et 9), nous prédisonsdeux entités pouvant être utiles aux concernés.

Le premier thème choisi est celui des Oscars téléchargésau lendemain de la soirée. Le second thème est l’entrepriseComcast étant connue pour être l’entreprise la plus détestéedes États-Unis 4 (c’est un fournisseur d’accès à internet).

4. http://finance.yahoo.com/news/america-most-hated-companies-110032495.html

Analyse de sentiment Twitter

Au lendemain de la soirée des Oscars 2017

La soirée s’étant dans l’ensemble bien déroulée, il pour-rait être essentiel que les organisateurs de l’événement s’in-téressent au sentiment ressenti par les utilisateurs de Twit-ter.Nous obtenons un score à 72% positif. Un score donc plutôtpositif (rappelons qu’il y a eu une erreur lors de l’annoncede l’oscar pour le meilleur film).

Figure 8. Oscars

Sentiment vis à vis de Comcast

Comcast obtient dans la plupart des sondages américain,l’oscar de la pire entreprise états-unienne. Il peut être inté-ressant d’analyser les résultats de l’analyseur de sentimentsur ce thème pour voir ce que les utilisateurs des réseauxsociaux en pensent.Nous obtenons un score à 67% négatif.

Figure 9. Comcast

6. ConclusionNous avons implémenté deux méthodes liées à l’analyse desentiments avec des données provenant de la plate-formeTwitter.Nous avons constaté que les deux algorithmes donnent desrésultats similaires. Avec le gradient boosting, nous pou-vons modifier de nombreux paramètres et ajouter des ca-ractéristiques que le réseau de neurones convolutifs ne peutpas prendre en compte. Les deux méthodes sont rapidesmais le réseau de neurones l’est beaucoup plus.L’ajout de nouvelles caractéristiques et la sélection decaractéristiques permettent d’améliorer nos résultats etd’autres pré-traitements pourraient être appliqués pour cap-ter plus précisément le sentiment d’une phrase.Sur les réseaux sociaux, les utilisateurs donnent très sou-vent leur opinion sur différents thèmes. C’est pourquoinous avons développé une application permettant d’analy-ser les sentiments des utilisateurs de Twitter sur des mes-sages récents.

RéférencesDas S. and Chen M. Yahoo! for Amazon : Extracting mar-

ket sentiment from stock message boards. 2001.

Esuli A, Sebastiani F. SentiWordNet : A Publicly AvailableLexical Resource for Opinion Mining. 2006.

Freund Y., Schapire R. A decision-theoretic generalizationof on-line learning and an application to boosting. 1997.

Friedman J. . Greedy boosting approximation : a gradientboosting machine. 2001.

Friedman J., Hastie T., Tibshirani R. . Additive logisticregression : a statistical view of boosting. 2000.

Go, Alec and Bhayani, Richa and Huang, Lei. Twitter Sen-timent Classification using Distant Supervision. Proces-sing, pp. 1–6, 2009.

Jeffrey Pennington, Richard Socher, and Christopher DManning. Glove : Global vectors for word representa-tion. Proceedings of the Empiricial Methods in NaturalLanguage Processing. 2014.

Kingma, D. P., & Ba, J. L. Adam : a Method for StochasticOptimization. 2015.

Pang, B., Lee, L. and Vaithyanathan, S. Thumbs up? : sen-timent classification using machine learning techniques.2002.

Pang, Bo, and Lillian Lee. Opinion mining and sentimentanalysis. 2008.

Tianqi Chen, Carlos Guestrin. XGBoost : A Scalable TreeBoosting System. 2016.