Sauter au menu Sauter au contenu
PraedictIA

Les outils et logiciels de traitement du langage naturel

Le langage naturel est une structure de données naturellement complexe et ambiguë. Au-delà des variances sémantiques qui existent entre les différentes langues, au niveau d’une même langue il existe un nombre élevé d’irrégularités grammaticales et d’ambiguïtés linguistiques, p. ex. les diverses significations pour un même mot selon le contexte, les expressions métaphoriques, les verbes irréguliers, etc.

La complexité du langage naturel

Des expressions comme « un feu rouge grillé », « il pleut des cordes » « atteindre la vitesse de croisière » font partie intégrante du contenu textuel que la machine devrait traiter. Un humain qui maîtrise une langue comprendra sans problèmes qu’un feu rouge grillé est une métaphore qui fait référence à une infraction routière, ce qui n’est pas le cas des machines. Les expressions qui ponctuent nos conversations courantes sont un défi sémantique de taille pour un programme informatique.

L’ambiguïté lexicale est une autre forme de complexité linguistique. Par exemple, « j’adore manger des avocats » fera appel au sens rationnel d’un humain et lui fera comprendre que le sujet adore manger des avocats. Pour une machine, le mot « avocat » fait aussi référence au professionnel juridique. La sémantique y est donc ambiguë. À l’instar des humains, il est important que le programme de traitement du langage naturel prenne en compte le contexte (du mot et de la phrase) pour en déterminer la signification correcte.

Le traitement du langage naturel : mode de fonctionnement

Le traitement du langage naturel couvre un grand nombre de techniques permettant de désambiguïser le contenu textuel et d’en extraire la sémantique correctement.

Le prétraitement des données

Lors de l’élaboration d’un programme de traitement du langage naturel, la première étape consiste à structurer le contenu textuel. Sachant que le texte est considéré comme un contenu non structuré, le traitement automatique des données requiert un format structuré. Cette phase regroupe un ensemble d’étapes de transformation de données dont :

  • La découpe du texte en unités lexicales élémentaires (tokenization) implique la fragmentation du contenu textuel en un ensemble d’unités lexicales élémentaires aussi appelées jetons (token) pour spécifier au programme de traitement du langage naturel la nature de chacune des entités (mots, ponctuation, caractères spéciaux, etc.).
  • La représentation par sac de mots (bag-of-words) permet de faire l’inventaire de l’ensemble des mots utilisés dans le texte pour élaborer un dictionnaire. Le texte sera donc représenté sous la forme d’un vecteur qui indiquera la fréquence à laquelle chacun des mots apparaît. Cette étape est déterminante pour la performance des systèmes de traitement du langage naturel.
  • Le plongement lexical (word embedding) permet de représenter chaque mot sous la forme d’un vecteur constitué de nombres réels. Avec cette numérisation, les programmes informatiques pourront comprendre que deux mots sont sémantiquement proches selon leurs apparitions dans des contextes similaires. Par exemple, les mots voitures et motos ont bien des chances de se retrouver dans des contextes similaires ou liés. Ainsi, les programmes de traitement du langage naturel apprendront que les voitures et les motos sont sémantiquement reliées.

L’algorithmique du traitement du langage naturel

Cet algorithme permettra d’effectuer les différentes tâches attendues (analyse des sentiments, fouille de données, etc.). Deux approches algorithmiques sont en lien avec le traitement du langage naturel :

  • L’approche algorithmique à base de règles consiste à introduire manuellement un ensemble de règles permettant d’associer le contenu textuel à de la connaissance et à de la sémantique.
  • L’approche algorithmique basée sur l’apprentissage machine et l’intelligence artificielle présente des limites compte tenu de la variabilité de la structure du texte; les mots peuvent effectivement se présenter de manière ambiguë et différente par rapport aux règles prévues. L’apprentissage machine permet d’utiliser un ensemble de données d’entraînement où la découpe et l’association de la sémantique sont spécifiées par le développeur, afin d’apprendre à la machine à inférer la même sémantique pour les nouvelles données. Cette approche, qui requiert des données annotées, présente un choix judicieux; un modèle bien entraîné pourrait performer avec des textes assez variés dont la structure serait imprévisible.