Natural Language Processing (NLP) - Fondements et applications

Auteur: Mohamed CHINY Durée necessaire pour le cours de Natural Language Processing (NLP) - Fondements et applications Niveau recommandé pour le cours de Natural Language Processing (NLP) - Fondements et applications Supports vidéo non disponibles pour ce cours Exercices de renforcement non disponibles pour ce cours Quiz disponible pour ce cours

Leçon 4: Tokenisation: comprendre son rôle dans le prétraitement linguistique pour le NLP

Toutes les leçons

Natural Language Processing (NLP) - Fondements et applications

Tokenisation: découper le texte pour mieux l’analyser

Qu'est ce que la tokenisation?

La tokenisation est une étape fondamentale du prétraitement en NLP. Elle consiste à découper un texte en unités plus petites appelées tokens, qui peuvent être des mots, des sous-mots ou même des caractères.

Le processus de tokenisation permet de transformer une phrase continue en une séquence d’éléments manipulables par les algorithmes, facilitant ainsi l’analyse et la modélisation du langage.

Il existe plusieurs approches de tokenisation. La plus simple consiste à découper le texte en mots en se basant uniquement sur les espaces. Toutefois, cette méthode peut rapidement montrer ses limites, notamment dans les langues riches en morphologie ou lorsqu’il s’agit de gérer des cas particuliers comme les contractions (exemple: "n’est-ce"), les mots composés ou encore les ponctuations.

En effet, la ponctuation joue souvent un rôle important dans la structure et le sens d’une phrase. Une tokenisation plus attentive peut donc inclure les marques de ponctuation comme des tokens à part entière, ou au contraire les utiliser comme délimiteurs pour séparer les mots.

Par exemple, dans la phrase "Bonjour, comment ça va ?", la virgule et le point d’interrogation peuvent être considérés comme des tokens distincts, car ils véhiculent une information syntaxique ou expressive.

Ainsi, la tokenisation de base peut être adaptée selon le contexte: soit en ignorant la ponctuation pour simplifier le texte, soit en la conservant pour préserver des indices importants liés au sens ou à l’émotion. Le choix dépendra de la tâche NLP visée, qu’il s’agisse d’une analyse linguistique, d’une classification ou d’une détection de sentiments.
Dans cette leçon, nous nous limiterons à la tokenisation de base, c’est-à-dire le découpage du texte en mots. Les méthodes plus avancées comme WordPiece ou BPE (Byte Pair Encoding), largement utilisées dans les modèles de langage actuels, seront abordées plus tard dans le cours afin de montrer comment elles permettent de gérer efficacement les mots rares et les variations linguistiques.

Tokenisation avec NLTK: découper le texte pour le NLP

NLTK (Natural Language Toolkit) est une bibliothèque Python largement utilisée dans le domaine du traitement automatique du langage naturel (NLP). Elle fournit un ensemble riche d’outils pour le prétraitement des textes, tels que la tokenisation, la lemmatisation, l’étiquetage grammatical ou encore l’analyse syntaxique.

Grâce à ses ressources intégrées (comme les corpus et les modèles de segmentation punkt), NLTK permet aux chercheurs, étudiants et développeurs d’expérimenter facilement avec des méthodes linguistiques de base et de construire des prototypes pour diverses applications en NLP.

Voyons un exemple de tokenisation qui consiste au découpage du texte en mots en utilisant la bibliothèque NLTK:
import nltk
from nltk.tokenize import word_tokenize

# Télécharger le modèle de tokenisation 'punkt'
nltk.download("punkt")

texte = "Produit excellent, je recommande!"

# Tokenisation en mots
tokens = word_tokenize(texte)

print(tokens)
L’instruction import nltk permet de charger la bibliothèque NLTK (Natural Language Toolkit), qui regroupe de nombreux outils pour le traitement du langage naturel. Ensuite, la ligne from nltk.tokenize import word_tokenize importe spécifiquement la fonction word_tokenize, utilisée pour découper un texte en une liste de mots et de signes de ponctuation.
En plus de la fonction word_tokenize qui découpe un texte en mots, NLTK propose aussi sent_tokenize, une méthode permettant de segmenter un texte en phrases. Cette approche est utile lorsque l’on souhaite analyser la structure globale d’un document ou traiter chaque phrase séparément dans un pipeline NLP.
La commande nltk.download("punkt") sert à télécharger le modèle de segmentation Punkt, inclus dans la bibliothèque NLTK. Ce modèle est nécessaire pour effectuer des tâches de tokenisation, comme découper un texte en mots ou en phrases. Sans ce téléchargement préalable, les fonctions telles que word_tokenize() ou sent_tokenize() ne pourraient pas fonctionner correctement, car elles s’appuient sur les données et règles fournies par Punkt pour identifier les séparateurs linguistiques (espaces, ponctuation...).

La ligne tokens = word_tokenize(texte) applique la fonction de tokenisation au contenu de la variable texte. Concrètement, elle découpe la chaîne de caractères en une liste de tokens (mots et ponctuations) que l’on peut ensuite manipuler ou analyser.

L'exécution du code précédent produit ce résultat:
['Produit', 'excellent', ',', 'je', 'recommande', '!']
Ainsi, au lieu d’avoir une phrase entière sous forme de texte brut, on obtient une structure organisée où chaque élément est séparé, ce qui facilite les étapes suivantes du prétraitement en NLP.