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 3: La normalisation, étape indispensable du prétraitement linguistique

Toutes les leçons

Natural Language Processing (NLP) - Fondements et applications

La normalisation: première étape du prétraitement textuel

Minuscules et ponctuation: la base de la normalisaiton

En NLP, la normalisation est une étape de prétraitement qui vise à réduire les variations inutiles dans les textes. Elle permet de rendre les données plus homogènes et donc plus faciles à analyser par les modèles.

Par exemple, un corpus peut contenir les formes "Bonjour", "BONJOUR" et "bonjour". Sans normalisation, ces trois variantes seraient considérées comme des mots différents, ce qui disperse l’information. En les ramenant toutes à la forme "bonjour", on simplifie le vocabulaire et on améliore la cohérence des représentations.

Un autre exemple classique est la suppression de la ponctuation. Si l’on analyse des avis clients, la phrase "Produit excellent, je recommande!" peut être normalisée en "produit excellent je recommande". Le sens reste intact, mais le texte est débarrassé de symboles qui compliqueraient inutilement l’analyse statistique ou la recherche de mots-clés.

Cette normalisation minimale (minuscules + suppression de ponctuation) est souvent suffisante pour des tâches comme la classification de documents ou l’analyse de sentiments. Toutefois, dans des contextes plus complexes, comme l’extraction d’entités nommées ou le traitement de textes multilingues, il peut être nécessaire d’aller plus loin, par exemple: uniformiser les formats de dates, conserver ou supprimer les accents selon l’objectif ou encore traiter les contractions et les espaces. Ainsi, la normalisation est une étape adaptable, qui doit être calibrée en fonction de la tâche et du type de données.
Nous aurons l’occasion de découvrir dans les prochains exemples des aspects plus avancés de la normalisation, comme la gestion des accents, des formats de dates ou des contractions, afin de montrer comment adapter ces techniques aux besoins spécifiques des tâches en NLP.

Exemple pratique de normalisation

Nous allons créer une fonction de normalisation qui applique plusieurs transformations simples mais efficaces pour préparer le texte à l’analyse.

Cette fonction mettra toutes les lettres en minuscules afin d’éviter les doublons liés aux majuscules puis supprimera la ponctuation pour ne garder que les mots significatifs.

L’objectif est de produire un texte homogène, plus facile à traiter par les modèles NLP, tout en conservant le sens original des phrases.

Je propose le code suivant:
import string
import re
def normalize(sentense):
   return re.sub(
      "["+string.punctuation+"]",
      "",
      sentense.lower()
   )

print(normalize("Produit excellent, je recommande!"))
La bibliothèque string (que nous avons importée) fait partie de la librairie standard de Python. Elle fournit un ensemble de constantes utiles pour manipuler les chaînes de caractères. Parmi les plus utilisées, on retrouve string.ascii_letters qui regroupe toutes les lettres de l’alphabet en majuscules et minuscules, string.digits qui contient les chiffres de 0 à 9, ainsi que string.punctuation qui rassemble l’ensemble des signes de ponctuation comme !"#$%&'()*+,-./:;<=>?@[]^_{|}~. Ces constantes sont particulièrement pratiques pour le prétraitement et la normalisation des textes car elles permettent d’identifier rapidement les caractères à conserver ou à supprimer selon les besoins.

Dans notre exemple, nous avons appliqué une expression régulière (bibliothèque re) à travers la méthode sub() qui remplace toute marque de ponctuation rencontrée par une chaine vide. Mais avant cela, nous avons d'abord converti notre chaine en minuscule à l'aide de la méthode lower().

Le résultat est une chaîne de caractères minuscule démunie de toute marque de ponctuation. En effet, si on exécute le code précédent on obtient:
produit excellent je recommande
La fonction de normalisation que nous avons créée peut être appliquée directement à un DataFrame en utilisant la méthode apply(). Cela permet de normaliser automatiquement le texte présent dans une colonne entière, par exemple les avis clients ou les messages, et ainsi obtenir un corpus homogène prêt à être exploité pour l’analyse NLP.
En suivant la même logique, notre code pourrait être enrichi pour supprimer les chiffres ou encore les caractères accentués. Toutefois, il est important de souligner que ce type de nettoyage n’est pas toujours pertinent. Dans certains domaines du NLP, comme l’analyse de sentiments, il est souvent préférable de conserver le texte tel qu’il est, car certains éléments (majuscules, ponctuation répétée ou utilisée de manière expressive) peuvent transmettre des indices essentiels sur la polarité et l’intensité du sentiment exprimé.
Plus loin dans ce cours, nous aborderons en détail l’analyse de sentiments. Nous verrons comment appliquer la normalisation dans ce contexte particulier et nous explorerons des modèles préentraînés ainsi que des approches où nous entraînerons nous-mêmes nos modèles. Cela permettra de comprendre comment certains éléments du texte (ponctuation, majuscules, répétitions...) peuvent influencer la détection de la polarité et enrichir l’interprétation des émotions exprimées.