L’intelligence artificielle doit permettre d’améliorer le traitement automatique de masses de données textuelles. Cependant les textes étant plus compliqués à modéliser que les autres données, ils nécessitent un savoir-faire particulier.

Chez QWAM nous travaillons depuis de nombreuses années sur ce sujet, nous vous proposons dans cet article de vous fournir une première analyse des modèles existants, ainsi que les applications qui permettent de réaliser les classements automatiques de textes les plus pertinents.

Si vous avez un peu pratiqué le « machine learning », ou si vous hésitez entre « machine learning » et « deep learning » pour une application dans votre entreprise, ce billet vous sera utile.

Je vous propose de voir pour démarrer en quoi le « deep learning » est une réelle avancée pour le classement des textes.

Un classement supervisé en 3 minutes

Parmi les utilisations de l’intelligence artificielle nous nous intéressons ici au classement supervisé, qui constitue la majorité des « use cases » de son application.

Le classement supervisé consiste à montrer à une machine une masse d’exemples avec le classement effectué pour chacun d’eux. À chaque exemple est attribué une classe. À partir de cette masse, la machine, à l’aide d’algorithmes, effectue un apprentissage, et réduit alors le problème à un modèle.

Ensuite, on présente un nouvel exemple inconnu à la machine, qui à l’aide de son modèle est capable d’effectuer une prédiction, c’est-à-dire, prédire dans quelle classe ranger cet exemple.

Représenter un tel problème pour une machine s’effectue sous forme de séries de nombres à manipuler ensemble. Nos cours de mathématiques nous rappellent que les matrices et les vecteurs, sont le meilleur moyen d’y parvenir. Matrices, vecteurs et tenseurs représentent tous la même notion : un vecteur est une matrice à une seule dimension alors qu’un tenseur est une matrice à N dimensions.

Ainsi, tout problème du « machine learning » en classement supervisé peut être représenté de la manière suivante :

(X) * (θ) = (Y)

Où :

X est la matrice des exemples, rangés en ligne, où chaque colonne est une propriété de l’exemple. X est fournie au départ.

Exemple : pour prédire le prix d’un appartement à Paris, X possède en ligne des milliers d’exemples où chaque colonne est une caractéristique de cet appartement (surface, localisation, nombre de pièces, services, âge du propriétaire, etc.).

Y est le vecteur des classes de destination pour chaque exemple. Pour chaque exemple en ligne, on fournit la classe de destination sur la même ligne. Cette association X/Y est la formalisation de l’apprentissage.

Y Peut être dans notre exemple la classe de prix de l’appartement (moins de 100 000 €, de 100 000 à 300 000 €, etc.).

θ est le vecteur des poids à appliquer sur chacune des propriétés de X pour obtenir le classement en Y. Ainsi, on comprend qu’une propriété/caractéristique participant au classement aura un poids fort (le nombre de pièces dans notre exemple), alors qu’une propriété n’y participant pas aura un poids faible (âge du propriétaire dans notre exemple).

Réaliser un apprentissage revient donc, à partir de la donnée de X et de Y, à calculer les poids θ qui est l’inconnue.

En effet, à priori on ne sait pas dans quelle mesure les caractéristiques participent au classement (même si pour l’exemple des appartements à Paris, on peut l’imaginer car tout le monde se frotte tôt ou tard à un problème immobilier).

Ce type d’équation est très courant en informatique numérique et il existe nombre d’algorithmes pour le faire.

Le plus basique est la régression linéaire mais il en existe d’autres comme le « Naive Bayes », ou le « SVM » qui en sont des améliorations très significatives. Cette activité représente historiquement le « machine learning » « classique » ou apprentissage automatique.

Une fois les poids calculés, tout est alors connu. Le vecteur des poids est le modèle.

Réaliser une prédiction consiste à fournir un nouvel exemple, soit une seule ligne de la matrice X, donc ne figurant pas dans X, y appliquer les poids θ préalablement calculés et obtenir Y.

Dans notre exemple, c’est de fournir au modèle les caractéristiques d’un appartement inconnu et d’en déduire sa classe de prix.

Ce principe peut être étendu aux textes, à condition que l’on sache représenter les exemples de textes avec suffisamment de propriétés significatives.

La difficulté pour les textes est de créer une matrice X à partir de propriétés susceptibles de bien représenter un contexte afin de lui attribuer une classe.

Le texte reste, dans l’état des connaissances, le parent pauvre de l’apprentissage automatique du fait précisément de cette difficulté. On comprend le succès des applications d’apprentissage automatique sur les images (où les caractéristiques d’un pixel sont facilement détaillées) ou sur les problèmes ayant des caractéristiques détaillées (comme les appartements à Paris) où justement cette représentation est aisée.

Pour le texte, c’est plus compliqué. Il existe cependant plusieurs modèles de représentation, chacun avec ses forces et ses faiblesses.

Représenter des textes avec ses propriétés

Une matrice X vue plus haut doit être une suite de nombre réels ou entiers représentant les mots de la phrase d’une manière ou d’une autre.

Plusieurs méthodes existent pour représenter les propriétés d’un exemple de texte :

Méthode n°1 : le sac de mots

Le texte est considéré comme un sac où tous les mots sont en vrac. Pour limiter le poids du sac et éviter de passer du temps à traiter les mots sans intérêt (articles, conjonctions, pronoms, adverbes, etc.) on se limite aux mots les plus caractéristiques du document, à savoir les mots les plus rares qui sont présents dans le document mais qui ne sont pas représentatifs dans les autres documents.

L’algorithme « TF-IDF » est très bien adapté pour calculer pour chaque mot sa rareté au sein de la masse. L’idée est alors de numéroter tous les mots du corpus en les « racinisant » et de ne garder que les plus significatifs dans l’ordre d’importance décroissante. La matrice X est alors composée de N nombres qui sont les numéros attribués aux N mots les plus significatifs du document.

Ce modèle bien qu’il soit adapté pour ne s’intéresser qu’aux parties les plus signifiantes du texte ne tient pas compte de l’ordre des mots.

Méthode n°2 : la représentation mot à mot

Dans ce deuxième modèle chaque mot est numéroté dans un dictionnaire, mais à chaque mot, en plus de son numéro, il est possible de lui adjoindre des numéros issus d’autres caractéristiques (taille du mot, rang du mot dans la phrase, numéro de l’étiquetage grammatical ex : 4 verbes, 5 noms). Ainsi la place du mot dans la phrase est respectée, contrairement au sac de mots, tous les mots y sont représentés, avec plusieurs caractéristiques pour chaque mot.

Ce modèle apparait donc comme moins rustique que le sac de mot. Cependant s’il est plus riche, il est aussi un peu plus compliqué à construire.

Méthode n°3 : la représentation en succession de mots

Dans cette représentation, le « word2vec » est une avancée majeure. Il modélise les phrases à l’aide de la probabilité d’apparition des mots les uns à la suite des autres. Ainsi dans la phrase « Je manqe une tarte aux fraises », le complément « tarte aux fraises » a considérablement plus de chance d’apparaitre derrière « je mange », plutôt que le complément « des clous et des vis » par exemple. Il propose ainsi une représentation du texte très innovante.

« Word2vec » propose également un réseau de neurone peu profond (« Shallow neural network »), permettant de déduire des proximités de sens (exemples : amour, affection, attirance) entre les mots dans un corpus fourni.

On peut aussi lui demander de deviner des analogies et à la fourniture de l’assertion « l’homme est au roi, ce que la femme est à », il est en mesure de répondre « la reine ». À l’usage, ces analogies sont relativement limitées mais la représentation reste d’un intérêt majeur.

D’autres représentations existent pour la succession de mots, comme « Glove » assez proche dans sa philosophie de « word2vec » ou même des représentations basées non pas sur les successions de mots mais les successions de caractères.

Nous ne les étudierons pas ici, car nous restons dans ce papier au niveau du principe général de représentation.

L’intérêt du deep learning

Les représentations en sacs de mots et en mot à mot sont traitables par le « machine learning » classique car le nombre de propriétés reste limité. Avec la représentation en succession de mots, comme « word2vec », à chaque mot, on adjoint sa relation avec tous les autres mots proches, faisant ainsi exploser le nombre des propriétés à traiter.

L’apprentissage automatique étant très prometteur, les chercheurs se sont attaqués à des problèmes de plus en plus complexes, avec un nombre sans cesse croissant de propriétés. C’est notamment le cas du traitement d’images ou chaque pixel est représenté par un niveau de gris et l’on comprend vite qu’une image monte à plusieurs millions de pixels.

Le problème majeur auquel ont été confrontés les pionniers était la puissance de calcul exponentielle que cela demandait, où même les machines les plus puissantes n’y suffiraient pas. L’idée a alors été de faire le calcul par étape en sérialisant le travail en couches successives de cellules, où chaque cellule représente l’équation (X) * (θ) = (Y), avec X issu du classement de la couche précédente et Y servant de propriétés à la couche suivante.

Cette représentation de cellules interconnectées n’est pas sans rappeler la structure d’organisation des neurones du cerveau humain et le nom de « réseau de neurones » s’est vite imposé pour les désigner. Cette idée majeure d’empilement des couches en réseaux de neurones s’est avérée fournir un nouvel élan prometteur, permettant d’apprendre plus de choses, et a donné naissance au « deep learning » ou apprentissage profond.

Cette manière de segmenter le travail en cellules permet le traitement simultané d’un grand nombre de propriétés. Une définition couramment admise est que le « deep learning » est un réseau de neurones avec plus d’une couche centrale (hors input et output). Cependant, cela va plus loin car le « deep » learning implémente de nouveaux algorithmes, dédiés par exemple à l’analyse d’informations reliées en séries qui reviennent régulièrement sous forme d’occurrences. C’est le cas notamment des réseaux de neurones récurrents (RNN) qui conviennent bien à cette tâche.

Le « deep learning » est donc une méthode pour traiter des représentations d’exemples plus détaillés, donc susceptibles d’être plus proches de la réalité. Dans notre cas, on comprend aisément que la représentation « word2vec », même si elle est imparfaite, est cependant plus proche d’une représentation des phrases que peut en avoir un langage, plutôt qu’un sac de mots ou un mot à mot qui restent plus une représentation informatique qu’une réalité.

À quel niveau se situer : document ou phrase ?

Nous avons vu que le choix entre « machine learning » et « deep learning » est, dans les faits, un choix à effectuer entre une représentation des exemples. En sac de mots ou en mot à mot pour le « machine learning » classique, ou en succession de mots pour le « deep learning » avec word2vec.

En pratique, le modèle mot à mot est très difficile à utiliser. En effet, il faut rassembler beaucoup de propriétés pour caractériser correctement chaque mot et la succession des mots est mal représentée car il n’y a pas de véritable lien définit entre les mots. Le choix se résume donc entre sac de mots et succession de mots.

Cela revient à se poser la question de la manière dont on doit représenter le texte que l’on souhaite classer.

Cherche-t-on à classer des documents sans chercher vraiment à les comprendre, sans faire de détail si plusieurs sujets y sont abordés mais en sachant à peu près de quoi ils parlent ? Dans ce cas, nous n’avons pas besoin d’être très fins dans leur représentation et la représentation sac de mots conviendra très bien.

Cherche-t-on à classer des paragraphes ou même des phrases, en détaillant chaque sujet traité et en classant chacun d’eux ? Dans ce cas, la représentation par succession de mots s’impose.

Alors, « machine learning » ou « deep learning » ?

C’est donc le niveau de finesse que l’on souhaite qui conditionnera la représentation des exemples et par là, la technologie à appliquer.

Ceci ne fait que mimer une démarche que l’on fait naturellement quand on est amené à classer manuellement des textes :

  1. Les parcourt-on rapidement pour savoir de quoi ils parlent ?
  2. Ou bien les lit-on en détail pour le faire ?

Pour un classement de documents, en considérant chacun dans son ensemble, une représentation en sac de mots sera suffisante et performante, le « machine learning » classique conviendra alors très bien.

Pour un classement de paragraphes ou de phrases, une représentation en succession de mots comme « word2vec » sera nécessaire et devra être traitée avec du « deep learning ».

Le « machine learning » n’est pas enterré par le « deep learning » et il reste une option à considérer systématiquement en fonction de l’objectif visé.

Il faut donc savoir quelle représentation de la réalité nous souhaitons traiter.

L’équipe technique et R&D QWAM

Retrouvez prochainement la seconde partie de notre série sur le machine learning et le deep learning.

Pour en savoir plus

Intelligence artificielle : qui décide ?

Interview d’Ivan Monnier, CTO de QWAM suite à AI Paris