Le Traitement Automatique du Langage Naturel , ou NLP est aujourd’hui au cœur des solutions d’intelligence artificielle visant à automatiser la compréhension et la génération de texte. De l’analyse de sentiments à la traduction automatique, ou encore les chatbots et l’extraction d’informations, ces techniques transforment de simples données textuelles en insights exploitables.
Prétraitement du texte
Le prétraitement est la première étape qui permet de garantir la qualité et la cohérence des données textuelles. Sans nettoyage des données, les algorithmes risquent de s’appuyer sur des artefacts (ponctuation, majuscules, fautes de frappe) plutôt que sur la sémantique réelle.
1. Normalisation et nettoyage
Lorsque l’on veut préparer un texte brut, plusieurs techniques peuvent être employées:
- Uniformisation des caractères : cela consiste à convertir toutes les lettres en minuscules pour éviter la distinction entre majuscules et minuscules (par exemple, « Chat » devient « chat »), à supprimer des accents afin de réduire la variabilité lexicale (ex. « élévation » → « elevation ») et éliminer des caractères spéciaux (†, ¶, …) peu informatifs.
- Nettoyage de la ponctuation : ici, on effectue un retrait ou standardisation des signes de ponctuation (points, virgules, points d’exclamation), normalisation des apostrophes et des guillemets pour être sur que la tokenisation soit cohérente et éviter la création de tokens isolés.
- Gestion des entités : c’est la détection et le remplacement des URL, adresses email, numéros de téléphone et emojis par des tokens dédiés (
<URL>
,<EMAIL>
,<PHONE>
,<EMOJI>
) afin de conserver leur présence sans alourdir le vocabulaire. - Filtrage des espaces et retours à la ligne : suppression des espaces multiples, tabulations et retours à la ligne superflus pour éviter des tokens vides et améliorer la fluidité de l’analyse.
2. Tokenisation
La tokenisation consiste à découper un flux de texte en éléments minimaux (appelés aussi tokens) que les algorithmes vont pouvoir traiter. Cette étape permet de transformer une chaîne de caractères en une séquence ordonnée d’unités sémantiques et syntaxiques. Il existe deux approche à cette méthode :
- La tokenisation par mots :
- Principe : on sépare le texte dès qu’un espace ou un signe ponctuation apparaît. Chaque mot, nombre ou symbole ainsi isolé devient un token.
- Exemple : la phrase « Je m’appelle Léo ! » produit les tokens : [« Je », « m’appelle », « Léo », « ! »]
- Avantages : c’est une méthode simple et rapide, elle convient aux langues à séparation claire des mots (comme le français ou l’anglais).
- Limites : mal adapté aux mots composés, aux contractions complexes et aux langues sans espaces (ex. chinois), et sensible aux erreurs d’espacement.
- La tokenisation sous-mot (subword) :
- Principe : on découpe les mots en fragments fréquents ou plus petits que le mot entier, généralement via des algorithmes statistiques. BPE (Byte-Pair Encoding) et WordPiece (utilisé par BERT) sont deux méthodes courantes :
- BPE commence avec tous les caractères individuels, puis vient fusionner itérativement les paires de symboles les plus fréquentes pour former des sous-mots.
- WordPiece optimise la sélection des sous-mots en maximisant la probabilité du corpus entraîné.
- Exemple : le mot « programmation » peut être fractionné en [« pro », « gramm », « ation »] ou [« programm », « ation »], selon la fréquence des sous-chaînes.
- Avantages : gère efficacement les mots rares, les néologismes ou autres variations morphologiques sans explosion du vocabulaire. Permet de réduire la proportion de unknown tokens (UNK).
- Limites : moins intuitif à interpréter, la segmentation peut sembler arbitraire pour l’œil humain, et nécessite un vocabulaire pré-établi issu d’un pré-entraînement.
- Principe : on découpe les mots en fragments fréquents ou plus petits que le mot entier, généralement via des algorithmes statistiques. BPE (Byte-Pair Encoding) et WordPiece (utilisé par BERT) sont deux méthodes courantes :
Cette étape de tokenisation va venir conditionner l’efficacité (vectorisation, modélisation) et l’efficacité de votre pipeline NLP.
3. Filtrage des stop words
Pour améliorer la pertinence de l’analyse, on peut également supprimer les stop words—ces mots très fréquents (articles, conjonctions, prépositions) qui n’apportent que peu de valeur sémantique. Cela permet de réduire la dimensionnalité du vocabulaire et de focaliser l’apprentissage sur les termes réellement informatifs :
- Liste générale : mots courants tels que « le », « la », « de », « et », à adapter selon la langue et le domaine d’application.
- Personnalisation selon le contexte : pour une tâche d’analyse de sentiments, il peut être utile de conserver certains mots comme « ne » ou « pas » afin de détecter la polarité des phrases.
Vous pouvez ajuster cette liste en ajoutant ou retirant des termes spécifiques liés à votre corpus pour maximiser la qualité de vos modèles.
4. Stemming vs Lemmatisation
Pour réduire la variance lexicale tout en préservant le sens, on peut appliquer deux méthodes :
- Le stemming :
- Principe : on utilise des règles heuristiques (ex. algorithme de Porter ou Snowball) pour tronquer chaque mot à sa racine, sans tenir compte de sa catégorie grammaticale.
- Exemple : « programmation », « programmeur » et « programment » donneront tous la racine « programm ».
- Avantages : très rapide et peu gourmand en ressources, simple à implémenter.
- Inconvénients : la racinisation peut être trop agressive, produisant des racines incorrectes ou trop courtes (overstemming), et ne prend pas en compte les exceptions morphologiques.
- La lemmatisation :
- Principe : on identifie le lemme (forme canonique) de chaque mot en s’appuyant sur un dictionnaire et une analyse morphosyntaxique (POS tagging) pour tenir compte de la catégorie grammaticale.
- Exemple : « étudiants » (nom pluriel) devient « étudiant », « mangeais » (verbe à l’imparfait) devient « manger ».
- Avantages : résultats plus précis et interprétables, conservation du sens et de la catégorie grammaticale.
- Inconvénients : plus coûteux en temps de calcul et en mémoire, nécessite un lexique et un modèle de POS tagging pour être efficace.
Représentation vectorielle du texte
Pour exploiter le texte avec des algorithmes de machine learning, il faut le convertir en vecteurs numériques. Les méthodes courantes sont :
1. Sac de mots (Bag-of-Words)
Chaque document est converti en un vecteur de dimension |V|, où |V| correspond à la taille du vocabulaire total. Chaque composante du vecteur indique la présence (0 ou 1) ou le nombre d’occurrences du mot associé.
Par exemple, avec un vocabulaire limité à [« chat », »chien », »oiseau »], le document « chat chat oiseau » se code en [2, 0, 1] pour le comptage de fréquence (ou [1, 0, 1] en mode binaire). Cette représentation est simple à calculer et souvent suffisante pour des tâches de classification de base. En revanche, elle ne conserve pas l’ordre des mots (c’est pourquoi on parle de « sac de mots ») et produit des vecteurs creux (sparse), car un document ne contient qu’une petite fraction du vocabulaire global.
2. TF–IDF (Term Frequency–Inverse Document Frequency)
Pour chaque terme t dans un document d, on calcule d’abord la fréquence (TF) :
TF(t,d) = (nombre d'occurrences de t dans d) / (nombre total de mots dans d)
Ensuite, on mesure la rarété des documents (IDF) dans un corpus de N documents :
IDF(t) = log(N / DF(t))
Où DF(t) est le nombre de documents contenant t. Le score TF–IDF est alors le produit :
TF-IDF(t,d) = TF(t,d) × IDF(t)
Cette pondération va permettre de valoriser les mots fréquents dans un document mais rares dans le corpus global, améliorant la distinction des termes clés.
Par exemple, si “chat” apparaît 3 fois dans un document de 100 mots (TF=0.03) et figure dans 100 des 1000 documents (IDF≈log(1000/100)=2.3), alors TF-IDF(chat,d)≈0.07. Cependant, cette représentation reste statique (les vecteurs ne changent pas selon le contexte) et produit des vecteurs creux, ce qui peut limiter son efficacité sur de très grands corpus.
3. Word Embeddings denses
Les Word Embeddings denses représentent chaque mot par un vecteur de faible dimension (généralement 100 à 300), appris automatiquement à partir d’un grand corpus de textes. Ces vecteurs capturent la proximité sémantique entre les mots : deux mots proches en sens auront des vecteurs orientés de façon similaire.
- Word2Vec : deux architectures principales
- CBOW (Continuous Bag of Words) : prédit le mot central à partir des mots qui l’entourent. Par exemple, dans « le chat dort sur le tapis », CBOW utilise les mots [« le », »dort », »sur », »le », »tapis »] pour ajuster le vecteur de « chat ».
- Skip-Gram : prédit le contexte (les mots voisins) à partir d’un mot cible. Ici, Skip-Gram prend « chat » pour prédire [« le », »dort », »sur », »le », »tapis »]. Ces deux méthodes apprennent les vecteurs en maximisant la probabilité des cooccurrences observées.
- GloVe (Global Vectors) : combine les statistiques globales de cooccurrence et la factorisation de matrice. Il construit une matrice de cooccurrence mot × mot, puis ajuste les vecteurs de façon à ce que leur produit scalaire corresponde au logarithme de la fréquence de cooccurrence.
Une fois appris, chaque mot dispose d’un vecteur fixe, quel que soit le contexte d’usage. Pour mesurer la similarité, on calcule la cosine entre deux vecteurs : un score proche de 1 indique une forte similarité sémantique (ex. « roi » et « reine »), tandis qu’un score proche de 0 ou négatif signale des sens éloignés.
Modélisation et algorithmes
Une fois vos données vectorisées, plusieurs familles d’algorithmes peuvent être appliquées selon la tâche :
1. Modèles traditionnels
Les modèles traditionnels exploitent des représentations textuelles statiques (Bag-of-Words, TF–IDF) pour effectuer des tâches de classification :
- Régression logistique :
- Modèle linéaire qui apprend un poids pour chaque mot (ou n-gramme) afin de prédire la probabilité d’appartenance à une classe (ex. spam vs non-spam).
- Atouts : rapidité d’entraînement, interprétabilité des coefficients (on peut voir quels mots influencent la prédiction).
- Naïve Bayes :
- Fondé sur le théorème de Bayes, il calcule la probabilité d’une classe donnée l’apparition des mots, en supposant leur indépendance conditionnelle.
- Atouts : très rapide, fonctionne bien même avec un petit nombre d’exemples, particulièrement adapté aux données textuelles binaires.
- SVM (Support Vector Machine) :
- Recherche l’hyperplan qui maximise la marge entre différentes classes dans un espace à haute dimension.
- Atouts : robustesse face aux données de taille moyenne et aux dimensions élevées, bonne gestion des classes déséquilibrées.
2. Réseaux de neurones séquentiels
Ces architectures sont conçues pour traiter la séquentialité du texte :
- RNN (Recurrent Neural Network) :
- Chaque token met à jour un état caché qui transporte l’information de la séquence précédente.
- Limite : problème de vanishing gradient, difficulté à mémoriser les dépendances à long terme.
- LSTM (Long Short-Term Memory) :
- Introduit des cellules de mémoire et trois portes (entrée, oubli, sortie) pour contrôler le flux d’information.
- Avantage : capable de conserver et d’oublier sélectivement des informations, idéal pour capturer les longues dépendances.
- GRU (Gated Recurrent Unit) :
- Similaire aux LSTM mais avec deux portes (mise à jour et réinitialisation), plus léger et plus rapide.
- Cas d’usage : lorsque l’on cherche un compromis entre performance et coût computationnel.
3. Transformers et mécanisme d’attention
Les transformers reposent sur le mécanisme d’attention, supprimant la nécessité d’un traitement strictement séquentiel :
- Self-attention :
- Chaque token prend en compte tous les autres tokens pour construire une représentation contextuelle.
- Capacité à modéliser efficacement les relations à longue distance.
- Multi-head attention :
- Plusieurs têtes d’attention parallèles capturent différentes facettes sémantiques et syntaxiques.
- Modèles phares :
- BERT : bidirectionnel, optimisé pour la compréhension (classification, Q&A, NER).
- GPT : unidirectionnel, orienté génération de texte fluide.
- T5 : convertit toutes les tâches NLP en tâches de « texte à texte ».
- DistilBERT : version allégée de BERT, plus rapide à l’inférence.
- Fine-tuning :
- Adaptation des modèles pré-entraînés sur un petit jeu de données spécifique pour optimiser la performance sur une tâche ciblée.
Ces approches permettent de sélectionner le modèle le plus adapté à vos besoins, en équilibrant précision, vitesse d’entraînement et ressources disponibles.