Blog ENI : Toute la veille numérique !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
Black Friday: -25€ dès 75€ sur les livres en ligne, vidéos... avec le code BWEEK25. J'en profite !
  1. Livres et vidéos
  2. Intelligence artificielle vulgarisée
  3. Opinions et classification de textes
Extrait - Intelligence artificielle vulgarisée Le Machine Learning et le Deep Learning par la pratique
Extraits du livre
Intelligence artificielle vulgarisée Le Machine Learning et le Deep Learning par la pratique
2 avis
Revenir à la page d'achat du livre

Opinions et classification de textes

Ce que nous allons découvrir et les prérequis

Dans le chapitre précédent, nous avons vu l’utilité de la classification appliquée à des chiffres en nous permettant de déterminer si l’objet détecté par un sonar était une mine ou un rocher. Nous allons à présent découvrir l’utilité de la classification pour le texte, qui est peut-être moins évidente, sauf si nous évoquons le fait que ce type de classification permet de vous proposer des publicités ou des articles ayant un contenu en relation avec les différentes recherches que vous avez effectuées sur Internet ou les différentes conversations que vous avez réalisées sur les réseaux sociaux  !

Nous verrons également que la classification de texte peut être appliquée à la détermination de l’opinion des internautes sur les réseaux sociaux sur un sujet donné. Ce qui peut, nous en convenons, être un peu dérangeant, et susciter les craintes que nous avons évoquées au début de cet ouvrage.

Prérequis nécessaires pour bien aborder ce chapitre : avoir lu les chapitres Les fondamentaux du langage Python, Des statistiques pour comprendre les données, Principaux algorithmes du Machine Learning et Bien classifier n’est...

Le traitement automatique du langage naturel (TALN)

Le traitement automatique du langage naturel (TALN ou Natural Language Processing - NLP) est une discipline à la frontière entre l’informatique, la linguistique et l’intelligence artificielle.

L’un des objectifs de cette discipline est la compréhension du langage naturel (celui que nous utilisons) afin d’en déduire le sens et de pouvoir interagir avec nous. Les champs d’applications possibles étant bien entendu orientés autour du langage et de la langue, nous pouvons donc citer les applications de :

  • Traduction automatique

  • Corrections orthographiques

  • Communication homme-machine (chatbot)

  • Synthèse et reconnaissance de la parole

  • Analyse des opinions

Pour y parvenir, nous pouvons utiliser une première approche appelée méthode linguistique dont l’objectif est de décrire l’information à extraire en utilisant des règles linguistiques (grammaires, formulations) ou bien d’utiliser le Machine Learning. C’est bien entendu la seconde méthode que nous allons privilégier.

Naive Bayes appliqué au TALN

Lorsque que nous évoquons la classification de texte, l’algorithme incontournable permettant de réaliser cette tâche est Naive Bayes se basant sur la fréquence d’apparition des mots. Pour les différents exemples qui vont suivre, nous vous invitons à laisser quelques instants de côté votre ordinateur pour vous munir d’une feuille de papier, d’un crayon et d’une calculatrice.

1. Le théorème

Comme nous l’avons déjà évoqué et illustré dans le chapitre Principaux algorithmes du Machine Learning, l’algorithme de Naive Bayes se base sur le Théorème de Bayes fondé sur les probabilités conditionnelles c’est-à-dire la détermination de la probabilité qu’un évènement se produise en fonction d’un évènement qui s’est déjà produit. Les évènements devant être indépendants l’un de l’autre.

Le théorème de Bayes s’exprime sous la formule suivante :

images/eq08.png

2. Un exemple : quels mots-clés choisir ?

Pour illustrer à l’aide d’un exemple concret le fonctionnement de l’algorithme, nous avons pris le cas d’un site proposant des ateliers de codage pour enfants et adolescents. Nous allons chercher à déterminer si le fait d’utiliser les mots-clés "Atelier enfant" et "stage IA" dans les publicités sur les réseaux sociaux incite les internautes ayant été ciblés par cette publicité à inscrire davantage leurs enfants aux stages.

Pour cela, nous disposons des données de 10 internautes ayant fait ou non une inscription aux stages après avoir vu une publicité comportant uniquement le mot-clé "Atelier enfant", une autre uniquement le mot-clé "Stage IA", une troisième comportant les deux mots-clés et une quatrième ne comportant aucun de ces mots-clés.

internaute

atelier_enfant

stage_ia

inscription

1

Non

Oui

Non

2

Non

Oui

Oui

3

Oui

Non

Non

4

Oui

Non

Oui

5

Non

Oui

Non

6

Non

Oui

Non

7

Oui

Non

Oui

8

Non

Oui

Oui

9

Non

Non

Oui

10

Oui

Non

Oui

Voici quelques lectures de ce tableau :

  • Le premier internaute a visionné...

Naive Bayes pour l’analyse d’opinion

Comme nous allons à présent le constater, le théorème de Naive Bayes va nous permettre de réaliser l’analyse d’option des internautes en fonction de leurs posts sur les réseaux sociaux.

En analysant les différents messages des utilisateurs laissés sur les réseaux sociaux ou sites internet à propos d’un produit, ou bien d’un sujet en particulier (sport, politique…), nous pouvons déterminer s’ils sont plutôt contents, mécontents, heureux, tristes, en accord, en désaccord et agir en conséquence.

Comment ? En analysant les mots des différents messages et en classant ces messages dans différentes catégories : en accord, en désaccord, content, mécontent. Cette classification permet par exemple d’alerter en direct les responsables de la communication d’un produit en cas de mécontentement. Cette alerte permet de répondre à l’utilisateur très rapidement et évite ainsi la propagation d’une mauvaise image de la marque.

Prenons l’exemple d’une étude de conversations à propos des chats récupérée sur les réseaux sociaux. À partir de l’occurrence des mots dans une phrase, on peut identifier l’opinion de la personne ayant posté le message à savoir : elle aime ou non les chats.

L’ensemble des observations que nous allons utiliser dans ce chapitre sera basé sur des textes en anglais. La raison en est qu’il n’est malheureusement pas si évident de trouver des jeux de données en français et que la langue anglaise est plus facile à manipuler et traiter de par sa composition.

Message

Opinion

I love cats

Positive

I hate cats

Négative

Cats are beautiful

Positive

Cats are awful

Négative

Cats are intelligent

Positive

Imaginons à présent un nouveau commentaire : "I love awful cats". La personne ayant posté ce commentaire aime-t-elle ou non les chats  ? C’est la difficile question à laquelle devra répondre notre algorithme de classement de texte.

1. Étape 1 : normalisation des données

La normalisation du texte, va consister à supprimer les accents, les caractères...

Cas pratique : croyez-vous au réchauffement climatique ?

Nous allons à présent procéder à la détermination d’opinions à partir d’un jeu d’observations réel issu du réseau social Twitter. Nous ne nous attarderons pas sur les différentes phases de calcul, mais utiliserons le langage Python pour mener à bien la mission de classification.

1. Comment obtenir des données ?

La première chose est d’obtenir un jeu d’observations. Pour cela, il est possible d’utiliser les différents réseaux sociaux, dont Facebook et Twitter, pour récupérer un ensemble de conversations. En effet, les réseaux sociaux sont propices à la classification d’opinions, car les utilisateurs se servent de ces réseaux pour publier leurs avis sur différents sujets.

De plus grâce aux hastags, il est facile de sélectionner les conversations qui concernent un sujet qui nous intéresse. En sélectionnant les conversations ayant le hastag #intelligenceartificielle, il y a fort à parier que celles-ci traiteront de l’intelligence artificielle.

À titre d’exemple, nous allons étudier les différentes opinions des Américains laissés sur Twitter à propos du réchauffement climatique. Nous essayerons de les classer en deux groupes : ceux ayant conscience du réchauffement et ceux n’y croyant pas du tout. Usage politique, ou bien de sensibilisation, libre à vous de décider l’utilité de cette classification.

2. Création d’un projet Python

Les modules Python que nous allons utiliser dans ce projet sont relatifs à la manipulation de données textuelles et de tableaux.

C’est pourquoi nous allons utiliser les librairies suivantes :

  • NLTK (Natural Language ToolKit)

  • Numpy

  • Pandas

  • Scikit-Learn

Ces bibliothèques devront bien entendu être importées dans votre projet Python.

Lors du premier import de NLTK dans votre script Python, une fenêtre s’ouvre vous demandant les modules complémentaires à installer. Il convient alors de sélectionner l’option All packages...

Phases d’apprentissage et de prédiction

Les données étant préparées, nous pouvons à présent passer aux phases d’apprentissage et de prédiction.

1. Découpage en jeux de tests et d’apprentissage

Comme nous en avons maintenant l’habitude, nous créons un jeu d’apprentissage et un jeu de tests ayant respectivement 80 % et 20 % des observations avec pour information à prédire la feature CROYANCE.

from sklearn.model_selection import train_test_split 
 X_train, X_test, y_train, y_test = 
train_test_split(messagesTwitter['TWEET'].values,  
messagesTwitter['CROYANCE'].values,test_size=0.2) 

Nous avons fait le choix de garder les termes anglophones (train et Test), car c’est sous cette forme que vous les retrouverez dans les différents cas pratiques présents sur Internet.

2. Création d’un pipeline d’apprentissage

Un pipeline d’apprentissage peut être assimilé à une suite d’actions consécutives à réaliser sur le jeu d’observations.

La première action ajoutée au pipeline va consister, à l’aide de la fonction CountVectorizer(), à créer la matrice des occurrences des différents mots dans les différentes phrases comme nous avons appris à le faire manuellement.

La matrice d’occurrence des mots sert à déterminer le nombre de fois où apparaît un mot dans un texte. Cependant, cela ne signifie pas qu’un mot ayant un nombre important d’occurrences est déterminant dans la classification du message. En effet, il se peut que dans un message le même mot soit répété dix fois, mais qu’il n’ait été simplement utilisé que dans un seul message. On préfère donner un poids aux mots en fonction de leur fréquence d’apparition...

L’algorithme SVM (Machine à vecteurs de supports) pour le classement de texte

Nous allons à présent utiliser l’algorithme SVM pour tenter de classifier notre texte. Cet algorithme commence à nous être familier, car les chapitres précédents nous ont permis de découvrir son fonctionnement et son optimisation.

Tout comme pour l’algorithme de Naive Bayes, nous allons utiliser un pipeline pour réaliser les différentes tâches d’analyse des messages avant leur apprentissage :

from sklearn.pipeline import Pipeline 
from sklearn.feature_extraction.text import CountVectorizer 
from sklearn.feature_extraction.text import TfidfTransformer 
from sklearn.svm import SVC 
etapes_apprentissage = Pipeline([('frequence',  
CountVectorizer()), 
                                 ('tfidf', TfidfTransformer()), 
                                 ('algorithme', 
SVC(kernel='linear', C=2))]) 

Réalisons à présent l’apprentissage :

modele = etapes_apprentissage.fit(X_train,y_train) 
from sklearn.metrics import classification_report 
print(classification_report(y_test, modele.predict(X_test),  
digits=4)) 

Précision...

L’algorithme SVM plus performant que Naive Bayes ?

Nous pouvons constater que l’algorithme SVM est bien plus performant que Naïves Bayes. Le même constat est également réalisé par les experts du Machine Learning (ouf !).Cela est dû au fait que Naive Bayes considère chaque feature comme étant indépendante alors que SVM cherche à trouver des éléments de corrélation entre elles. Cependant, Naive Bayes offre de bons résultats pour un coût de performance plus faible de l’algorithme SVM. Naive Bayes est donc à privilégier. C’est d’ailleurs pour cela que les filtres antispam l’utilisent, pour sa simplicité de mise en œuvre et pour ses bonnes performances.

Dans ce chapitre quelque peu ardu, nous en conviendrons lors de certains paragraphes, nous avons découvert comment le Machine Learning pouvait intervenir dans la classification de texte et les multiples applications que cela pouvait générer, jusqu’à la détermination de l’opinion exprimée par les utilisateurs des réseaux sociaux. Cela peut vous interloquer et nous en sommes conscients surtout dans la période que nous traversons actuellement. Nous profitons donc de ce chapitre pour vous sensibiliser sur les informations laissées sur les réseaux sociaux et les usages pouvant en être...