Qui n’a jamais fantasmé d’avoir un assistant virtuel qui comprendrait tout ce qu’on lui dit ou écrit ?
“Quand sort le prochain Tarantino ?” “Combien d’habitants y’a-t-il au Liechtenstein ?” “Ca va me couter combien d’aller à Bali demain ? “ Pour faire simple, on attend deux choses de notre machine :
qu’elle comprenne ce qu’on lui demande qu’elle nous trouve la réponse Aujourd’hui on s’intéresse à cette première partie, qui consiste à faire comprendre du texte à un ordinateur !
Le Natural Language Processing, NLP pour les intimes ou TAL pour les francophones, c’est justement l’art qui permet de transformer des lettres, des mots ou des phrases pour qu’ils soient exploitables par une machine !
Est-ce vraiment nécessaire ?
“Un peu mon neveu car ta machine elle ne comprend que les nombres ! Donc si tu lui donnes des lettres, tu ne vas pas aller très loin et tu vas l’attendre longtemps ton billet d’avion pour Bali ! “ Le NLP est la brique nécessaire pour traduire dans le langage des machines notre langage d’humain ! Nous avons choisi d’aborder ce sujet en personnifiant le NLP. Dans cet article nous suivrons donc les pérégrinations de notre héros Norbert La Pipelette un robot spécialiste du NLP.
Evolution de Norbert à travers les âges
Avant l’intelligence artificielle Norbert à l'âge de pierre : One hot encoding Au commencement, Norbert avait le QI d’une patate mais la mémoire d’un éléphant. Il passait son temps à compter les mots ! Mais alors il les comptait bêtement sans réfléchir ! C’est ce qu’on appelle l’encodage one-hot (one-hot encoding en anglais).
Pour encoder une phrase il suffit d’indiquer quels mots sont présents dedans. On obtient ainsi des paquets de mots (vecteurs pour ceux qui aiment les maths) très simples avec un ou plusieurs 1 et que des zéros ! Hop l’ordinateur comprend !
Ok c’est pas mal mais du coup la seule chose que sait Norbert c’est si un mot est présent ou non, on peut faire mieux.
One-hot encoding sur un exemple
Norbert à l'âge de bronze: TFidf Un beau matin, Norbert se réveille et se dit :
“Y’a quand même pas mal de mots qui servent à rien : soit parce qu’ils reviennent tout le temps, soit parce qu’ils n’apparaissent presque jamais. Ces mots là ils n’apportent aucune information, je peux les oublier.“ Il décide donc de conserver la logique précédente, de compter les mots, en ajoutant une astuce : pondérer par leur rareté. En gros, les mots qui apparaissent tout le temps et partout (ex: le, la, être ..) auront un poids très faible, alors que les mots plus rares mais très présents dans une phrase donnée auront un poids fort ! C’est bon, Norbert a ses chiffres et en plus il sait quels sont les mots les plus importants !
Bon par contre Norbert, il y a quand même un léger problème, tu ne prends pas du tout en compte le contexte ni la relation entre les mots. La preuve dans l’exemple ci-dessous, la “pièce” de deux euros ou la “pièce” à vivre ne sont pas différenciées ! Bref, Norbert il va falloir que tu prennes en compte ton environnement !
La TFidf sur un exemple
Arrivée de l’Intelligence Artificielle Jusqu’ici Norbert ne fait que décrire un mot sans se soucier de son contexte. Il obtient donc potentiellement une information très différente pour des mots qui ont le même sens mais qui s’écrivent différemment. Dans notre exemple : Norbert devrait nous donner une information similaire pour “euros” et “pièces” mais ce n’est pas le cas pour la Tfidf.
Norbert décide donc de se creuser les méninges !
On entre alors dans une nouvelle ère du NLP.
Dates de sorties d’algorithmes majeurs
Norbert à l’âge de fer Word2Vec & GLOVE Déambulant dans cette nouvelle contrée, Norbert trouve un vieux grimoire ! Il l’ouvre et commence à lire, malheureusement, certains mots se sont effacés avec le temps. Norbert ne baisse pas les bras et à force de lire entre les lignes il finit par se rendre compte qu’il arrive à prédire les mots manquants en se basant sur ceux qui les entourent ! Cet exercice lui servira d’apprentissage pour la plupart de ses prochaines aventures.
“Mais alors ? Si j’arrive à prédire le mot qui manque dans une phrase c’est que j’arrive à comprendre son contexte !” “C’est quand même une drôle de coïncidence, que certains mots apparaissent souvent ensemble, peut-être qu’ils sont liés ?” Norbert se dit qu’il pourrait essayer de comprendre les liens qu’il y a entre les mots pour être toujours plus précis. Par exemple : prenez un “roi”, enlevez lui la notion de “masculin”, ajouter lui la notion de “féminin”. Abracadabra vous avez une “reine” !
Fasttext Norbert n’a pas fini de s’améliorer. En effet certaines langues comme l’allemand ou le turc ont un fonctionnement assez extraordinaire : elles peuvent condenser 3 mots en un seul.
Et si on s’intéressait cette fois non pas à des mots mais plutôt à des morceaux de mots ? C’est clair qu’en faisant ça on va pouvoir aller plus loin ! Norbert est maintenant capable de prédire les morceaux de mots suivants et les liens entre ces morceaux de mots !
Pour résumer, Norbert est capable d’adapter sa compréhension en fonction du mot, de son sens et de son contexte, par contre on a toujours une seule représentation par mot quelle que soit la phrase dans laquelle il le lit. Norbert doit encore apprendre qu’un mot peut avoir différents sens suivant la phrase dans laquelle il est utilisé.
RNN le poisson rouge Poursuivant sa quête de performance, Norbert découvre un beau jour la riante vallée des réseaux de neurones, un lieu peuplé d’étranges populations. Beaucoup d’entre eux sont de fins observateurs (traitement d’images) mais Norbert veut surtout rencontrer ceux qui savent parler.
Alors qu’il déambule curieux, Norbert fait la rencontre d’un poisson rouge. Son petit nom le Recurrent Neural Networks, RNN pour les intimes. Un réseau de neurone qui prend en compte le mot actuel et aussi les mots précédents. Problème: il oublie vite et du coup seuls les mots très proches sont exploités. Lorsqu’un RNN doit prédire le mot manquant d’une phrase il se souvient en partie de ce qu’il a lu et peut donc deviner le mot manquant en utilisant cette information.
Ce que voit RNN quand on lui demande de deviner le mot manquant
Par contre, un tour de bocal et quelques mots plus loin RNN ne se souvient plus trop de ce qu’il a lu.
LSTM l’éléphant Après sa rencontre du poisson rouge, Norbert tombe sur un autre énergumène qui cette fois a une sacrée mémoire. L’éléphant, ou Long-Short Term Memory (LSTM) mémorise les mots passés sur le long terme pour pouvoir les utiliser comme contexte pour prédire ceux qui manquent. Norbert a désormais moins de chance de se tromper !
Ce que voit LSTM quand on lui demande de deviner le mot manquant
Transformer le singe Arrive enfin un dernier spécimen : le transformer ! Ce n’est pas Optimus Prime ou Bumblebee. On parle ici d’une architecture agile comme un singe qui se base principalement sur le concept d’attention. On calcul en permanence l’importance de chaque mot d’une phrase pour définir le contexte d’un mot et ainsi l’information qu’il contient. Dans l'exemple qui suit, le transformer déduit de la structure de la phrase que les mots les plus intéressants pour deviner celui qui manque sont l'action liée à ce mot : "donné deux" et ce qui a été donné : "deux euros". Il est malin ce transformer !
Ce que voit Transformer quand on lui demande de deviner le mot manquant
Fort de ces nouvelles connaissances Norbert se prépare à développer ses dernières techniques de NLP.
Le présent Le moonwalk avec ELMo Il aura fallu attendre 2018 presque 10 ans après la mort de Mickael Jackson (oui, déjà) pour que Norbert applique le moonwalk à la compréhension de texte. Kesako ? ELMo est un modèle bi-directionnel qui se base sur les LSTM (nos mémoires d’éléphants). Cela signifie qu’il lit les phrases à l’endroit et à l’envers pour en déduire le contexte en retenant les mots qu’il a lu. Bref, Norbert se balade en moonwalk dans votre texte ! Il peut donc utiliser les mots précédents mais aussi ceux qui suivent pour deviner le mot manquant, comme le ferait un humain.
Norbert fan de CamemBERT ! La dernière méthode découverte par Norbert dans ses aventures c’est BERT (de Google). BERT est un transformer (notre fameux singe agile) qui est capable d’apprendre deux tâches en même temps : prédire des mots dans un texte à trous et prédire si une phrase en suit une autre. BERT a été publié en octobre 2018, depuis de nombreuses variantes et amélioration ont étés publiées. En novembre 2019 une version française a été publiée sous le doux nom de CamemBERT.
Vous l’aurez compris, à travers l’histoire de Norbert, la compréhension du texte par la machine a beaucoup progressé depuis ses débuts et tout s’est accéléré assez récemment. L’arrivée de l’IA a permis d’incroyable progrès, et depuis la sortie de BERT de nombreux dérivés ont été proposés pour aller toujours plus loin.
Cobbaï s’appuie sur la pointe de la technologie du NLP afin de permettre à ses clients de valoriser toutes leurs données textuelles (rapports de non-qualité, bonnes pratiques, rapports de maintenance ou retours clients). Vous voulez en savoir plus ?
Sources :