analyse_sentiment_rapport

Transcription

analyse_sentiment_rapport
F3B403A
Fouille de données
Mehdi ERRAKI
Hatim HIDAR
Lisa MALIPHOL
L’ANALYSE DES SENTIMENTS
La détection des opinions et l’analyse
des sentiments sur les critiques des
films
Année 2014-2015
Sommaire
L’ANALYSE DES SENTIMENTS ............................................................................................. 1
A PROPOS ......................................................................................................................... 4
I.
INTRODUCTION ....................................................................................................... 5
EMERGENCE DE L’ANALYSE DES SENTIMENTS ................................................................................. 5
OBJECTIF : CLASSIFICATION DES OPINIONS PAR APPRENTISSAGE AUTOMATIQUE ...................................... 5
II.
COMPRENDRE LES ENJEUX METIERS ........................................................................ 5
1.
OBJECTIFS OPERATIONNELS ............................................................................................. 5
2.
ANALYSE DE LA SITUATION .............................................................................................. 6
3.
OBJECTIFS DATA MINING ................................................................................................ 6
4.
PLAN DU PROJET ........................................................................................................... 7
III.
COMPRENDRE LES DONNEES ................................................................................... 7
1.
RECUPERATION DU CORPUS ............................................................................................. 7
2.
DESCRIPTION DU CORPUS ............................................................................................... 7
3.
DESCRIPTION DES DOCUMENTS ........................................................................................ 8
4.
EXPLORATION DU CORPUS .............................................................................................. 8
IV.
ITERATION 1 : SACS DE MOTS BASIQUE (OCC OU FREQ) AVEC/SANS STEMMING .... 10
1.
PRETRAITEMENT - REPRESENTATION DES DOCUMENTS « BAG OF FEATURES » ............................. 10
2.
PRETRAITEMENT - SELECTION DES « FEATURES » : AUCUN FILTRAGE AVEC/SANS STEMMING .......... 10
3.
a)
b)
MODELISATION ET EVALUATION ..................................................................................... 11
Cross validation ............................................................................................................ 11
Evaluation : Neg f-score................................................................................................ 11
V.
ITERATION 2 - REDUCTION DES FEATURES - ELIMINATION DES STOP WORDS –
PONCTUATION – NOMS PROPRES ................................................................................... 12
1.
PRETRAITEMENT - ELIMINATION DES « STOPWORDS » ........................................................ 13
2.
PRETRAITEMENT - ELIMINATION DES « NOMS PROPRES »..................................................... 13
3.
PRETRAITEMENT - ELIMINATION DE LA « PONCTUATION » .................................................... 13
4.
MODELISATION ET EVALUATION ..................................................................................... 13
VI. ITERATION 3 - REDUCTION DES FEATURES – SELECTION DES MEILLEURS MOTS –
MEILLEURS ADJECTIFS/GERONDIFS (POS) ........................................................................ 14
1.
PRETRAITEMENT - SELECTION DES « FEATURES » APPORTANT LE PLUS GRAND GAIN D’INFORMATION 14
1
2.
PRETRAITEMENT - SELECTION DES « ADJECTIFS/GERONDIFS » APPORTANT LE PLUS GRAND GAIN
D’INFORMATION .................................................................................................................. 14
3.
MODELISATION ET EVALUATION ..................................................................................... 15
VII.
ITERATION 4 – INTEGRATION DES BI-GRAMS ......................................................... 15
1.
Prétraitement – Intégration des bi-grams .............................................................. 15
2.
Modélisation ET EVALUATION ..................................................................................... 16
VIII. ITERATION 5 – SCORING TF-IDF ET/OU BI-GRAMS ET/OU MEILLEURS MOTS ........... 16
1.
Prétraitement – sac de mots avec des scores TF-IDF ............................................... 16
2.
Modélisation et évaluation .................................................................................... 17
IX.
RESUME DES MEILLEURS RESULTATS ..................................................................... 17
X.
CONCLUSION ET PERSPECITVES.............................................................................. 18
XI.
SOURCES BIBLIOGRAPHIQUES................................................................................ 20
ANNEXE .......................................................................................................................... 21
MÉTHODE SCORING CHI-SQUARE .................................................................................... 21
2
Tables des figures
Figure 1 - mots plus fréquents du corpus .................................................................................. 8
Figure 2 - mots les plus discriminants du corpus ....................................................................... 9
Figure 3 - IT1 NB SVM ............................................................................................................... 12
Figure 4 - IT1 DT et RF ............................................................................................................. 12
Figure 5 - IT2 NB SVM .............................................................................................................. 13
Figure 6 – IT2 DT et RF.............................................................................................................. 14
Figure 7 - IT3 NB SVM ............................................................................................................... 15
Figure 8 - IT3 DT et RF ............................................................................................................. 15
Figure 9 - IT4 NB SVM ............................................................................................................... 16
Figure 10 - IT4 DT et RF ............................................................................................................ 16
Figure 11 - IT5 NB SVM RF ........................................................................................................ 17
Figure 12 - résumé des meilleurs résultats .............................................................................. 18
3
A PROPOS
Ce document correspond au rapport d’un projet de text mining réalisés par des élèves en
troisième année à Telecom Bretagne. Le code source en python des travaux réalisés sera
publié sous github, et peut être fourni sous forme de fichier à la demande du lecteur.
Le sujet du projet est celui de l’analyse des sentiments.
Ce rapport est structuré conformément à la méthodologie CRISP-DM qui a été suivie pour
réaliser le projet.
4
I.
INTRODUCTION
EMERGENCE DE L’ANALYSE DES SENTIMENTS
Avec l’émergence du web 2.0, les internautes sont de plus en plus invités à exprimer leurs
opinions à propos de différents sujets dans des réseaux sociaux, des sites de e-commerce,
des sites d’actualités, des forums, etc. La majeure partie de ces informations, qui décrivent
des sentiments, devient l’objet d’études dans plusieurs domaines de recherche tel que : « La
détection des opinions et l’analyse des sentiments ».
La fouille des opinions ou l’analyse des sentiments est une tâche du traitement de langage
naturel qui consiste à extraire de l’information à partir de données texte non structurées, et
fait partie du vaste domaine de la classification de documents qui consiste à classifier des
documents dans deux ou plusieurs catégories (thème, domaine…). Dans l’analyse des
sentiments cette catégorisation correspond à la polarisation des opinions dégagées à partir
du contenu du document qui peut être binaire (positif, négatif), ou avec plus de granularité
(positif, neutre, négatif), ou encore (très positif, positif, neutre, négatif, très négatif).
OBJECTIF : CLASSIFICATION DES OPINIONS PAR APPRENTISSAGE AUTOMATIQUE
Les premières approches de détection de sentiments ont été basées sur des modèles générés
par les Hommes, qui consistent à demander à des êtres humains de proposer par intuition deux
listes de mots qui caractérisent des sentiments positifs et d’autres qui caractérisent des
sentiments négatifs. Ensuite la prédiction du sentiment dégagé dans un nouveau document est
basée sur des statistiques relatives à l’usage de ces mots uniquement [4].
Les travaux de Pang et Lee en 2002 ont démontré que les approches basées sur l’introspection
et l’extraction d’informations à partir des statistiques tirées d’un corpus de documents
s’avéraient plus efficace et permettaient de dévoiler certaines unités syntaxiques très
révélatrices quant à la polarité des opinions, mais qui n’étaient pas intuitives, et donc négligées
dans les approches basés sur l’intuition de l’homme.
L’objectif de notre étude est de pouvoir appliquer et comparer certaines méthodes de
classement de documents par apprentissage automatique pour la détection de la polarité
binaire des sentiments, en prenant en considération et en comparant plusieurs types de
prétraitements et de présentation des données textuelles.
La méthodologie suivie est celle du CRISP-DM dont les différentes étapes correspondent aux
différentes parties suivantes.
COMPRENDRE LES ENJEUX METIERS
II.
1. OBJECTIFS OPERATIONNELS
Notre projet d’analyse de sentiment s’adresse aux entreprises qui souhaitent, au sein de leur
département CRM, pouvoir :

tout d’abord détecter automatiquement la polarité des sentiments constatés dans
un ensemble d’avis clients relatifs à un produit ou un service donné, et récoltés sous
un format textuel non structuré depuis un support donné (site e-commerce, réseau
social)
5

les employés CRM dédiés sont ensuite automatiquement avertis sur tous les avis
négatifs (uniquement)

Ces avis négatifs sont ensuite analysés un par un pour pouvoir remonter les raisons
de la non satisfaction du client quant au service ou produit en question.
Les employés CRM n’étant pas avertis sur les avis détectés comme positifs (en général en
très grand nombre par rapport aux avis négatifs), les enjeux seraient donc de

Maximiser le nombre d’avis négatifs pertinents et détectés par rapport à tous ceux
qui sont réellement négatifs (rappel) : afin de ne pas rater des avis négatifs et donc
éventuellement des soucis d’insatisfaction client à remonter.

Maximiser le nombre d’avis négatifs pertinents et détectés par rapport à tous ceux
qui ont été détectés comme négatifs (précision) : afin de minimiser la charge de
travail des employés CRM qui vont remonter les soucis constatés dans les avis
négatifs.
Une combinaison de ces deux enjeux devrait donc servir de base pour l’évaluation des
méthodes qui seront proposées.
2. ANALYSE DE LA SITUATION
Nous sommes un groupe de trois étudiants de Telecom Bretagne pour effectuer ce projet.
Nous utilisons des bibliothèques libres disponibles sous python : NLTK et Scikit-learn, qui
disposent de modules adaptés au traitement du langage naturel et à l’apprentissage
automatique pour la classification des documents.
Compte tenu des profils techniques des différents membres du groupe, un travail minimal
est requis pour la prise en main du langage python.
Cependant, un travail conséquent de recherche bibliographique est jugé nécessaire pour
comprendre les grands enjeux du traitement du langage naturel, qui vont définir tous les
prétraitements nécessaires à effectuer avant de pouvoir appliquer des modèles
d’apprentissage automatique.
Quant aux modèles à appliquer, le cours suivi dans le cadre du niveau 4 de la filière ISA
facilitera leur compréhension et leur mise en place.
Par conséquent, compte tenu des trois derniers éléments, le volume horaire consacré à ce
projet a des fortes chances d’excéder celui qui lui y est dédié dans le cadre de la formation
ISA. Sa détermination en amont est difficile, un travail itératif agile et adaptatif est donc
nécessaire pour mener à bien ce projet.
Enfin, par rapport aux données qui sont utilisées, celles-ci sont en accès libre pour tout
besoin académique ou de recherche, et nous ne souffrons donc d’aucune restriction légale.
3. OBJECTIFS DATA MINING
L’objectif de notre projet de fouille d’opinions est de pouvoir évaluer et comparer :

Plusieurs prétraitements de langage naturel à appliquer aux données d’apprentissage
brutes (lors de l’apprentissage), ainsi qu’aux données brutes pour laquelle
s’effectuera la prédiction en environnement de production (après le déploiement)

Certains modèles d’apprentissage automatique supervisé afin d’en dévoiler ceux qui
sont les plus adaptés aux problématiques de prédiction de sentiments.
6
Ces deux opérations de comparaison doivent s’effectuer de façon synergique afin de
ressortir les meilleures combinaisons de prétraitement et d’apprentissage à proposer au
client avec différents niveaux de fiabilité et de simplicité. Celui-ci pourra ensuite choisir celle
qui répond le plus à son besoin.
La plus–value de notre proposition sera vérifiée si elle permet de répondre aux besoins
métiers relevés dans la partie I-1.
4. PLAN DU PROJET
Le projet se déroule en deux grandes parties

recherches bibliographiques sur le traitement du langage naturel et état de l’art des
travaux déjà effectuées

mise en place du projet selon la méthode CRISP-DM (dont la présente partie)
o itérativement (notamment à partir de CRISP-DM 3), mise en commun
régulière et adaptation continue en fonction des résultats obtenus
III.
COMPRENDRE LES DONNEES
1. RECUPERATION DU CORPUS
Le corpus utilisé provient des travaux de Bo Pang et Lillian Lee (2004) qui sont des
enseignants chercheurs de l’université de Cornell. L’ensemble du corpus, intitulé « polarity
dataset v2.0 », est téléchargeable sous forme d’un fichier compressé sur le lien suivant :
http://www.cs.cornell.edu/People/pabo/movie-review-data/
Ce dernier contient deux sous-dossiers nommés « pos » et « neg », contenant chacun 1000
fichiers « .txt ».
Le corpus est également accessible depuis les deux bibliothèques Python utilisées.
2. DESCRIPTION DU CORPUS
Le corpus contient 2000 documents, correspondant chacun à une critique de presse en
anglais d’un film donné. L’ensemble de ce document est uniformément distribué entre les
deux catégories de sentiments : 1000 positifs et 1000 négatifs.
L’extraction de ces documents depuis les pages HTML originales des sites des critiques, ainsi
que leur labélisation binaire ont été préalablement effectuées par des chercheurs du
département Cornell/DCS/NLP en utilisant un système automatique de labellisation. Ce
système se base sur la note donnée par le critique au film pour lequel il soumet la critique.
Des règles ad-hoc sont utilisées pour cet extraction/labélisation:



Système 5 étoiles : positif si supérieur à 3 étoiles et demie/ négatif si inférieur à 2
étoiles
Système 4 étoiles : positif si supérieur à 3 étoiles / négatif si inférieur à une étoile et
demie
Système de lettre a-e : positif si au « a » ou « b » / négatif au-delà de « d »
7
La possibilité d’extraire/labéliser de façon automatique les critiques de films, ainsi que le
nombre important de plateformes dédiées à la publication de ces critiques, en fait le choix
numéro 1 pour la plupart des projets de classification de sentiments. Nous avons décidé de
ne pas déroger à cette tendance, sachant que pour répondre aux besoins métiers relevés
cités précédemment, un corpus avec des documents de taille moins grande aurait été plus
adapté.
3. DESCRIPTION DES DOCUMENTS
Chaque document du corpus correspond à un ensemble de lignes séparées par des « \n »
correspondant chacune au texte d’une phrase complète formaté en UTF-8.
Hormis la transformation des majuscules en minuscules, aucun autre prétraitement n’a
préalablement été effectué. Le texte est donc dans son état brut et contient potentiellement
tous les caractères UTF-8.
La longueur moyenne d’un document est de 1590 mots et de 88 phrases.
4. EXPLORATION DU CORPUS
Les différentes unités syntaxiques (mots, nombres, ponctuation) contenus dans le corpus
serviront de base aux modèles d’apprentissage et correspondent aux variables explicatives.
Une exploration de ces unités est donc nécessaire.

Le nombre des unités syntaxiques contenues dans le corpus : 1 583 820

Les unités syntaxiques les plus fréquentes (utilisation du module nltk.probability) :
80000
70000
60000
50000
40000
30000
20000
10000
0
Figure 1 - mots plus fréquents du corpus
Nous observons que les unités syntaxiques les plus fréquentes du corpus sont des marques
de ponctuation, ainsi que des mots neutres comme les déterminants, les prépositions, les
adjectifs possessifs et les pronoms possessifs. Un premier réflexe pourrait être de s’en
débarrasser, mais il faudrait être vigilant quant à certaines unités qui peuvent s’avérer très
révélatrices de la polarisation des opinions. Ceci nous conduit à l’exploration suivante :

Les unités apportant les plus grands gains d’information (utilisation du module
nltk.collocations) :
8
Un scoring utilisant le métrique « chi-square » disponible dans la classe
« BigramAssocMeasures class » permet de calculer pour chaque unité syntaxique un score
qui reflète le degré de présence de cette unité syntaxique dans une catégorie donnée par
rapport à sa présence générale dans tout le corpus et par rapport aux nombres
d’occurrences des autres mots de sa classe, ainsi le nombre total des occurrences des mots
dans le corpus. Plus ce taux est élevé, plus le mot a tendance à être présent dans une seule
classe tout en étant très déterminant comparé aux autres mots très fréquents dans sa
classe. Le code source de cette méthode est donné en annexe.
900
800
700
600
500
400
300
200
100
0
Figure 2 - mots les plus discriminants du corpus
Nous constatons que :

les adjectifs négatifs sont ceux qui disposent du plus grand gain d’information : ce qui
peut être expliqué par le fait qu’on a plus tendance à utiliser de la négation avec les
adjectifs positifs, ce qui induit un certain équilibre dans la présence de ces adjectifs
dans les deux classes, et qu’on n’a cependant tendance à utiliser des adjectifs
négatifs que dans les avis négatifs

certaines marques de ponctuation « ?, ! » se révèlent très indicatrices : les
interrogations et les exclamations accompagnent généralement des sentiments de
non satisfaction. Elles ne doivent pas être négligées dans les modèles à construire.

il ne faudrait pas négliger les verbes : comme «waste »

un nettoyage des noms propres et des noms de films se révèle nécessaire :
« godzilla », « jackie », « batman » , etc.
9
IV.
ITERATION 1 : SACS DE MOTS BASIQUE (OCC OU FREQ)
AVEC/SANS STEMMING
La suite des étapes de la méthodologie CRISP (prétraitement, modélisation et évaluation)
sont exécutées sous forme de plusieurs itérations. Chacune des itérations correspond à un
ensemble de prétraitements spécifiques qui ont été appliqués. Dans les prochaines parties
nous détaillons les résultats obtenus dans chacune de ces itérations. Le lecteur peut
directement se référer à la dernière partie du rapport qui résume les résultats obtenus.
1. PRETRAITEMENT - REPRESENTATION DES DOCUMENTS « BAG OF FEATURES »
Pang et lee (2002) avaient constaté que la manière la plus efficace de décrire un texte, pour
une tâche de classement d’opinion, était sous forme de « sac de mots ».
Soient {f1,…,fm} un ensemble prédéfini de « features » correspondant à des unités
syntaxiques données (mots, ponctuation, nombres).
Si le document d contient par exemple uniquement les features « f5 » et « f15 » parmi ceux
prédéfinis, il sera représenté par [ (f5, True), (f15, True) ] ou sous forme de [ (f5, FREQ(f5) ) ,
(f15, FREQ(f15) ) ].
Dans la première itération deux représentations en sacs de mots sont explorées : avec
l’occurrence binaire et avec la fréquence des occurrences dans le document.
Enfin, ces représentations seront programmées à la main sous la bibliothèque NLTK, ou en
utilisant la fonction « vectorizer » sous SkLearn.
2. PRETRAITEMENT - SELECTION DES « FEATURES » : AUCUN FILTRAGE AVEC/SANS
STEMMING
Pour constituer la liste des « features » {f1,…,fm}, une première approche serait de
sélectionner tous les mots du corpus. Mais cela peut avoir certains inconvénients
(complexité et lenteur du modèle, mots neutres, … )
Dans la première itération, les « features » correspondent à l’ensemble des unités
syntaxiques présentes dans le corpus d’apprentissage. Une opération de « stemming » est
aussi appliquée afin d’en évaluer l’effet.
Le stemming (ou la désuffixation) consiste à transformer des flexions en leur radical ou
racine. La racine obtenue n’est pas forcément un mot lexicalement correct. La stemmisation
permet notamment aussi de réduire la taille du sac de « features » et donc la taille du
modèle.
Sous NLTK, le stemmer de Porter est utilisé.
La lemmatisation, qui consiste à réduire tous les mots à des lemmes de bases
syntaxiquement corrects, ne sera pas utilisée ici. En effet, bien que très utile dans la
classification des documents en général, ce prétraitement peut éliminer des préfixes de
négation et inverser le sens d’un mot donné, et donc sa contribution à la polarité du
sentiment dégagé.
10
3. MODELISATION ET EVALUATION
a) Cross validation
Au regard de la taille insuffisante de l’échantillon d’apprentissage (2000 documents) et de la
taille importante de l’ensemble des « features », nous avons opté pour une évaluation des
différents modèles retenus par le biais d’une validation croisée en cinq itérations avec un
échantillonnage stratifié.
Les modèles retenus sont :
-
Naives Bayes (mutlinomial)
-
SVM (C=1, noyau linéaire, squared hinge loss)
-
Un arbre de décision (entropy cutoff 0.05, support cutoff 10, depth cutoff 30)
-
Une forêt décisionnelle (400 trees, max features 12)
Le tunning des différents modèles lorsqu’il est nécessaire se fait lors de la cross-validation.
Nous aurions pu écarter en amont un échantillon de test qui servirait de base à une
évaluation indépendante du corpus d’apprentissage, et n’utiliser la cross-validation que pour
optimiser les modèles. Mais vu la faible taille du corpus à notre disposition, et le grand
nombre de features (plus d’un million), nous avons décidé de garder l’ensemble du corpus
pour la cross-validation. Celle-ci servira donc d’une part à optimiser le paramétrage des
modèles, et d’autre part à évaluer les différents modèles.
b) Evaluation : Neg f-score
Nous rappelons les enjeux métiers décrits dans l’étape 1 :

Maximiser le nombre d’avis négatifs pertinents et détectés par rapport à tous ceux
qui sont réellement négatifs (rappel) : afin de ne pas rater des avis négatifs et donc
éventuellement des soucis à remonter

Maximiser le nombre d’avis négatifs pertinents et détectés par rapport à tous ceux
qui ont été détectés comme négatifs (précision) : afin de minimiser la charge de
travail des employés CRM qui vont remonter les soucis constatés dans ces avis
négatifs (surtout que les nombre d’avis positifs est généralement très grand par
rapport au nombre d’avis négatifs)
Le f-score négatif combinant le rappel et la précision de la prédiction négative sert donc
de ratio d’évaluation des différents modèles et/ou prétraitements. Les poids sont égaux
entre le rappel et la précision.
Les résultats de la première itération sont donnés dans les tableaux suivants :
11
méthode
d'extraction
des features
Occurrence
vs
Fréquence
b.o.w unigram
basique
sans filtrage
Naive Bayes
SVM
Pos
Fscore
Neg
total
FScore Accuracy
Pos
Fscore
Neg
total
FScore Accuracy
fréquence
0,811
0,814
0,817
0,829
0,828
0.829
b.o.w unigram
basique
sans filtrage
occurrence
0.825
0.834
0.83
0,847
0.848
0.84
b.o.w unigram
avec stemming
occurrence
0,819
0.826
0,821
0,843
0,844
0,844
Figure 3 - IT1 NB SVM
arbre de décision
méthode
d'extraction
des features
Occurrence
vs
Fréquence
Pos
Fscore
Neg
total
FScore Accuracy
b.o.w unigram
basique
sans filtrage
fréquence
0,649
0,581
0,617
occurrence
0,645
0,604
0,626
occurrence
0,631
0,611
0,602
b.o.w unigram
basique
sans filtrage
b.o.w unigram
avec stemming
forêt décisionnelle
Pos
Fscore
0.7649
0.7644
0.7672
Neg
FScore
0.8099
total
Accuracy
0.79
0.8104
0.8049
0.79
0.788
Figure 4 - IT1 DT et RF
Nous observons d’ores et déjà qu’un sac de mots avec des occurrences binaires est plus
performant qu’un sac de mots avec des fréquences d’occurrence.
Ensuite, nous remarquons que les performances des arbres de décision sont très faibles par
rapport aux autres modèles. Une combinaison de 400 arbres augmente significativement
les performances.
Par ailleurs, SVM donne les plus grandes performances avec un f-score de 0,848.
Enfin, le stemming semble diminuer légèrement les performances de chacun des modèles et
sera donc écarté dans les prochaines itérations.
V.
ITERATION 2 - REDUCTION DES FEATURES - ELIMINATION DES
STOP WORDS – PONCTUATION – NOMS PROPRES
12
1. PRETRAITEMENT - ELIMINATION DES « STOPWORDS »
Les « Stopwords » sont les mots qui sont jugés neutres et inutiles car très communs (the, for,
to,…). L’élimination de ces mots très fréquents permet aussi d’alléger la représentation des
documents, et donc de diminuer la lenteur de l’apprentissage. Le module « NLTK.corpus »
sur Python fournit un corpus de 128 mots anglais très communs.
2. PRETRAITEMENT - ELIMINATION DES « NOMS PROPRES »
Comme constaté lors de la phase de compréhension des données, certains noms propres se
sont révélés comme apportant un gain important d’information, et ont donc une forte
chance d’influencer la construction de nos modèles. Le module « NLTK.corpus » sur Python
fournit un corpus de 7944 noms propres, auxquelles ont été manuellement ajouté des noms
de films comme « godzilla », « Titanic » …
3. PRETRAITEMENT - ELIMINATION DE LA « PONCTUATION »
Comme constaté lors de la phase de compréhension des données, les marques de
ponctuation figuraient parmi les features les plus fréquents du corpus. Cependant, nous
avions également observé que les marques de ponctuations « ? », « ! » figuraient parmi les
features apportant un gain énorme d’information quant à la polarité des sentiments
dégagés. Nous testons dans un premier temps de filtrer toute la ponctuation, et puis dans un
second temps de filtrer toute la ponctuation sauf les marques d’interrogation et
d’exclamation.
4. MODELISATION ET EVALUATION
La même méthode de cross-validation de l’itération 1 a été appliquée avec les mêmes
modèles.
Les résultats sont donnés dans les tableaux suivants :
Naive Bayes
SVM
méthode
d'extraction
des features
Occurrence
vs
Fréquence
Pos
Fscore
Neg
total
FScore Accuracy
Pos
Fscore
Neg
FScore
total
Accuracy
Filtrage
stopset+Names+
punct
occurrence
0.821
0.829
0.826
0.848
0.85
0.849
Filtrage
stopset+Names+
punct
avec {'?','!'}
occurrence
0.833
0.838
0.836
0.853
0.857
0.855
Figure 5 - IT2 NB SVM
arbre de décision
méthode
d'extraction
des features
Occurrence
vs
Fréquence
Pos
Fscore
Filtrage
stopset+Names+
occurrence
N.A
Neg
total
FScore Accuracy
N.A
13
N.A
forêt décisionnelle
Pos
Fscore
N.A
Neg
FScore
N.A
total
Accuracy
N.A
punct
Filtrage
stopset+Names+
punct
avec {'?','!'}
occurrence
0,685
0,642
0,676
0.7779
0.8228
0.803
Figure 6 – IT2 DT et RF
Nous constatons, qu’effectivement, les formes de filtrages appliquées améliorent les
modèles.
Par rapport au filtrage de la ponctuation, les résultats sont légèrement mieux en gardant les
signes d’interrogation et d’exclamation, qui ont plus tendance à caractériser des sentiments
négatifs.
VI.
ITERATION 3 - REDUCTION DES FEATURES – SELECTION DES
MEILLEURS MOTS – MEILLEURS ADJECTIFS/GERONDIFS (POS)
1. PRETRAITEMENT - SELECTION DES « FEATURES » APPORTANT LE PLUS GRAND GAIN
D’INFORMATION
La réduction du nombre des « features » utilisés permet non pas seulement de réduire la
taille du modèle, mais aussi d’augmenter sa robustesse. Plusieurs méthodes peuvent être
utilisées pour ordonner les « features », afin d’en sélectionner les mieux classés. Une
première approche s’appuierait sur la fréquence d’apparition de chaque « feature » dans le
corpus. Mais avec une telle approche, on risque de garder plusieurs mots neutres et très
occurrents, au détriment de certains mots moins fréquents mais très déterminants.
L’approche que nous avons adoptée est celle qui permet de garder les mots les plus
déterminants, c’est-à-dire ceux qui apportent le plus grand gain d’information.
Un scoring utilisant le métrique « chi-square » disponible dans la classe «
BigramAssocMeasures class » permet de calculer pour chaque unité syntaxique un score qui
reflète le degré de présence de cette unité syntaxique dans une catégorie donnée par
rapport à sa présence générale dans tout le corpus et par rapport aux nombres
d’occurrences des autres mots de sa classe, et le nombre total des occurrences des mots
dans le corpus. La méthode implémentée sur Python qui calcule ce score est présente en
Annexe. Plus ce taux est élevé, plus le mot a tendance à être présent dans une seule classe
tout en étant très déterminant comparé aux autres mots très fréquents dans sa classe.
Les features ont été classés par le score obtenu, et pour chaque modèle nous en avons
sélectionné un nombre qui maximise le f-score.
2. PRETRAITEMENT - SELECTION DES « ADJECTIFS/GERONDIFS » APPORTANT LE PLUS
GRAND GAIN D’INFORMATION
Le même scoring précédent est appliqué cette fois uniquement aux adjectifs et aux
gérondifs du corpus. Pour sélectionner ces derniers, nous avons utilisé le tagger « Part of
Speech tagger » disponible sous NLTK qui permet de tagger tous les mots du corpus selon
leur fonction grammaticale. Nous gardons ensuite tous les adjectifs et les gérondifs. Nous
14
avons également gardé les gérondifs, car un adjectif comme « boring » ou « oustanding » est
taggué comme gérondif par le POS tagger de NLTK.
3. MODELISATION ET EVALUATION
La même méthode de cross-validation de l’itération 1 a été appliquée avec les mêmes
modèles.
Les résultats sont donnés dans les tableaux suivants :
méthode
d'extraction
des features
Occurrence
vs
Fréquence
Naive Bayes
SVM
Pos
Fscore
Neg
total
FScore Accuracy
Pos
Fscore
Neg
total
FScore Accuracy
meilleurs mots (chi2) occurrence
0,851
0.845
0, 841
0.854
0.859
0.857
meilleurs adjectifs et occurrence
gérondifs (POS)
0.815
0,811
0, 823
0.8278
0.8245
0.826
Figure 7 - IT3 NB SVM
méthode
d'extraction
des features
arbre de décision
forêt décisionnelle
Occurrence
vs
Fréquence
Pos
Fscore
Neg
total
FScore Accuracy
Pos
Fscore
Neg
total
FScore Accuracy
meilleurs mots (chi2) occurrence
0.729
0.734
0,732
0.845
0.854
0.85
meilleurs adjectifs et occurrence
gérondifs (POS)
0.712
0.653
0.686
0.786
0.808
0.795
Figure 8 - IT3 DT et RF
Nous constatons que le meilleur f-score est encore une fois obtenu par le SVM en
sélectionnant les meilleurs mots. Ce f-score est aussi supérieur à ceux des précédentes
itérations, ce qui valide l’intérêt de réduire l’ensemble des features aux unités apportant le
plus grand gain d’information.
Cependant, l’approche consistant à ne garder que les meilleurs adjectifs et les meilleurs
gérondifs est largement moins performante. Elle sera abandonnée dans les prochaines
itérations.
VII.
ITERATION 4 – INTEGRATION DES BI-GRAMS
1. Prétraitement – Intégration des bi-grams
L’intégration des bi-grams dans le sac des « features » permet notamment de s’affranchir
des problèmes de négation. Un bi-gram comme « not great » sera interprété par un modèle
basé sur un sac de mots Unigram comme contribuant à une polarité positive, du moment où
il le sépare en deux uni-grams indépendants.
15
Pour prendre en compte un certain nombre de « bi-gram » les plus importants, nous
procédons sous NLTK à la mesure de la corrélation de la collocation de deux mots
(nltk.collocations). Celle-ci permet de classer les bi-grams en leur affectant le plus grand
score quand les deux mots apparaissent aussi souvent ensemble que vus
individuellement (utilisation de fonction chi-2). Les meilleures collocations sont ensuite
gardées et leur nombre optimal est fixé pour chaque modèle en l’évaluant avec le f-score.
2. Modélisation ET EVALUATION
La même méthode de cross-validation de l’itération 1 a été appliquée avec les mêmes
modèles.
Les résultats sont donnés dans les tableaux suivants :
méthode
d'extraction
des features
Occurrence
vs
Fréquence
intégration des bigrams
Naive Bayes
SVM
Pos
Fscore
Neg
total
FScore Accuracy
Pos
Fscore
Neg
total
FScore Accuracy
occurrence
0,835
0.841
0,84
0.87
0.873
0.872
intégration des bigrams - séléction des occurrence
meilleurs mots
0.84
0.844
0,893
0.866
0.868
0.8675
Figure 9 - IT4 NB SVM
arbre de décision
forêt décisionnelle
méthode
d'extraction
des features
Occurrence
vs
Fréquence
Pos
Fscore
intégration des bigrams
occurrence
N/A
N/A
N/A
0.495
0.740
0.658
0.712
0.719
0,716
0.449
0.735
0.643
intégration des bigrams - séléction des occurrence
meilleurs mots
Neg
total
FScore Accuracy
Pos
Fscore
Neg
total
FScore Accuracy
Figure 10 - IT4 DT et RF
Nous constatons que l’intégration des bi-grams augmente bien le f-score du NB et de SVM.
Mais elle détériore beaucoup les résultats de l’arbre de décision et de la forêt décisionnelle.
Ce traitement parait donc inadéquat pour ces deux derniers modèles.
VIII.
ITERATION 5 – SCORING TF-IDF ET/OU BI-GRAMS ET/OU
MEILLEURS MOTS
1. Prétraitement – sac de mots avec des scores TF-IDF
Dans les itérations précédentes nous avons procédé à une représentation des documents
par un sac de mots reflétant l’occurrence binaire ou la fréquence d’occurrences des features
sélectionnés.
16
Ici, nous allons procéder à une représentation par un sac de mots donnant à chaque
feature un score TF-IDF (Term Frequency-Inverse Document Frequency), en utilisant le
module sklearn.feature_extraction.text présent sur Scikit-learn.
Ce score correspond au produit de la fréquence du mot dans le document (TF), et la
fréquence inverse du document (IDF). Cette-dernière donne un poids plus important aux
termes les moins fréquents, et considérés comme plus discriminants. Elle consiste à calculer
le logarithme de l'inverse de la proportion de documents du corpus qui contiennent le
terme.
Cette mesure statistique permet donc d'évaluer l'importance d'un terme contenu dans un
document, relativement au corpus.
Cette méthode sera testée avec l’ensemble des features du corpus, ou en ne gardant que les
meilleurs mots, ou en la combinant aux bi-grams.
2. Modélisation et évaluation
La même méthode de cross-validation de l’itération 1 a été appliquée avec les mêmes
modèles sauf l’arbre de décision dont les performances étaient très inférieures par rapport
aux autres modèles.
Les résultats sont donnés dans les tableaux suivants :
méthode
d'extraction
des features
b-o-w sans
filtrage : (1)
(1) intégration
des bi-grams :
(2)
(1) + séléction
des meilleurs
mots : (3)
(2) + (3)
Occurrence
vs
Fréquence
vs
score
Pos
Fscore
Neg
total
FScore Accuracy
Pos
Fscore
Neg
total
Pos
Neg
total
FScore Accuracy Fscore FScore Accuracy
TF-IDF
0,845
0.842
0.846
0.880
0.881
0.881
0.7608 0.7873
TF-IDF
0.8527
0.8385
0.846
0.872
0.870
0.871
0.4256 0.7113 0.6345
TF-IDF
0.8372
0.8464
0.842
0.887
0.885
0.886
0.8369 0.8468
0.8375
TF-IDF
0.855
0.853
0.854
0.872
0.872
0.872
0.4211 0.7032
0.6267
Naive Bayes
SVM
forêt décisionnelle
0.775
Figure 11 - IT5 NB SVM RF
Nous constatons, que le scoring TF-IDF a amélioré d’avantage les modèles NB et SVM et a
permis d’obtenir les plus hauts scores sur toutes les itérations.
Quant à la forêt décisionnelle, on s’aperçoit à nouveau que les performances se dégradent
dès qu’on introduit les bi-grams, même en utilisant le scoring TF-IDF.
IX.
RESUME DES MEILLEURS RESULTATS
Le tableau suivant donne un classement des différents modèles sélectionnés avec pour
chacun les prétraitements qui permettent d’obtenir la plus grande valeur du f-score.
17
Modèle
SVM
(C=1, noyau linéaire,
squared hinge loss)
Naive Bayes
(mutlinomial)
Random forests
(400 trees, max
features 12)
Arbre de décision
prétraitement appliqué
Freq vs
Occurrence
vs score
Neg F-score
- unigrams uniquement
- filtrage des noms propres
-filtrage des stop words
-filtrage de ponctuation (sauf ' ?', ' !' )
- 12000 meilleurs mots
TF-IDF
0.885
-unigrams et bigrams
- filtrage des noms propres
-filtrage des stop words
-filtrage de ponctuation (sauf ' ?', ' !' )
- 15000 meilleurs mots
TF-IDF
0.855
- unigrams uniquement
- filtrage des noms propres
-filtrage du stop set
-filtrage de ponctuation (sauf ' ?', ' !' )
- 5000 meilleurs mots
occurrence
binaire
0,854
occurrence
binaire
0.734
- unigrams uniquement
(entropy cutoff 0.05,
- filtrage des noms propres
support cutoff 10, -filtrage du stop set
depth cutoff 30)
-filtrage de ponctuation (sauf ' ?', ' !' )
- 250 meilleurs mots
Figure 12 - résumé des meilleurs résultats
X.
CONCLUSION ET PERSPECITVES
Ce projet nous a permis de constater que les performances des différents modèles sont très
dépendantes des prétraitements appliqués aux documents et de leur représentation. Les
prétraitements optimaux sont spécifiques à chacun des modèles, mais un point commun qui
ressort est celui de la sélection des meilleurs mots du corpus, qui a permis d’augmenter
significativement le f-score de chacun des modèles.
Nous jugeons également que les modèles obtenus lors des dernières itérations, suite à un
filtrage des mots inutiles, ou spécifiques au corpus, sont assez généralisables et pourront
être utilisés pour traiter des tâches réelles de prédiction de sentiments en milieu de
production.
Par ailleurs, en guise d’amélioration, nous proposons plusieurs pistes. Tout d’abord,
concernant les prétraitements, un dictionnaire de synonymes sous « wordnet » permettrait
une réduction significative des features, tout en permettant aux modèles de considérer la
contribution de deux mots différents mais qui sont synonymes comme unique en non
18
indépendante. Un scoring préalablement établi dans un autre dictionnaire « sentiword »
aurait aussi permis d’augmenter les performances des modèles.
En termes d’apprentissage automatique, une méthode ensembliste combinant deux
modèles (SVM et arbres de décision par exemple) pourrait potentiellement permettre de
meilleures performances. Aussi, dans le cadre de nos recherches bibliographique, nous
avions constaté qu’un modèle neuronal récursif permet de réaliser des résultats aussi élevés
que NB et SVM dans le cas de la polarisation binaire. Mais il est en mesure de les dépasser
très largement lorsqu’il s’agit d’une classification en plusieurs niveaux. Il serait donc
pertinent de l’appliquer pour une classification de sentiment plus granulaire (5 niveaux par
exemple).
Enfin, quant au corpus utilisé, bien qu’il soit très employé dans les projets de classification
de sentiments, il demeure tout de même légèrement moins adapté à la problématique
métier traitée qui concerne des avis clients, généralement moins volumineux que des
critiques de presse sur des films. Une extraction de publications twitter relatives aux
interactions des clients avec une marque donnée, en utilisant l’API Twitter Streaming, aurait
probablement permis de construire des modèles plus robustes.
19
XI.
SOURCES BIBLIOGRAPHIQUES
[1] Bing Liu, 2012, Sentiment Analysis and Opinion Mining
[2] Social Science Information, 2005, SAGE Publications (London, Thousand Oaks, CA and
New Delhi), 0539-0184
[3] http://sentiment.christopherpotts.net/lingcog.html#commitment
[4] Bo Pang and Lillian Lee, Shivakumar Vaithyanathan. 2002. Thumbs up? Sentiment
Classification using Machine Learning Techniques.
[5] Marc Vincent, Grégoire Winterstein. 2013. Construction et exploitation d’un corpus
français pour l’analyse de sentiment
[6] Bird, Steven, Edward Loper and Ewan Klein (2009), Natural Language Processing with
Python. O’Reilly Media Inc.
[7] Mohamed Ali Sghaier , Rami Ayadi, Houssem Abdellaoui, Mounir Zrigui, Analyse de
sentiments et extraction des opinions pour les sites e-commerce : application sur la langue
arabe
[8] Eric Charton, Nathalie Camelin, Rodrigo Acuna-Agost, Pierre Gotabn, Remi Lavalley, Remy
Kessler, Silvia Fernandez Pré-traitements classiques ou par analyse distributionnelle
:application aux méthodes de classification automatique déployées pour DEFT08
20
ANNEXE
METHODE SCORING CHI-SQUARE
#Y est une liste de tupple (id document, classe document)
def bestwords_function(Y):
word_fd = FreqDist()
label_word_fd = ConditionalFreqDist()
for ids,tag in y:
if(tag==1):
for word in movie_reviews.words(fileids = ids):
word_fd[word.lower()]+=1
label_word_fd['pos'][word.lower()]+=1
elif(tag==0):
for word in movie_reviews.words(fileids = ids):
word_fd[word.lower()]+=1
label_word_fd['neg'][word.lower()]+=1
pos_word_count = label_word_fd['pos'].N()
neg_word_count = label_word_fd['neg'].N()
total_word_count = pos_word_count + neg_word_count
word_scores = {}
for word, freq in word_fd.iteritems():
pos_score =
BigramAssocMeasures.chi_sq(label_word_fd['pos'][word],(freq,
pos_word_count), total_word_count)
neg_score =
BigramAssocMeasures.chi_sq(label_word_fd['neg'][word],(freq,
neg_word_count), total_word_count)
word_scores[word] = pos_score + neg_score
best = sorted(word_scores.iteritems(), key=lambda (w,s): s,
reverse=True)[:12000]
bestwords=[w for w, s in best]
return bestwords
21
Technopôle Brest-Iroise
CS 83818
29238 Brest Cedex 3
France
+33 (0)2 29 00 11 11
www.telecom-bretagne.eu
22