Intro NLP
Communiquer avec les machines en langue naturelle. Tokenization, POS tagging, grammaires hors-contexte, ambiguïté lexicale et syntaxique, Wordnet.
📐 L'essentiel à connaître
Tout ce qu'il faut maîtriser pour les annales — orienté méthodes & définitions (le NLP est peu « formules »). En annale (GSI FI 2024-2025), l'exercice tombé est une CFG + construction de deux arbres syntaxiques pour montrer une ambiguïté (PP-attachment). Le reste se joue en questions de cours.
Les systèmes NLP traitent surtout les niveaux inférieurs : lexical (dont morphologique), syntaxique, sémantique.
9 POS : Adjective · Adverb · Conjunction · Determiner · Noun · Preposition · Pronoun · Proper noun · Verb.
Un même mot peut avoir plusieurs POS → on prend le plus probable selon le contexte. La ponctuation n'a pas de POS tag.
Coupe mécaniquement stem + affixes et supprime les affixes. Résultat pas toujours un mot valide.
studies → studi · goes → go · commanded → command
Réduit au lemme (forme du dictionnaire). Nécessite le POS + des règles → toujours un mot valide.
better → good · saw (n.) → saw / (v.) → see
LHS → RHS (LHS = suite de non-terminaux, RHS = suite de 0+ symboles terminaux ou non).Hiérarchie de Chomsky : 4 classes selon la forme des règles, emboîtées (une classe décrit tous les langages de la classe inférieure + d'autres). Les langues naturelles requièrent au moins la classe hors-contexte.
CFG (Context-Free Grammar) = règles avec un unique non-terminal à gauche (c'est le critère à vérifier en annale).
Parsing → un arbre d'analyse : racine = la phrase (S), nœuds internes = phrases (LHS des règles), liens = applications de règles, feuilles = terminaux (mots). Représentation équivalente : bracketed string (chaîne parenthésée étiquetée).
- Lexicale : un mot a plusieurs sens. « The priest married my sister. »
- Syntaxique : la phrase admet plusieurs arbres (≥ 2 parses). « Police help dog bite victim. » — c'est le cas de l'annale (PP-attachment : le groupe « avec une loupe » s'attache soit au verbe, soit au nom).
- Référentielle : un pronom peut renvoyer à plusieurs entités. « He told the good news to his father. He was very happy. » (qui est He ?)
Relations horizontales : synonymie (small/little) · antonymie (big/small) · conversité (teach/learn) · homonymie (light ≠ dark / ≠ heavy) · polysémie (satellite).
Relations verticales : hyponymie/hypernymie (rose ⊂ flower ; cat & dog = co-hyponymes) · méronymie = part-of (wheel/car, méronyme ↔ holonyme).
WordNet : base lexicale électronique de l'anglais, groupe les mots en synsets (synonymes cognitifs) + relations (hyper/hyponymie, synonymie…). Utilisable en Python via NLTK.
nltk.NaiveBayesClassifier) pour classer des tweets Positif / Négatif. Principe : on prédit la classe qui maximise la probabilité a posteriori, en supposant les mots indépendants :
On garde la classe de score maximal : $\hat{y} = \arg\max_{\text{classe}} \; P(\text{classe}) \prod_i P(\text{mot}_i \mid \text{classe})$. Pipeline NLTK : nettoyage → features (sac de mots) → split train/test → train → classify.accuracy.
(S
(S (NP (Det the) (Nn dog)) (VP (V swam)))
(Conj and)
(S
(NP (PN Mary))
(VP (VP (V slept)) (Conj or)
(VP (V talked) (Prep to) (NP (PN John))))))
Méthode d'examen : ① vérifier que la grammaire est une CFG (1 non-terminal à gauche) + donner Σ et N ; ② dériver la phrase règle par règle depuis S ; ③ pour montrer l'ambiguïté, exhiber deux arbres distincts (ex. PP rattaché au VP via VP → VP PP vs au NP via NP → NP PP) ; ④ conclure : ambiguïté syntaxique, levée par des indices sémantiques/pragmatiques hors CFG.
- 7 niveaux : phonologie · morphologie · lexical · syntaxique · sémantique · discours · pragmatique
- NLP traite surtout : lexical · syntaxique · sémantique
- Tokenization = découpe en tokens (mots + ponctuation + nombres)
- 9 POS : Adj · Adv · Conj · Det · Noun · Prep · Pron · ProperN · Verb · (ponctuation = pas de POS)
- Stemming = coupe affixes (studies → studi, parfois non-mot)
- Lemmatization = dico + POS (better → good, toujours mot valide)
- Grammaire = (Σ terminaux, N non-terminaux, S départ, R règles LHS→RHS)
- CFG = 1 seul non-terminal à gauche · Chomsky = 4 classes emboîtées
- Parsing → arbre d'analyse (racine S, feuilles = terminaux) ≡ bracketed string
- 3 ambiguïtés : lexicale · syntaxique (≥ 2 arbres) · référentielle
- Relations horizontales : synonymie · antonymie · conversité · homonymie · polysémie
- Relations verticales : hyponymie/hypernymie (co-hyponymes) · méronymie (part-of)
- WordNet (via NLTK) : synsets + relations
- Naive Bayes : $P(c\mid \text{texte}) \propto P(c)\prod_i P(\text{mot}_i\mid c)$ (sentiment)
📄 Ressources du cours
🎥 Vidéos recommandées
-
🇫🇷
Traitement du Langage Naturel (NLP) + Machine Learning avec Python (vidéo 1/3)
J.A DATATECH CONSULTING · 37:00 · 268 vues — Le Traitement du Langage Naturel (Natural Language Processing ou NLP en anglais) est un domaine de l'Intelligence Artificielle qui donne la capacité aux mach...
-
🇫🇷
NLP Basics Explained: Tokenization & Embeddings | Beginner Friendly
CodeCraft Academy · 07:16 — Understanding Natural Language Processing (NLP) starts with two core concepts: tokenization and embeddings.In this video, we break down:What tokenization is ...
-
🇬🇧
NLP Tutorial 14 - TF2.0 and Keras for Word Embedding in NLP on Twitter Sentiment Data | KGP Talkie
KGP Talkie · 43:33 · 6k vues — In this video, we will learn word embedding and NLP with TensorFlow 2.0 and Keras on Twitter sentiment data. Natural Language Processing(NLP) refers to compu...
1. Qu'est-ce que le NLP ?
NLP = Natural Language Processing, branche de l'Intelligence Artificielle. Objectif : communiquer avec les machines via une langue naturelle.
4 questions structurantes
Langues naturelles (arabe, français, anglais…). Formes écrite et orale.
Traduction automatique, question answering, résumé de texte (text summarization)…
① Théorie des automates · ② Machine learning
③ Statistiques · ④ Logique
Symbolique (faits/règles) · Statistique (corpus)
Connexionniste (LSTM, ConvNet aujourd'hui)
2. Les 7 niveaux d'analyse linguistique
| # | Niveau | Objet |
|---|---|---|
| 1 | Phonologie | Sons qui définissent les mots |
| 2 | Morphologie | Forme des mots |
| 3 | Lexical | Rôle des mots dans les phrases + sens |
| 4 | Syntaxique | Analyse des mots dans une phrase |
| 5 | Sémantique | Compréhension du sens du document |
| 6 | Discours | Propriétés du texte considéré comme un tout |
| 7 | Pragmatique | Connaissance du monde × sens littéral |
3. Analyse lexicale
Analyse du texte au niveau du mot. Deux étapes :
- Transformer le texte brut en séquence d'unités basiques via la tokenization.
- Attribuer à chaque unité une catégorie : son part-of-speech tag (POS).
Nécessite un lexique : base de données contenant les mots autorisés + informations grammaticales/sémantiques.
Tokenization
Découpage du document en tokens : mots, signes de ponctuation, nombres.
'Ernest Hemingway (July 21, 1899 - July 2, 1961) was an American novelist.' est tokenisée en :
'Ernest', 'Hemingway', '(', 'July', '21', ',', '1899', '-', 'July', '2', ',', '1961', ')', 'was', 'an', 'American', 'novelist'.
Parts of Speech (POS) — 9 catégories
| # | POS | Exemples |
|---|---|---|
| 1 | Adjective | High, Nice, Ugly, Wide |
| 2 | Adverb | Easily, Here, Now, Often |
| 3 | Conjunction | And, But, For, Yet |
| 4 | Determiner | A, An, That, The |
| 5 | Noun | Bike, Car, Cat, Dog |
| 6 | Preposition | At, In, From, On |
| 7 | Pronoun | I, He, It, Us |
| 8 | Proper noun | Albert, France, Python |
| 9 | Verb | Does, Open, Read, Went |
Le même mot peut avoir plusieurs POS possibles : "He likes to fish" (verbe) vs "He caught a fish" (nom).
Les mots ambigus reçoivent le POS le plus probable étant donné le contexte.
Les signes de ponctuation n'ont pas de POS tag.
Stemming vs Lemmatization
Identifie les mots morphologiquement complexes, les décompose en stems + affixes, puis supprime les affixes.
goes → gocomputers → computercommanded → commandstudies → studi ⚠ pas un motstudying → study
Réduit au lemme (forme du dictionnaire). Nécessite le POS + un ensemble de règles.
better → goodsaw (verbe) → seesaw (nom) → sawmeeting (verbe) → meetmeeting (nom) → meeting
studi).La lemmatization utilise un dictionnaire + le POS et retourne toujours un mot valide, parfois très différent de la forme fléchie (
better → good).
4. Analyse syntaxique
La phrase est l'unité de base du sens dans un texte. Les phrases ne sont pas des séquences linéaires de mots — elles sont construites selon des règles de production.
Grammaire formelle — définition
② Un ensemble N de symboles non terminaux (Sentence, Noun Phrase, Verb Phrase…)
③ Un symbole de départ S (la phrase entière)
④ Un ensemble de règles de production de la forme
LHS → RHS
Hiérarchie de Chomsky
Chomsky distingue 4 classes de grammaires selon la forme des règles, formant une hiérarchie.
Exemple complet (issu du cours)
$N$ = {Conj, Det, Nn, NP, PN, Prep, S, V, VP}
$\Sigma$ = {a, and, barked, cat, dog, fish, in, John, Mary, on, or, slept, swam, talked, the, to}
- S
- → S Conj S | NP VP
- NP
- → Det Nn | PN | NP Conj NP
- VP
- → V NP | V Prep NP | V Conj VP
- Det
- → the | a
- Nn
- → cat | dog | fish
- PN
- → Mary | John
- V
- → swam | talked | barked | slept
- Conj
- → and | or
- Prep
- → in | on | to
Parsing & arbre d'analyse
Les parseurs utilisent une grammaire pour analyser les phrases. Le résultat est un arbre d'analyse :
- Racine = la phrase analysée (symbole S)
- Nœuds internes = phrases (LHS des règles)
- Liens = applications de règles
- Feuilles = symboles terminaux (mots)
Exemple de phrase reconnue par la grammaire : « The dog swam and Mary slept or talked to John. »
Représentation bracketed string
(S
(S
(NP (Det the) (Nn dog)) (VP (V swam))
)
(Conj and)
(S
(NP (PN Mary))
(VP
(VP (V slept))
(Conj or)
(VP (V talked) (Prep to) (NP (PN John)))
)
)
)
5. Analyse sémantique
Comprendre le sens des mots, expressions, phrases, documents. On distingue :
Ambiguïté — 3 types principaux
"The priest married my sister." (a-t-il célébré le mariage, ou s'est-il marié ?)
"Police help dog bite victim."
"He told the good news to his father. He was very happy." (qui est He ?)
Exemple célèbre — « Le prix Goncourt » (Daniel Kayser)
| # | Sens | Exemple |
|---|---|---|
| 1 | Récompense | « Le Prix Goncourt a été attribué à X » |
| 2 | Somme d'argent | « X a versé son Prix Goncourt à la Croix Rouge » |
| 3 | Personne | « Le Prix Goncourt a été félicité par le Président » |
| 4 | Jury | « Le Prix Goncourt a admis un nouveau membre » |
| 5 | Livre | « Peux-tu m'acheter le Prix Goncourt » |
| 6 | Événement | « Depuis son Prix Goncourt, il est devenu arrogant » |
| 7 | Autre | « Le Prix Goncourt pervertit la vie littéraire » |
Relations lexicales
Synonymie : small / little
Antonymie : big / small
Conversité : teach / learn
Homonymie : light (≠ dark / ≠ heavy)
Polysémie : satellite (spatial / pays)
Hyponymie/Hypernymie : rose / flower, orange / fruit
Items hyponymes du même item = co-hyponymes (cat, dog)
Méronymie (part-of) : nose / face, wheel / car
Wordnet
Utilisable en Python via le module NLTK.
Sémantique compositionnelle
Principe de compositionnalité : le sens d'une combinaison est déterminé par le sens des parties + la manière dont elles sont combinées.
L'approche logique utilise la logique du premier ordre :
- « Some teachers are sick »
- $\exists x \;\; \text{teacher}(x) \wedge \text{sick}(x)$
- « All French students learn English »
- $\forall x \;\; (\text{french}(x) \wedge \text{student}(x)) \Rightarrow \text{learn}(x, \text{english})$
Modus ponens :
- Prémisse 1
- Pierre is sick ⟶ $P : \text{sick}(c)$
- Prémisse 2
- $P \Rightarrow Q$ ⟶ $Q : \text{stay\_at\_home}(c)$
- Conclusion
- Pierre stays at home ⟶ $Q : \text{stay\_at\_home}(c)$
6. En pratique — TD NLTK
Tokenization + POS + lemmatisation
import nltk
from nltk.tokenize import word_tokenize
from nltk.stem import WordNetLemmatizer
text = open('theguardian.txt').read()
tokens = word_tokenize(text)
tokens = [t.lower() for t in tokens if t.isalpha()] # nettoyage
tagged = nltk.pos_tag(tokens)
# Description d'un tag
nltk.help.upenn_tagset('NN')
# Lemmatisation (avec POS)
lem = WordNetLemmatizer()
def wn_pos(tag):
return {'J':'a', 'V':'v', 'N':'n', 'R':'r'}.get(tag[0], 'n')
lemmas = [lem.lemmatize(w, wn_pos(t)) for w, t in tagged]
Classifieur bayésien — analyse de sentiment
from nltk.corpus import twitter_samples
from nltk import NaiveBayesClassifier, classify
pos_tweets = twitter_samples.strings('positive_tweets.json')
neg_tweets = twitter_samples.strings('negative_tweets.json')
# nettoyage + features
def features(tokens):
return {t: True for t in tokens}
dataset = [(features(clean(t)), 'Positif') for t in pos_tweets] \
+ [(features(clean(t)), 'Négatif') for t in neg_tweets]
random.shuffle(dataset)
split = int(0.8 * len(dataset))
train, test = dataset[:split], dataset[split:]
clf = NaiveBayesClassifier.train(train)
print("Accuracy:", classify.accuracy(clf, test))
clf.show_most_informative_features(10)
word_tokenize, pos_tag, WordNetLemmatizer, twitter_samples, NaiveBayesClassifier, help.upenn_tagset.
★ Réviser le chapitre
Pour vérifier ta compréhension
Différence stemming vs lemmatization ?
studi). La lemmatization utilise un dictionnaire + le POS et retourne toujours un mot valide (better → good).Qu'est-ce qu'une grammaire formelle ?
LHS → RHS.Qu'est-ce qu'une CFG ?
Les 3 types d'ambiguïté en sémantique ?
Quelle relation entre cat et animal ?
🃏 Flashcards éclair
Clique pour retourner.
NLP — définition
Sigle + branche.
tourne →3 approches
NLP s'appuie sur…
tourne →Niveaux NLP traités
Lesquels en pratique ?
tourne →Tokenization
Définition.
tourne →9 POS
Cite les catégories.
tourne →Stemming
Exemple studies ?
Le stem n'est pas toujours un mot valide.
Lemmatization
Exemple better ?
Toujours un mot valide.
Grammaire formelle
Les 4 composants.
tourne →CFG
Caractéristique.
tourne →3 types d'ambiguïté
En sémantique.
tourne →Hyponymie
Définir + exemple.
tourne →Méronymie
Relation part-of, exemple.
tourne →✎ Quiz éclair
nltk.corpus.wordnet.📌 À retenir
- NLP = NaturalLanguageProcessing, branche de l'IA
- 3 approches : symbolique · statistique · connexionniste
- 7 niveaux : phonologie / morphologie / lexical / syntaxique / sémantique / discours / pragmatique
- NLP traite surtout : lexical, syntaxique, sémantique
- Tokenization : découpe en tokens (mots + ponctuation + nombres)
- 9 POS : Adj, Adv, Conj, Det, Noun, Prep, Pron, ProperN, Verb · ponctuation = pas de POS
- Stemming = coupe affixes (ex. studies → studi, parfois non-mot)
- Lemmatization = forme du dico via POS (better → good, toujours mot valide)
- Grammaire = (Σ, N, S, règles)
- CFG = 1 seul non-terminal à gauche · suffit pour les langues naturelles
- Arbre d'analyse : racine S, feuilles = terminaux · bracketed string équivalente
- 3 ambiguïtés : lexicale, syntaxique, référentielle
- Relations lex. horizontales : synonymie · antonymie · conversité · homonymie · polysémie
- Relations lex. verticales : hyponymie/hypernymie · méronymie (part-of)
- Wordnet (NLTK) : synsets + relations
- Compositionnalité → logique du 1er ordre + modus ponens
- Outils Python :
word_tokenize,pos_tag,WordNetLemmatizer,NaiveBayesClassifier