Accueil / Factory / Algos ML / Analyse de sentiment — factory / algos ML / classification de texte

ANALYSE DE SENTIMENT.

Classer automatiquement un texte selon l'opinion qu'il exprime : positif, négatif ou neutre. On l'utilise pour trier des milliers d'avis, de tickets ou de réponses à une enquête, et remonter en priorité les clients mécontents. La méthode va du simple modèle sur les mots jusqu'au LLM.

TexteClassificationVerbatims clientsService clientNiveau : débutant

FICHE D'IDENTITÉ

notes sur 5 · usage entreprise
PerformanceTrès bon sur des avis nets, plus fragile sur l'ironie
InterprétabilitéAvec TF-IDF, les mots qui pèsent se lisent directement
VitesseDes milliers d'avis classés par seconde sur un portable
Facilité de réglageUn classifieur linéaire marche bien presque sans réglage
Tolérance aux données brutesFautes et abréviations passent si elles sont fréquentes
EN 30 SECONDES

Un stagiaire lit des centaines d'avis déjà notés par des clients. Il retient que « cassé », « remboursement » et « ne répond pas » annoncent un avis négatif, puis trie seul les nouveaux.

1. On part d'avis déjà étiquetés

Ici, la note laissée par le client donne l'étiquette : 1-2 étoiles négatif, 3 neutre, 4-5 positif. Pas besoin d'annoter à la main.

2. On transforme le texte en chiffres

Chaque avis devient un vecteur de poids TF-IDF sur les mots et les paires de mots (« pas reçu », « service client »).

3. Un classifieur apprend les mots qui pèsent

Une régression logistique à trois classes attribue un poids à chaque mot pour chaque sentiment, puis classe les nouveaux avis.

LE CAS MÉTIER

voix du client · e-commerce / service client
EN ENTRÉE

1 500 avis avec leur note

Le texte de l'avis et la note de 1 à 5, traduite en positif, neutre ou négatif. 70 % des avis servent à apprendre, 30 % à vérifier.

EN SORTIE

Un sentiment pour chaque nouvel avis

Chaque avis entrant reçoit une étiquette. Les négatifs partent directement au service client, sans attendre une lecture manuelle. Utile aussi pour les textes sans note : emails, tickets, réseaux sociaux.

CE QU'ON MESURE

Le rappel des négatifs, pas l'exactitude

Ce qui compte est la part des vrais avis négatifs détectés. Sur le jeu d'exemple, le modèle Python classe 95 % des avis test correctement et retrouve 96 % des négatifs. La classe neutre est la plus difficile (85 % de rappel). Sur de vrais avis, plus variés que ce jeu d'exemple, attendez-vous à moins.

QUAND LE SORTIR, QUAND L'ÉVITER

OUI

  • Trier un flux d'avis, de tickets ou d'emails pour traiter d'abord les mécontents
  • Suivre la satisfaction dans le temps, par produit, par magasin ou par canal
  • Exploiter des textes sans note : réseaux sociaux, verbatims d'enquête
  • Disposer déjà de textes étiquetés, par exemple via une note laissée par le client

NON

  • Ironie et sous-entendus (« Bravo, encore en retard ») : un modèle de type BERT ou un LLM s'en sort mieux
  • Avis mêlant plusieurs sujets : l'analyse de sentiment par aspect (livraison, produit, prix) répond mieux
  • Aucun texte étiqueté disponible : partir d'un modèle pré-entraîné ou d'un LLM
  • Décision individuelle lourde fondée sur le seul sentiment d'un texte
LES 4 CHOIX QUI COMPTENT

Plus que les hyperparamètres, ce sont les choix de méthode et de préparation qui font la qualité. Noms donnés pour R (text2vec, glmnet) et Python (scikit-learn).

Méthode : mots, BERT ou LLM

TF-IDF avec régression logistique : rapide, gratuit, lisible. Un modèle de type BERT ajusté sur vos avis : meilleur sur les tournures complexes. Un LLM : aucun exemple nécessaire, mais coût par texte et résultats moins stables.

N-grammes : ngram / ngram_range

Compter les paires de mots capte une partie de la négation (« pas reçu », « sans plus »). Presque toujours utile.

Classes déséquilibrées : class_weight

Si les neutres sont rares, le modèle les néglige. class_weight="balanced" en Python, pondération des observations (weights) dans glmnet en R.

Régularisation : lambda / C

Freine les poids des mots pour éviter d'apprendre par cœur. cv.glmnet choisit lambda par validation croisée ; en Python, régler C.

LE CODE MINIMAL

jeu d'exemple : avis_clients.csv ↓
# Avis clients : analyse de sentiment en R
library(text2vec)
library(glmnet)

avis <- read.csv("avis_clients.csv")
sentiment <- factor(avis$sentiment)
set.seed(42)
idx <- sample(nrow(avis), round(0.7 * nrow(avis)))

# Vocabulaire appris sur l'entraînement : mots et paires de mots
jetons <- itoken(tolower(avis$texte), tokenizer = word_tokenizer)
vocab <- create_vocabulary(itoken(tolower(avis$texte[idx]), tokenizer = word_tokenizer), ngram = c(1, 2))
vocab <- prune_vocabulary(vocab, term_count_min = 2)
dtm <- create_dtm(jetons, vocab_vectorizer(vocab))
tfidf <- TfIdf$new()
x_train <- fit_transform(dtm[idx, ], tfidf)
x_test <- transform(dtm[-idx, ], tfidf)

# Régression logistique à 3 classes, pénalité choisie par validation croisée
modele <- cv.glmnet(x_train, sentiment[idx], family = "multinomial")
prevu <- factor(predict(modele, x_test, s = "lambda.min", type = "class")[, 1], levels = levels(sentiment))

# Matrice de confusion et rappel par classe
confusion <- table(reel = sentiment[-idx], prevu = prevu)
print(confusion)
print(round(diag(confusion) / rowSums(confusion), 2))

QUESTIONS FRÉQUENTES

Comment faire une analyse de sentiment sans données étiquetées ?

Trois options : utiliser un modèle déjà entraîné au sentiment sur des textes en français, interroger un LLM avec une consigne, ou étiqueter quelques centaines de textes pour entraîner un modèle. La note laissée par le client, quand elle existe, sert souvent d'étiquette gratuite.

Quelle précision attendre d'une analyse de sentiment ?

Sur des avis courts et tranchés, un modèle simple obtient déjà une bonne exactitude ; l'ironie et les avis mitigés font baisser le score. La classe neutre est toujours la plus difficile, car les humains eux-mêmes ne s'accordent pas toujours sur elle. Il faut mesurer sur vos propres textes, pas sur des chiffres publiés.

Analyse de sentiment : faut-il un LLM ?

Pas forcément. Un modèle TF-IDF avec régression logistique donne souvent un bon résultat pour un coût quasi nul. Le LLM apporte un gain sur l'ironie, les phrases longues et les textes sans étiquettes, au prix d'un coût par texte.

LES ALGOS VOISINS

à comparer avant de choisir
la représentation utilisée

TF-IDF

Transforme chaque avis en poids de mots. C'est l'entrée du classifieur de cette fiche.

Voir la fiche →
plus fin sur la langue

BERT

Un modèle pré-entraîné qui lit la phrase entière. Ajusté sur quelques milliers d'avis, il gère mieux la négation et le contexte.

Voir la fiche →
sans données étiquetées

GPT et LLM

Il suffit de demander le sentiment dans une consigne. Pratique pour démarrer, coûteux sur des millions de textes.

Voir la fiche →
— formation

Passer de la fiche à la pratique

Dataistudio forme les équipes au machine learning et à l'IA, sur des cas concrets.

Voir les formations →