Le carnet On est
Chapitre 4 · encre prune

Intro NLP

Communiquer avec les machines en langue naturelle. Tokenization, POS tagging, grammaires hors-contexte, ambiguïté lexicale et syntaxique, Wordnet.

~ 25 min de lecture TD — Twitter, NLTK, parsing 12 flashcards

📐 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 7 niveaux d'analyse linguistique (à citer dans l'ordre)Phonologie (sons → mots) · ② Morphologie (forme des mots) · ③ Lexical (rôle du mot dans la phrase + sens) · ④ Syntaxique (analyse des mots de la phrase) · ⑤ Sémantique (sens du document) · ⑥ Discours (le texte comme un tout) · ⑦ Pragmatique (connaissance du monde × sens littéral).
Les systèmes NLP traitent surtout les niveaux inférieurs : lexical (dont morphologique), syntaxique, sémantique.
② Analyse lexicale — niveau du mot Deux étapes : tokenization (découper le texte en tokens : mots, ponctuation, nombres) puis attribuer à chaque unité son POS tag (part-of-speech). Nécessite un lexique (mots autorisés + infos grammaticales/sémantiques).
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.
✂️ Stemming
Coupe mécaniquement stem + affixes et supprime les affixes. Résultat pas toujours un mot valide.
studies → studi · goes → go · commanded → command
📚 Lemmatization
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
③ Grammaire formelle & CFG — le cœur de l'exo d'annale Une grammaire = quadruplet : ① Σ symboles terminaux (mots, ponctuation) · ② N symboles non terminaux (S, NP, VP…) · ③ S symbole de départ · ④ R règles de production 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).
④ Ambiguïté — 3 types (définition + exemple)
  • 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 ?)
Exemple culte FR (D. Kayser) : « le prix Goncourt » = récompense / somme / personne / jury / livre / événement… selon le contexte.
⑤ Sémantique & relations lexicales On distingue sémantique lexicale (sens des mots seuls) et supralexicale (sens des combinaisons).
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.
⑥ Classifieur bayésien — analyse de sentiment (TD Twitter) Le TD entraîne un Naive Bayes (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 :
$$P(\text{classe}\mid \text{texte}) \;\propto\; P(\text{classe}) \cdot \prod_{\text{mot} \,\in\, \text{texte}} P(\text{mot}\mid \text{classe})$$

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 → trainclassify.accuracy.

🎯 Mini-exemple type annale — arbre d'analyse & bracketed string Phrase reconnue par la grammaire du cours : « The dog swam and Mary slept or talked to John. » → 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))))))

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

📥 Télécharger les slides  ·  🔗 Ouvrir dans un nouvel onglet  ·  📝 Ouvrir le TD/TP

🎥 Vidéos recommandées

1. Qu'est-ce que le NLP ?

Définition (E.D. Liddy) « NLP is a theoretically motivated range of computational techniques for analyzing and representing naturally occurring texts at one or more levels of linguistic analysis for the purpose of achieving human-like language processing for a range of tasks or applications. »

NLP = Natural Language Processing, branche de l'Intelligence Artificielle. Objectif : communiquer avec les machines via une langue naturelle.

4 questions structurantes

📄 Quels documents ?
Langues naturelles (arabe, français, anglais…). Formes écrite et orale.
🎯 Quelles applications ?
Traduction automatique, question answering, résumé de texte (text summarization)…
🛠️ Quelles méthodes ?
① Théorie des automates · ② Machine learning
③ Statistiques · ④ Logique
🧭 Quelles approches ?
Symbolique (faits/règles) · Statistique (corpus)
Connexionniste (LSTM, ConvNet aujourd'hui)

2. Les 7 niveaux d'analyse linguistique

#NiveauObjet
1PhonologieSons qui définissent les mots
2MorphologieForme des mots
3LexicalRôle des mots dans les phrases + sens
4SyntaxiqueAnalyse des mots dans une phrase
5SémantiqueCompréhension du sens du document
6DiscoursPropriétés du texte considéré comme un tout
7PragmatiqueConnaissance du monde × sens littéral
Niveaux traités par le NLP Les systèmes NLP traitent essentiellement les niveaux inférieurs : lexical (y compris morphologique), syntaxique, sémantique.

3. Analyse lexicale

Analyse du texte au niveau du mot. Deux étapes :

  1. Transformer le texte brut en séquence d'unités basiques via la tokenization.
  2. 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.

Exemple (fidèle au cours) La chaîne '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

#POSExemples
1AdjectiveHigh, Nice, Ugly, Wide
2AdverbEasily, Here, Now, Often
3ConjunctionAnd, But, For, Yet
4DeterminerA, An, That, The
5NounBike, Car, Cat, Dog
6PrepositionAt, In, From, On
7PronounI, He, It, Us
8Proper nounAlbert, France, Python
9VerbDoes, Open, Read, Went
⚠️ Mots ambigus
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

✂️ Stemming
Identifie les mots morphologiquement complexes, les décompose en stems + affixes, puis supprime les affixes.

goes → go
computers → computer
commanded → command
studies → studi ⚠ pas un mot
studying → study
📚 Lemmatization
Réduit au lemme (forme du dictionnaire). Nécessite le POS + un ensemble de règles.

better → good
saw (verbe) → see
saw (nom) → saw
meeting (verbe) → meet
meeting (nom) → meeting
Différence à mémoriser Le stemming coupe mécaniquement les affixes (résultat parfois non-mot, ex. 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

Une grammaire est définie par : ① Un ensemble Σ de symboles terminaux (mots du lexique, ponctuation…)
② 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.

CFG (Context-Free Grammar) Grammaire dont les règles ont un unique symbole non terminal à gauche. Les grammaires des langues naturelles requièrent au moins la puissance de la classe hors contexte.

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 :

Sémantique lexicale Sens des mots individuels.
Sémantique supralexicale Sens des combinaisons de mots (phrases, énoncés).

Ambiguïté — 3 types principaux

① Ambiguïté lexicale — un mot a plusieurs sens.
"The priest married my sister." (a-t-il célébré le mariage, ou s'est-il marié ?)
② Ambiguïté syntaxique — la phrase admet plusieurs arbres syntaxiques.
"Police help dog bite victim."
③ Ambiguïté référentielle — un pronom peut renvoyer à plusieurs personnes/choses.
"He told the good news to his father. He was very happy." (qui est He ?)

Exemple célèbre — « Le prix Goncourt » (Daniel Kayser)

#SensExemple
1Récompense« Le Prix Goncourt a été attribué à X »
2Somme d'argent« X a versé son Prix Goncourt à la Croix Rouge »
3Personne« Le Prix Goncourt a été félicité par le Président »
4Jury« Le Prix Goncourt a admis un nouveau membre »
5Livre« Peux-tu m'acheter le Prix Goncourt »
6Événement« Depuis son Prix Goncourt, il est devenu arrogant »
7Autre« Le Prix Goncourt pervertit la vie littéraire »

Relations lexicales

↔️ Relations horizontales
Synonymie : small / little
Antonymie : big / small
Conversité : teach / learn
Homonymie : light (≠ dark / ≠ heavy)
Polysémie : satellite (spatial / pays)
⬆️ Relations verticales
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

Wordnet Base de données lexicale électronique de l'anglais. Groupe noms, verbes, adjectifs, adverbes en ensembles de synonymes cognitifs (synsets). Inclut les relations (hyperonymie/hyponymie, synonymie…).
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 :

Schéma de l'inférence
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)
🧰 Outils NLTK
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 ?
Le stemming coupe mécaniquement les affixes (résultat parfois non valide : studi). La lemmatization utilise un dictionnaire + le POS et retourne toujours un mot valide (better → good).
Qu'est-ce qu'une grammaire formelle ?
Un quadruplet : ① symboles terminaux Σ · ② symboles non terminaux N · ③ symbole de départ S · ④ règles de production LHS → RHS.
Qu'est-ce qu'une CFG ?
Une grammaire hors-contexte : ses règles ont un unique symbole non terminal à gauche. Suffisante pour décrire les langues naturelles (selon la hiérarchie de Chomsky).
Les 3 types d'ambiguïté en sémantique ?
Lexicale (un mot plusieurs sens), syntaxique (plusieurs arbres possibles), référentielle (pronom qui renvoie à plusieurs entités).
Quelle relation entre cat et animal ?
cat est un hyponyme de animal (et animal est un hypernyme de cat). C'est une relation verticale.

🃏 Flashcards éclair

Clique pour retourner.

NLP — définition

Sigle + branche.

tourne →
Natural Language Processing · branche de l'IA. But : communiquer avec les machines en langue naturelle.

3 approches

NLP s'appuie sur…

tourne →
Symbolique · Statistique · Connexionniste (LSTM, ConvNet)

Niveaux NLP traités

Lesquels en pratique ?

tourne →
Niveaux inférieurs : lexical, syntaxique, sémantique.

Tokenization

Définition.

tourne →
Découper le document en tokens : mots, ponctuation, nombres, autres items discrets.

9 POS

Cite les catégories.

tourne →
Adjective · Adverb · Conjunction · Determiner · Noun · Preposition · Pronoun · Proper noun · Verb

Stemming

Exemple studies ?

tourne →
studies → studi
Le stem n'est pas toujours un mot valide.

Lemmatization

Exemple better ?

tourne →
better → good
Toujours un mot valide.

Grammaire formelle

Les 4 composants.

tourne →
① Σ (terminaux) · ② N (non terminaux) · ③ S (départ) · ④ règles de production

CFG

Caractéristique.

tourne →
Context-Free Grammar : règles avec un seul non-terminal à gauche. Niveau requis pour les langues naturelles.

3 types d'ambiguïté

En sémantique.

tourne →
Lexicale · Syntaxique · Référentielle

Hyponymie

Définir + exemple.

tourne →
Sens plus spécifique : rose est hyponyme de flower. cat et dog sont co-hyponymes.

Méronymie

Relation part-of, exemple.

tourne →
wheel / car, nose / face. Méronyme ↔ holonyme.

✎ Quiz éclair

test rapide · 5 questions
0 / 5
1.Le résultat du stemming est toujours un mot valide :
  • Vrai
  • Vrai si on utilise NLTK
  • Faux (ex. studies → studi)
  • Vrai uniquement en anglais
C'est la lemmatization qui garantit un mot valide.
2.Une CFG est une grammaire dont les règles ont :
  • Plusieurs non-terminaux à gauche
  • Un seul non-terminal à gauche
  • Plusieurs terminaux à droite
  • Aucun symbole de départ
D'où le nom : la réécriture du non-terminal de gauche ne dépend pas du contexte.
3.« Police help dog bite victim » illustre :
  • Une ambiguïté lexicale
  • Une ambiguïté référentielle
  • Une faute grammaticale
  • Une ambiguïté syntaxique
Plusieurs arbres syntaxiques possibles.
4.La relation cat / animal est :
  • Hyponymie (cat plus spécifique)
  • Méronymie
  • Antonymie
  • Polysémie
Hyponymie verticale. animal est l'hypernyme.
5.Wordnet est utilisable en Python via :
  • scikit-learn
  • NLTK
  • PyTorch
  • spaCy uniquement
Module 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