Réaliser un agent conversationnel en utilisant le deep-learning

Hervé Rincent

Hervé Rincent

29 sept. 2020

Laissez-moi vous raconter une histoire.

C’est l’histoire d’un loup. Un loup affamé. Depuis trois jours, il n’a rien mangé. Tout ça parce qu’il a MAL AUX DENTS !

"Ouille, ouille, ouille ! Au secours ! J’ai trop mal ! Aidez-moi !" Crie-t-il à longueur de journée. Qui voudrait s’approcher du loup pour l’aider ?

"Toi ? Ou bien toi, le lièvre ?

- Non, non, non, je le connais bien le loup, il a mangé mon frère, je ne lui fais pas confiance.

- Et toi, le chien, tu veux bien l’aider ?

- Moi, aider le loup, ce faux-frère qui mange les moutons que je garde ? Jamais !"

Le loup ne trouve personne qui ose entrer dans sa gueule pour le soigner. Il va trouver le crocodile : lui aussi a beaucoup de dents !

"Bonjour mon frère, comment vas-tu ?

- Pas mal, pas mal, répond le crocodile, et toi ?

- Oh, je souffre l’enfer : J’ai MAL AUX DENTS ! Tu n’aurais pas un conseil à me donner ?

- Hé ! Moi, j’ai mon dentiste attitré ! Regarde sur mon dos : l’oiseau qui est là, dès que j’ai mangé, il vient dans ma gueule me laver les dents.

- Voilà qui est pratique…

- Je vais lui demander s’il peut faire quelque chose pour toi. Mais attention, INTERDICTION DE L’AVALER ! tu m’as bien compris…

- Oui, oui, oui."

Voilà l’oiseau qui s’affaire dans la gueule noire du loup : il fouille et farfouille entre les dents pointues pour ôter toutes les petites saletés qui sont restées coincées. Le loup se sent vite soulagé, il se sent libéré de cet affreux mal de dents. Du coup, il sent qu’il a FAIM, très faim.

Et justement, il y a ce bel oiseau, là, juste dans sa bouche. IL L’AVALE ! GLOUP ! D’UN COUP !

"TRAITRE, hurle le crocodile furieux, disparais de ma vue où je te mets en pièces !"

C’est depuis ce jour-là qu’on ne voit plus le crocodile et le loup ensemble.

Mais, l’histoire ne finit pas là : Dans le ventre du loup, l’oiseau a sorti ses petits ciseaux et COUPE, COUPE, COUPE, il découpe son ventre, et ses fesses, et ses bras, et ses jambes, et sa tête. L’oiseau l’a MIS EN PIECES ! Puis, il s’est envolé pour retrouver son ami le crocodile.

Elle vous a plu ?

Utiliser le deep-learning pour répondre à des questions

Et maintenant, pouvez-vous répondre à la question (facile) suivante :

Qui entre dans la gueule du crocodile ?

Facile pour un humain.

Mais pour un ordinateur ? C'est moins simple. Car il faut comprendre l'histoire, et savoir que "Voilà l’oiseau qui s’affaire dans la gueule noire du loup" signifie qu'il y est entré.

C'est désormais possible grâce aux progrès réalisés sur le traitement du langage naturel (NLP). Ce domaine du deep-learning a connu plusieurs innovations récentes, dont le modèle de type BERT.

Sans entrer dans les détails, BERT (Bidirectional Encoder Representations from Transformers) est un modèle de deep-learning qui utilise une architecture de réseau de neurones très performante pour l'analyse du langage naturel.

Pour entraîner un modèle BERT sur la langue française, on lui soumet un grand nombre de textes et on masque certains mots aléatoirement. L'objectif est de doter le modèle de la capacité à prédire le mot manquant.

Les chercheurs français de l'INRIA ont appliqué ce procédé d'entraînent pour proposer un modèle pré-entrainé sur la langue française nommé "CamenBERT" (oui, on comprend que c'est français du coup...). C’est une avancée notable, car le corpus en langue française utilisé pour l’entrainement comporte 33Md de mots.

On dispose alors d'un point de départ pour ajuster le modèle sur un problème précis de traitement du langage naturel, tel que :

Le fine-tuning : affiner son CamenBERT

Pour entrainer le modèle à répondre à des questions en analysant un texte, on a besoin d'un jeu de données avec des questions et des réponses.

Plusieurs initiatives ont été menées en ce sens :

Comment constitue-t-on ces données ? Tout simplement en demandant à des humains de répondre à des questions !

A partir de ces ensembles de questions / réponses, on dispose de données d'une qualité suffisante pour affiner le CamenBERT. C'est ce “fine-tuning” qui a été réalisé par Etalab, et dont le résultat est publié sur la plateforme huggingface.co.

Tout ce processus de constitution des jeux de données et d'entraînement des modèles (nécessitant des heures de calcul) aboutit à un modèle librement téléchargeable. Il constitue un début de solution pour construire un agent conversationnel.

On peut tester avec seulement quelques lignes de code Python, en y insérant l’histoire en tant que contexte de la question :

from transformers import pipeline
  
nlp = pipeline('question-answering', model='etalab-ia/camembert-base-squadFR-fquad-piaf', tokenizer='etalab-ia/camembert-base-squadFR-fquad-piaf')  

histoire = """ 
C’est un loup. Un loup affamé. Depuis trois jours...
[...] 
Puis, il s’est envolé pour retrouver son ami le crocodile. 
""" 
 
question = "Qui est l'ami du chien ?"  
reponse = nlp({'question': question,'context': histoire}) 

print(reponse) 
# {'score': 0.8011658374498409, 'start': 282, 'end': 291, 'answer': 'le lièvre'} 

Les ressources de deep-learning deviennent accessibles

Les logiciels open-source ont transformé le monde du développement logiciel, en donnant accès gratuitement à des outils très performants : Postgresql, React, ... Ce sont devenus les briques logiciels des développements modernes.

Le deep-learning suit cette tendance : les modèles et les datasets sont accessibles. Ils fournissent les matériaux pour construire des solutions innovantes à base d'IA. L'enjeu consiste maintenant à se doter des compétences pour personnaliser ces modèles génériques pour les rendre performants sur un domaine précis.


Continuer la lecture

Le no-code

6 oct. 2020

4 min read

Le no-code

Lire l'article
Les sites statiques : un retour en arrière ?

22 sept. 2020

4 min read

Les sites statiques : un retour en arrière ?

Lire l'article
Inscription à la newsletter

Recevez chaque semaine un article pour réfléchir à votre prochain projet tech/data

gratuit, sans spam, désinscription en 1 clic

Merci ! Regardez dans botre boite mail. Un lien de confirmation n'attend plus que votre clic.
Arghh il semble compliqué de vous ajouter à la liste de diffusion. Et si vous m'envoyiez un mail directement à contact@camilab.co ?