Blog ENI : Toute la veille numérique !
Offre estivale️ ☀️ : de -20% à -30% sur les livres en ligne et vidéos, avec le code PLAGE Cliquez ici !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici

Le traitement du langage naturel

Introduction

Le chapitre précédent a permis de préciser deux champs importants relatifs au traitement automatique du langage naturel : l’intelligence artificielle et la linguistique. Avant d’entrer concrètement dans le sujet, avec Python et les bibliothèques Python spaCy, NLTK, Gensim ou encore scikit-learn, ce chapitre est consacré au traitement automatique du langage naturel lui-même, c’est-à-dire aux outils et thématiques qui le composent. Le but est clairement de définir préalablement des notions et des éléments de vocabulaire, avant de les rencontrer dans les chapitres expérimentaux. D’autant que nombre d’éléments de vocabulaire ou de terminologies utilisées dans le TALN le sont en général et usuellement en langue anglaise.

Pour chaque sujet, nous prendrons éventuellement des exemples de bibliothèques Python que nous utiliserons par la suite. Les premières propositions d’implémentations des différents sujets arriveront dès le chapitre suivant.

Le nettoyage préalable d’un modèle

Avant de construire un modèle de traitement automatique du langage naturel, il est essentiel d’effectuer un nettoyage préalable des données textuelles. Ce processus vise à éliminer le bruit, à normaliser le texte et à préparer les données pour une analyse plus précise et efficace.

1. Nettoyage de base

Il est souvent nécessaire de procéder à un nettoyage selon plusieurs critères :

  • la suppression des caractères spéciaux ;

  • la conversion en minuscules ;

  • la gestion des accents et des diacritiques (« Benoît » devient « Benoit ») ;

  • plus généralement, la transformation des caractères non ASCII.

L’usage des expressions régulières est souvent très pratique pour cette étape parfois plus compliquée qu’il n’y paraît au premier abord. Par exemple, si vous vous intéressez à une base de documents traitant de langages informatiques, la suppression de caractères comme « + » ou « # » va entraîner l’assimilation des langages C++ et C# au langage C. Une méthode possible est alors de remplacer « + » par « plus » et « # » par « sharp »...

La notion d’hyperparamètre

Lorsque l’on travaille avec un modèle d’intelligence artificielle, on a ce que l’on appelle les features, les colonnes de notre modèle, les données qui participent fonctionnellement à l’apprentissage et donc à la prédiction future. Et il y a d’autres données qui sont, elles, dédiées spécifiquement au réglage de l’apprentissage. C’est ce que l’on appelle des hyperparamètres.

Lorsqu’il s’agit de modèles TALN, tels que les modèles de classification de texte, les modèles de génération de texte ou les modèles de traduction automatique, plusieurs hyperparamètres sont particulièrement importants. Par exemple, le choix du nombre de couches et de neurones dans un réseau neuronal est un hyperparamètre important à considérer. Il peut affecter la capacité du modèle à capturer des structures complexes et à généraliser efficacement. Un autre hyperparamètre essentiel est le taux d’apprentissage, qui contrôle la vitesse à laquelle un modèle est ajusté aux données. Un taux d’apprentissage trop élevé peut entraîner une convergence rapide mais instable, tandis qu’un taux d’apprentissage trop faible peut ralentir...

La vectorisation et le bag of words

La vectorisation fait référence au processus de conversion du texte en une représentation vectorielle, où chaque mot ou terme est associé à un vecteur numérique. Cette transformation permet de capturer des informations sémantiques et syntaxiques du texte, ce qui facilite son traitement et son analyse par les modèles d’apprentissage automatique.

Le bag of words (ou sac de mots en français) est une méthode couramment utilisée pour la vectorisation du texte. Elle consiste à considérer chaque document comme une collection non ordonnée de mots, en ignorant donc l’ordre et la structure grammaticale du texte. Le sac de mots représente le texte sous forme d’un vecteur de comptage, où chaque dimension correspond à un mot unique et la valeur associée à chaque dimension indique le nombre d’occurrences de ce mot dans le document.

Par exemple, supposons que nous ayons deux phrases : « J’aime les pommes » et « Les pommes sont délicieuses ». En utilisant le sac de mots, nous pouvons construire un vecteur pour chaque phrase en comptant le nombre d’occurrences de chaque mot unique : [1, 1, 1, 0, 0] pour la première phrase et [0, 1, 1, 1, 1] pour la deuxième phrase. Chaque dimension du vecteur correspond...

Le topic modeling

Le topic modeling, parfois traduit en « modélisation thématique » en français, est une technique qui vise à découvrir des sujets/thématiques (topics) dans un corpus de documents. En TALN, on utilise des algorithmes comme le Latent Dirichlet Allocation (LDA) pour identifier les sujets principaux d’un corpus de textes.

On peut par exemple utiliser Gensim pour accéder à une implémentation de LDA. Après prétraitement des données, on crée un dictionnaire de mots issus du corpus de documents, puis on entraîne un modèle dit LDA. Les sujets seront définis par une liste de mots. Ainsi, on peut obtenir ces deux topics :

  • { football, stade, supporter, baseball } qui correspond vraisemblablement à un topic « sport ».

  • { ministre, députée, chambre, loi } qui correspond vraisemblablement à un topic « politique ».

Avec LDA (et c’est le cas également avec d’autres algorithmes), le choix des hyperparamètres est important. Ici, il sera essentiel de définir correctement les deux hyperparamètres suivants :

  • le nombre de topics ciblé ;

  • le nombre de mots par topic.

Le word embedding

Le word embedding est une technique qui consiste à représenter les mots sous forme de vecteurs numériques dans un espace vectoriel. Cette technique est en général traduite en français par plongement lexical. Elle repose sur le fait que les mots qui apparaissent dans des contextes similaires ont tendance à avoir des significations équivalentes. C’est donc une approche distributionnelle et statistique qui transpose une éventuelle similarité sémantique de deux mots dans leurs contextes de phrases ou de textes, en une similarité vectorielle dans un espace vectoriel. Exprimé autrement : un mot se définit aussi par son contexte d’utilisation et donc par les mots qui l’entourent dans le texte.

L’algorithme central en matière de word embedding, massivement utilisé en TALN, est l’algorithme d’entraînement de modèles Word2Vec. Cet algorithme, qui utilise des réseaux de neurones, se décline selon deux architectures différentes :

  • l’architecture CBOW, dont l’objectif est de prédire un mot quand on a son contexte, c’est-à-dire le voisinage de ce mot dans le texte ;

  • l’architecture skip-gram, dont l’objectif est inverse : prédire un contexte, les mots du contexte, quand on a en entrée un mot.

Nous aurons l’occasion...

La fréquence d’apparition d’un mot

Cette question est centrale, notamment lors de la fouille de textes, c’est-à-dire lors de l’exploration d’un corpus de plusieurs dizaines ou centaines de documents par exemple.

Pour un mot donné, on va se poser plusieurs questions concernant :

  • La fréquence d’apparition du mot M dans le document donné D.

  • La fréquence d’apparition du mot M parmi tous les documents : est-il fréquemment utilisé au sein de l’ensemble des documents ? Quelle proportion de documents ne l’utilise pas ?

  • La fréquence d’utilisation du mot M dans le document D en tenant compte de sa fréquence au sein de chaque document du corpus. Un mot absent d’un document est une information qu’il faut contextualiser aussi par la possibilité qu’il soit par exemple systématiquement présent dans tous les autres documents.

Exprimé autrement, on s’intéresse ici à la fréquence d’apparition d’un mot, non seulement par sa fréquence au sein d’un document, mais aussi et surtout par sa fréquence au sein de l’ensemble du corpus de documents.

Pour procéder à ce type d’analyse, on utilise en général la méthode TF-IDF (Term Frequency - Inverse Document Frequency). Pour ce faire, concrètement...

Les réseaux de neurones récurrents (RNN)

Les RNN (pour Recurrent Neural Network) représentent une architecture de réseau neuronal couramment utilisée dans le TALN. Ils sont conçus pour traiter des données séquentielles, telles que du texte, en conservant une mémoire interne des états précédents. Les RNN sont souvent utilisés pour des tâches telles que la classification de texte, la traduction automatique et la génération de texte.

Le fonctionnement des RNN repose sur l’utilisation de boucles récurrentes qui permettent aux informations d’être propagées d’une étape à l’autre dans la séquence. À chaque étape, le RNN prend en compte l’entrée courante et la sortie de l’étape précédente, ce qui lui permet de conserver une mémoire à court terme et de capturer les dépendances séquentielles.

Les RNN peuvent être utilisés dans différentes configurations. On peut notamment citer ces configurations :

  • les réseaux de neurones récurrents à état caché simple (Simple RNN) ;

  • les réseaux de neurones récurrents à longue mémoire (LSTM - Long Short Term Memory) ;

  • les réseaux de neurones récurrents à mémoire...

Les réseaux de neurones convolutionnels (CNN)

Les CNN (pour Convolutional Neural Network) sont généralement utilisés en vision par ordinateur, mais ils sont également utilisés en traitement automatique du langage naturel. Ils peuvent être appliqués à des objectifs tels que la classification de texte, l’extraction d’informations et l’analyse de sentiments.

Le fonctionnement des CNN repose sur l’utilisation de filtres de convolution qui sont appliqués sur des fenêtres de mots adjacentes dans le texte. Ces filtres permettent de capturer les relations locales entre les mots et de détecter des motifs significatifs. Les caractéristiques extraites par les filtres sont ensuite réduites en utilisant des opérations telles que le pooling, qui agrège les informations les plus importantes.

Les CNN peuvent être entraînés à reconnaître automatiquement des motifs linguistiques et à apprendre des représentations sémantiques des mots et des phrases à partir des données d’entraînement.

Plusieurs frameworks fournissent une approche CNN : c’est le cas de PyTorch et de Tensorflow, pour les plus connus. En revanche, spaCy et NLTK n’incluent pas, à ce jour, de modèles linguistiques pré-entraînés avec CNN, ce qui n’empêche...

Les réseaux de neurones Transformers... et ChatGPT

Le fonctionnement de GPT-3.5 repose sur l’idée de modélisation de langage Transformer. Il utilise un ensemble de couches d’attention et de transformations linéaires pour capturer les relations entre les mots dans un texte. Contrairement aux modèles RNN qui traitent le texte séquentiellement, les Transformers sont conçus pour capturer les dépendances à longue distance et le contexte global en parallèle.

L’architecture Transformer de GPT-3.5 se compose de plusieurs blocs de Transformers empilés. Chaque bloc comprend une couche d’attention suivie d’une transformation linéaire et d’une couche de normalisation. L’attention multitête permet au modèle de se concentrer simultanément sur différentes parties du texte pour capturer les relations entre les mots à différentes échelles.

Lorsqu’un texte est donné en entrée à GPT-3.5, il est découpé en séquences de tokens (mots ou sous-mots) et représenté sous forme de vecteurs. Ces vecteurs d’entrée sont ensuite passés à travers les blocs de Transformers pour obtenir une représentation contextuelle des mots. GPT-3.5 est capable d’apprendre à partir de grandes quantités de textes préalablement...

BERT

BERT (Bidirectional Encoder Representations from Transformers) est un modèle de langage basé sur des transformateurs pré-entraînés. Il permet de capturer des informations contextuelles dans le texte.

BERT adopte une approche bidirectionnelle qui lui permet de capturer le contexte des mots dans un texte de manière plus précise. Il repose sur l’utilisation de transformateurs et sur une architecture de réseau neuronal. L’entraînement de BERT se fait en deux étapes : le pre-training et le fine-tuning.

Lors du pre-training, BERT est exposé à des quantités de textes non étiquetés provenant de sources diverses. Une partie aléatoire des mots dans le texte est masquée et le modèle est entraîné à prédire ces mots manquants en se basant sur le contexte environnant. De plus, BERT apprend également à prédire si deux phrases sont consécutives dans le texte ou non.

Lors du fine-tuning, BERT est entraîné à des tâches spécifiques, telles que la classification de texte, la compréhension des questions-réponses ou la traduction automatique. Pendant cette phase, BERT est entraîné sur des ensembles de données étiquetées spécifiques à la tâche, ce qui lui permet d’ajuster ses paramètres et...

L’évaluation de modèle TALN

L’évaluation d’un modèle entraîné de traitement automatique du langage naturel est essentielle pour mesurer ses performances et sa capacité à résoudre la tâche spécifique pour laquelle il a été entraîné. En clair : le modèle est-il à même de prédire correctement quelque chose qu’il est supposé savoir prédire ?

L’évaluation peut être réalisée en utilisant plusieurs indicateurs de qualité qui évaluent différents aspects du modèle. Voici quelques indicateurs de qualité de modèles :

  • Précision : la précision mesure la capacité du modèle à produire des résultats corrects par rapport à un ensemble de données de référence. Elle est souvent utilisée pour évaluer des tâches telles que la classification de texte, la détection d’entités nommées ou la désambiguïsation lexicale. Par exemple, en classification, la précision correspond au rapport entre le nombre de documents correctement prédits en une classe C et le nombre global de documents prédits en une classe C.

  • Recall (rappel) : le rappel évalue la capacité du modèle...

Conclusion

Ce chapitre a permis d’évoquer des notions très variées à propos de TALN, ce qui a également permis d’aborder un certain nombre de points de vocabulaire relatifs au domaine. Il est à présent temps d’entrer dans le vif du sujet, avec les questions d’installation et d’utilisation des différents outils que nous allons exploiter : Python, bien sûr, mais également Jupyter ainsi que les bibliothèques spaCy, NLTK, Gensim ou encore scikit-learn.