Préparer un texte, le représenter en nombres, construire un premier modèle d’analyse de sentiments.

Comment Google traduit-il une phrase en une seconde ?
Comment Siri vous comprend-il quand vous parlez ?
Comment votre boîte mail repère-t-elle un spam ?
“Le NLP (Natural Language Processing, ou TAL) est le domaine de l’IA qui permet à une machine de lire, comprendre et produire du langage humain.
On le retrouve partout :
Le cours part d’un texte brut et aboutit à une prédiction, en trois étapes :
Un texte brut ne peut pas être analysé tel quel. On le nettoie par étapes successives — tokenisation, normalisation, stop words, lemmatisation — sur une phrase fil rouge : « Les chats dormaient tranquillement sur le canapé ! »
| Notion | Définition |
|---|---|
| Corpus | Ensemble des textes que l'on étudie (ex. tous les avis clients). |
| Document | Une unité du corpus : une phrase, un avis, un e-mail. |
| Token | La plus petite unité issue du découpage : le plus souvent un mot, parfois la ponctuation. |
| Tokenisation | Opération qui découpe un texte en tokens. |
| Vocabulaire | Ensemble des tokens distincts présents dans le corpus. |
| Stop words | Mots très fréquents et peu informatifs (« le », « de », « et », « à »…), souvent retirés. |
Quatre opérations s’enchaînent toujours dans le même ordre :
word_tokenize(texte) fragmente la phrase en jetons :
« Les chats dormaient tranquillement sur le canapé ! »
La ponctuation devient un token à part entière.

« Les » et « les » doivent être traités pareil — sinon le même mot compte deux fois.
Ce qui est fréquent et vide tombe ; ce qui est informatif reste.

Chaque forme conjuguée ou fléchie revient à son lemme, la forme du dictionnaire :
Avec spaCy : token.lemma_
Les formes conjuguées sont les branches ; le lemme est la racine.

Les deux ramènent un mot à une forme de base, mais différemment :
| Stemming (racinisation) | Lemmatisation | |
|---|---|---|
| Principe | Coupe la fin du mot de façon mécanique. | Ramène au lemme en tenant compte de la grammaire. |
| Exemples | « mangeaient » → « mange » « chevaux » → « cheva » | « mangeaient » → « manger » « chevaux » → « cheval » |
| Bilan | Rapide mais grossier — la « racine » n'est pas toujours un vrai mot. | Plus précis, mais plus coûteux. |
| Étape | Résultat |
|---|---|
| Texte brut | Les chats dormaient tranquillement sur le canapé ! |
| Tokenisation | [Les] [chats] [dormaient] [tranquillement] [sur] [le] [canapé] [!] |
| Minuscules | [les] [chats] [dormaient] [tranquillement] [sur] [le] [canapé] [!] |
| Sans stop words | [chats] [dormaient] [tranquillement] [canapé] |
| Lemmatisation | [chat] [dormir] [tranquillement] [canapé] |
De 8 tokens bruts à 4 tokens propres et porteurs de sens.
Pédagogique, riche en ressources. Ne pas oublier nltk.download(...) — l’erreur classique du débutant.
Rapide, orienté production. Tokeniseur, stop words et lemmatiseur prêts à l’emploi.
Les algorithmes d'apprentissage ne manipulent que des nombres. Trois familles de représentations, du plus simple au plus riche : Bag-of-Words, TF-IDF, word embeddings.

On construit le vocabulaire (les mots distincts), puis chaque document devient un vecteur qui compte les occurrences. L’ordre des mots est ignoré — d’où le « sac ».
| Doc | le | chat | dort | mange | poisson |
|---|---|---|---|---|---|
| D1 | 1 | 1 | 1 | 0 | 0 |
| D2 | 2 | 1 | 0 | 1 | 1 |

N = nombre de documents · df(t) = documents contenant le mot t.

IDF proche de zéro : son poids TF-IDF s’effondre. « le » ne caractérise rien.
Poids élevé : c’est lui qui caractérise le document où il apparaît.
Deux jumeaux enfermés dans deux boîtes qui ne se voient pas.


| Bag-of-Words | TF-IDF | Embeddings | |
|---|---|---|---|
| Principe | Compte les mots | Pondère par la rareté | Vecteurs denses appris |
| Vecteur | Creux, grande dim. | Creux, grande dim. | Dense, faible dim. |
| Sens des mots | Non capturé | Non capturé | Capturé (similarité) |
| Avantages | Simple, interprétable | Filtre les mots fréquents | Capte le sens, performant |
| Limites | Ignore l'importance | Ignore le sens et l'ordre | Coûteux, moins interprétable |
Le projet final réunit tout ce qu'on a appris : des avis étiquetés, un découpage entraînement / test, TF-IDF, une régression logistique, une évaluation honnête — et le test ultime sur une phrase jamais vue.
Un projet de classification de texte enchaîne toujours les mêmes étapes :
X = les avis (textes) · y = les étiquettes : 1 = positif, 0 = négatif.
| Avis (X) | Étiquette (y) |
|---|---|
| « super film, j’ai adoré » | 1 · positif |
| « très mauvais, ennuyeux » | 0 · négatif |
| « excellent, je recommande » | 1 · positif |
| « horrible, perte de temps » | 0 · négatif |
| « génial et touchant » | 1 · positif |
| « décevant et trop long » | 0 · négatif |
train_test_split.fit_transform sur l’entraînement, transform seul sur le test : le vocabulaire n’est appris qu’une fois.

| Métrique | Ce qu'elle mesure |
|---|---|
| Accuracy | Proportion de prédictions correctes sur l'ensemble. |
| Précision | Parmi les prédits « positifs », combien le sont vraiment. |
| Rappel | Parmi les vrais « positifs », combien ont été retrouvés. |
| F1-score | Moyenne harmonique précision / rappel (compromis). |

Entraîner → évaluer → corriger. Les pistes classiques :
t-SNE : positifs et négatifs forment-ils des nuages distincts ?Prêt à faire parler les données ?