Bot sur les réseaux de neurones: comment fonctionne et apprend un assistant virtuel

En 2016, au plus fort de la popularité des chatbots, notre équipe a créé des assistants boutons pour les entreprises. Jusqu'à ce qu'une pensée intéressante surgisse: «Et si nous automatisons le support client avec les réseaux de neurones?» Nous voulions que les robots de discussion apprennent enfin à comprendre le langage naturel et deviennent confortables.

Il a fallu quatre mathématiciens, six mois de travail acharné, un nouveau langage de programmation et de nombreuses erreurs - et nous avons créé un constructeur dans lequel tout le monde peut assembler un assistant virtuel avec l'IA.

Dans le matériel nous dirons


  • En quoi un assistant virtuel diffère-t-il d'un robot de chat classique
  • Est-il vrai que les assistants virtuels comprennent la langue
  • Comment nous avons appris au robot à comprendre le contexte et à écrire la langue lialang
  • Test de cas: comment nous avons automatisé le support dans trois banques
  • Création de Lia Platform et moteur d'interfaces
  • Trois étapes: comment fonctionne la plate-forme d'assemblage d'assistants virtuels (où n'importe qui, même un non programmeur, peut assembler un robot)


Chat bot vs assistant virtuel


Les chatbots avancés ont pu mettre en évidence des mots clés et imiter le dialogue humain dans les années 60. Les hippies se sont jetés sur le LSD, les Beatles ont rassemblé les stades et Joseph Weizenbaum a créé Eliza, une interlocutrice-psychothérapeute qui donnera des cotes à de nombreux bots modernes, et même à des psychologues.
Par exemple, dans la phrase «Mon père me déteste», Eliza a répondu au mot-clé «père» et a demandé: «Qui d'autre dans la famille vous déteste?» Mais le robot-psychothérapeute n'a pas compris l'essence des problèmes. Les chatbots modernes fonctionnent également: mots-clés, scripts linéaires et parodie de dialogue en direct.

Mais quelque chose a changé depuis les années 60: maintenant, grâce au machine learning et aux technologies NLP, nous pouvons apprendre aux robots de chat à comprendre le langage naturel et le contexte. C'est toujours une imitation, mais plus significative.

Pour voir la différence, comparons le chatbot et l'assistant - imaginez que nous devons faire un sommelier virtuel qui aide les clients dans le choix du vin.

Étape 1


La première étape du chatbot et de l'assistant virtuel en est une: nous déterminons les demandes des utilisateurs et proposons des phrases qu'ils peuvent écrire. Et puis nous prescrivons comment le robot va réagir.

La demande de base est claire - ramasser le vin. Mais cette demande peut avoir de nombreux paramètres: motif, prix, pays, couleur, cépage. Peut-être que l'utilisateur écrit immédiatement le nom du vin à trouver. Ou il clarifiera les détails: "Où est-il fabriqué?" Ou peut-être par curiosité, il va commencer à lancer le robot avec des questions: "Quelle bouteille est la plus chère au monde?" Et ainsi de suite. De plus, en plus des demandes dans le cas, il y a "bonjour", "bye", "comment allez-vous" et d'autres petites phrases qui doivent être demandées.

Vous pouvez fantasmer à l'infini, mais nous ne pourrons toujours pas prédire toutes les questions des utilisateurs. Quand il nous semble que les situations décrites seront suffisantes pour couvrir 98% des demandes, nous nous arrêtons (bien que la dure réalité se dissipe et nous découvrons que 80% seront couverts au mieux).

Ensuite, nous dispersons nos hypothèses sur les besoins des utilisateurs pour des demandes spécifiques - intentions. Les intentions indiquent ce que l'utilisateur veut, mais jetez les informations sur la façon dont il a écrit à ce sujet. Cette étape est la même pour les chatbots et les assistants.

Liste d'intentions


Intention 1 - Je veux du vin
Phrases:

- Aidez-moi à choisir un vin
- Quel vin recommanderiez-vous?
- Je veux le meilleur vin
- ...
Que faire avec lui: sélectionnez au hasard l'un des vins les plus populaires et informez l'utilisateur.

Intention 2 - vin moins cher

Phrases:

- existe-t-il de bons vins jusqu'à 1000 roubles?
- Mais il n'y a rien de moins cher?
- trop cher pour moi
- ...
Que faire: ajoutez un filtre de prix à la demande et choisissez l'un des vins les plus populaires.

Intention 3 - Je veux du vin pour la viande
Phrases:

- Conseiller le vin au steak
"Je vais avoir du goulasch pour le dîner." Que boire?
- ...
Que faire à ce sujet: une requête à la base de données par le critère «à la viande», sélectionner l'un des vins les plus populaires et informer l'utilisateur.

... (et ainsi de suite des centaines d'intentions différentes)

Intention 290 - nous n'avons pas compris l'utilisateur
Phrases: toute autre

Que faire: émettre une phrase tronquée: "Je ne sais pas ce que tu veux dire, mais le Pinista est délicieux à tout moment de l'année."

Étape 2


À ce stade, nous commençons à créer un algorithme par lequel le robot fonctionnera. Ici se termine la similitude du chatbot et de l'assistant virtuel.

Lors du codage d'un chatbot, le programmeur détermine manuellement les mots clés pour chaque intention, et lorsque l'utilisateur écrit, le bot recherchera ces mots clés dans la phrase.

Lors du développement d'un assistant, un programmeur enseigne un algorithme pour comparer les répliques d'utilisateur selon la signification lexicale. Cela vous permet de trouver l'intention la plus proche.

Vin de choix avec un chat botSélection de vins avec un assistant AI virtuelQu'est-il arrivé?
Utilisateur: Bonjour! Je veux choisir du vin pour le dîner avant 2000r
Bot: Bonjour!
Bot: Quelle gamme de prix recherchons-nous?
Utilisateur: jusqu'à 2000r
Bot: Je peux recommander Ramirez de la Piscina. Au meilleur de la tarte, le bel homme d'Espagne convient au dîner et à votre série préférée. 1240₽ par bouteille
Utilisateur: Bonjour! Je veux choisir du vin pour le dîner avant 2000r
Assistant: Bonjour! Je peux recommander Ramirez de la Piscina. Au meilleur de la tarte, le bel homme d'Espagne convient au dîner et à votre série préférée. 1240₽ par bouteille
Bot - est allé par mots-clés pour choisir + vin. Je n'ai pas compris la fourchette de prix et ai redemandé. Assistant - est allé à l'intention la plus proche et a récupéré la fourchette de prix.
Utilisateur: je n'aime pas la tarte
Bot: Votre candidat est Casillero del Diablo Cabernet Sauvignon Reserva
Bot: La tarte chilienne Sauvignon vous réchauffera certainement. Seulement 872₽
Utilisateur: je n'aime pas la tarte
Assistant: Votre candidat est Antigal, "Uno" Malbec.
Assistant: Un doux argentin droit de 2015. Le prix d'une bouteille est de 20 $
Chatbot a été guidé par le mot clé "tarte" et a fait une erreur. Et l'assistant a compris que l'intention la plus proche de «Je n'aime pas la tarte» était les vins doux.
Utilisateur: Eh bien, c'est tellement bon marché. Je vais probablement le prendre.
Bot: Ensuite, essayez "FYI" Red Blend
Bot: Malgré la cote élevée, son prix n'est que de 10 $
Bot: bon choix
Utilisateur: Eh bien, c'est tellement bon marché. Je vais probablement le prendre.
Assistant: bon choix
Le processus des robots en propose un à la fois. M. chatbot a regardé le mot «bon marché», a répondu selon le modèle - en conséquence, il n'a pas deviné et s'est embrouillé. L'assistant a simplement ignoré la première phrase, car il comprenait la seconde.

Comment ça marche: un tableau comparant les chatbots et les assistants virtuels
Chat botAssistant virtuel
Pour comprendre l'utilisateur, nous prenons des mots clés.
Lors de la création d'un chatbot, les technologies d'apprentissage automatique et NLU ne sont pas utilisées.
Pour comprendre l'utilisateur, nous faisons une comparaison «intelligente» et choisissons l'intention la plus proche (un peu plus tard, nous expliquons comment cela fonctionne).
L'apprentissage automatique et les algorithmes NLU nous permettent de mesurer la distance entre les répliques. Par exemple, l'expression «vaisseau spatial» est plus proche de «avion» que de «scooter». Et de la "vente du rein" - très loin.
Préparation: Pour chaque intention, nous écrivons les mots-clés (wine_year_meat: steak, viande, goulash, vin + viande)

Algorithme:
  • Nous reprenons les mots de la réplique de l'utilisateur («Conseiller le vin au steak» → conseiller, le vin, le steak).
  • Choisissez l'intention dans laquelle la plupart des mots-clés proviennent de la réplique de l'utilisateur (wine_meat_meat).
  • Si le bot n'a pas trouvé d'intersections par mots-clés, nous sélectionnons l'intention «nous n'avons pas compris l'utilisateur».
  • Effectuez une action qui correspond à l'intention.

Préparation: Nous formons le modèle pour des comparaisons intelligentes

Algorithme:
  • Comparez la phrase d'un utilisateur avec des phrases d'intentions à l'aide d'une comparaison intelligente.
  • Choisissez l'intention avec les phrases les plus proches
  • Si l'intention sélectionnée n'est pas assez proche de la réplique de l'utilisateur (le seuil n'a pas passé), nous sélectionnons l'intention «nous n'avons pas compris l'utilisateur».
  • Effectuez une action qui correspond à l'intention.

Comment améliorer:
Pour réduire les erreurs, ajoutez des commandes et des boutons.
Ensuite, les utilisateurs cessent généralement de communiquer dans la langue et cliquent simplement sur les boutons.
De telles améliorations conduisent à la dégradation de l'intelligence conversationnelle.
Comment améliorer:
Après que les utilisateurs auront parlé au robot, nous aurons de nouveaux exemples de phrases et nous les distribuerons en fonction de leurs intentions.
Au fil du temps, le pourcentage de couverture augmentera, l'assistant commencera à mieux gérer la communication.
Ces améliorations conduisent à une meilleure intelligence conversationnelle.


Est-il vrai que les assistants virtuels comprennent la langue?


Les algorithmes peuvent distinguer certaines phrases des autres - mais pouvons-nous dire que les robots comprennent vraiment le langage?

Pour répondre à cette question, revenons à une comparaison de la signification lexicale des phrases. La signification pour un ordinateur est des types de données compréhensibles: chaînes, nombres et combinaisons de ceux-ci. Par conséquent, le programmeur est confronté à la tâche de transformer le texte source en une forme adaptée aux opérations mathématiques de comparaison - un vecteur.

vectorize(" ") = (0.004, 17.43, -0.021, ..., 18.68) vectorize("  ") = (0.004, 19.73, -0.001, ..., 25.28) vectorize("  ") = (-8.203, 15.22, -9.253, ..., 10.11) vectorize(" ") = (89.23, -68.99, -10.62, ..., -0.982) 

Pour nos tâches, les vecteurs de phrases lexicalement proches doivent être mathématiquement proches les uns des autres, les lexicalement éloignés doivent être éloignés, le vecteur de phrases d'un autre opéra doit être très éloigné. Par exemple, «Je veux du vin» est plus proche de «Je veux du vin blanc» que de «Je ne veux pas de vin». Et loin des «attaques martiennes».

Un réseau neuronal correctement formé pourra conclure à la signification lexicale de ces vecteurs. Il s'avère que, pour comparer la signification de deux phrases, vous devez comparer leurs vecteurs.

Par conséquent, la réponse à la question «Les robots comprennent-ils le langage?» Sera comme ceci: ils ne comprennent pas comment est une personne, ils savent juste comparer les significations lexicales et ne confondent pas le chaud et le doux. Mais lorsque les algorithmes peuvent offrir des raffinements suggestifs et tirer des conclusions, nous disons honnêtement: oui, la compréhension est arrivée. En attendant, "comprendre la langue" n'est qu'une belle phrase marketing.

En fait, le robot ne fonctionne qu'avec des analogies, comme un enfant de trois ans. Cependant, si vous donnez à l'enfant un nombre suffisant d'exemples, il pourra se faire passer pour un intellectuel et animer une discussion. L'opérateur «en direct» de la première ligne de support fonctionne de la même manière - ils décrivent un ensemble de situations et leur expliquent comment s'y comporter. Par conséquent, les assistants virtuels sont bien adaptés à l'automatisation du support.

Comment nous avons appris au robot à comprendre le contexte: le lialang


Pour un support normal, les robots ont besoin de peu de «compréhension» du langage naturel - il est important qu'ils puissent répondre aux questions et rester en contexte. Pour ce faire, nous avons écrit lialang, un langage de balisage de dialogue où les scripts peuvent être décrits et transmis au robot.

La tâche principale d'un programmeur lialang est de décrire toutes les situations qui peuvent se produire dans un dialogue entre une personne et une machine. Pour ce faire, dans notre langue, vous pouvez associer les noms des intentions et des actions.

Prenons un exemple simple - une salutation:

 if intent() { reaction(_) } 

Cela ressemble à du code normal, mais une grille de neurones fonctionne derrière la construction d'intention (...) - lialang décrit le dialogue dans des schémas généraux ("si on vous demandait quelque chose") en utilisant les constructions de programmation habituelles. Bien sûr, pour que cela fonctionne, vous devez appliquer les technologies d'apprentissage automatique et NLU, car l'utilisateur peut écrire sa demande comme il le souhaite.

Et voici comment décrire des situations contextuelles.
Nous avons introduit la construction «était» pour saisir les salutations inappropriées n'importe où dans le dialogue:

 if intent() { if was_reaction(_) { reaction(___) } else { reaction(_) } } 

Il dit: Lia, s'ils vous ont dit bonjour, dites bonjour en réponse. Et si après cela, ils ont de nouveau dit «bonjour» - dites que vous avez déjà dit bonjour.

Une réaction est une action que Lia doit effectuer en réponse à une intention. Dans 95% des cas, ce n'est que du texte. Mais le robot peut également appeler une fonction dans le code, commuter la communication avec l'opérateur ou effectuer d'autres actions complexes.

Le code pour envoyer du texte et des fonctions existe séparément de la langue - la langue décrit les situations aussi simplement que possible.

Essayons maintenant d'écrire quelque chose de plus compliqué - dans une conversation avec la banque, les clients demandent souvent leurs coordonnées. Apprenons à les envoyer au chat et au courrier à l'aide de lialang.

 if intent(_) or intent(___) { reaction(___) { if intent(__) { reaction(___) } } } if intent(___) { reaction(___) } 

Deux situations sont décrites ici:

  1. Lia, si on vous demandait d'envoyer les détails - envoyez-les au chat. Si après avoir demandé «il est nécessaire au bureau de poste», envoyez-les au bureau de poste.
  2. Lia, si on vous demandait immédiatement d'envoyer les détails par la poste - envoyez les détails par la poste.

Le lialang fait donc son travail - travaille en contexte. Même si une personne écrit «par courrier, s'il vous plaît», le robot comprendra que nous parlons de détails.

Lia a appris à prendre en charge des scénarios complexes - au moment nécessaire pour l'utilisateur, elle obtiendra / mettra des données de / vers CRM, enverra des SMS, une aide au paiement ou parlera de la vie.

Peu à peu, nous avons amélioré le langage: nous avons ajouté des variables, des fonctions, des entités (dates, adresses, numéros de téléphone, noms, etc.), des états et d'autres constructions utiles. Il est donc devenu encore plus pratique d'écrire dessus.

Test de cas: comment nous avons automatisé le support dans trois banques


Dès que nous avons fait la technologie, elle devait être finalisée de toute urgence - nous avions notre premier client. VTB devait automatiser le support dans une nouvelle banque Internet pour les entrepreneurs.

Nous avons commencé avec beaucoup de succès - en particulier pour un produit créé en quatre mois. Notre robot hybride pour VTB était basé sur des réseaux de neurones et a été immédiatement efficace: il a répondu à plus de 800 questions, pris en charge plusieurs scénarios complexes (relevés, modifications tarifaires, paramètres utilisateur) et a parlé comme une personne. En conséquence, en deux mois, notre Lia a réduit la charge de support de 74%. Il est devenu clair: l'idée de l'automatisation du support fonctionne.

image

De plus, sur la base de Lia, nous avons automatisé la FAQ chez Rocketbank et DeloBank - et en deux semaines, ils ont fermé 32% des applications sans opérateurs.

Il semblerait que les garçons aient réussi. Cependant, après les premiers clients, il est devenu clair que le concept devait être changé. C'était l'enfer - nous avons dû modifier manuellement les scripts, faire des modifications, développer les branches. La même chose avec des robots simples, seulement plus durs et nécessite plus de force. Dans cette situation, il était difficile de faire évoluer.

Ensuite, nous avons décidé de créer un outil dans lequel le client lui-même pourra assembler même un assistant complexe. Et nous n'aiderons qu'avec les didacticiels et éduquerons les utilisateurs.

Plateforme Lia et moteur pour les interfaces


Nous avons donc décidé de créer une plateforme pour ceux qui ne comprennent pas le développement. Bien que le lialang contienne moins de dix modèles différents, tous les managers ne lui apprendront pas à créer leur propre bot. Les gestionnaires aiment la souris.

Par conséquent, nous avons commencé à penser à une telle interface qui sera capable de faire tout ce que le lialang peut faire. Il n'aura pas de problèmes avec les branches imbriquées, les transitions d'un script à l'autre, et surtout - non seulement nos programmeurs, mais tous ceux qui le souhaitent peuvent créer des scripts.

Voyez à quoi ça ressemble:

Lia patform
Les dialogues sont une chose non linéaire et l'écriture d'un moteur universel pour toutes sortes de schémas de conversation est très difficile. Mais avant de penser aux schémas, nous avions déjà du lialang - il est devenu le moteur.

Quels que soient les concepteurs d'interface, nous ne codons pas les cerveaux pour cela, mais écrivons seulement un petit traducteur de balisage de l'interface en code lialang. Si l'interface est refaite, nous n'aurons qu'à changer le traducteur - grâce auquel la commande interface et la commande core peuvent exister séparément.

Comment fonctionne la plateforme de création d'assistants virtuels?


Pour assembler votre propre assistant virtuel dans Lia, l'utilisateur doit passer par trois étapes.

Étape 1. Téléchargez l'historique du chat avec les utilisateurs afin que le robot comprenne et mette en évidence les principaux scénarios


Si le client a un historique de conversations avec les utilisateurs, il peut les télécharger sur le système et obtenir des clusters à partir des requêtes les plus courantes. Il sera très pratique de créer des intentions à partir d'eux.

Un exemple d'immodération des utilisateurs

Au fil du temps, l'efficacité de Lia augmentera. Les messages auxquels le robot n'a pas pu répondre sont à nouveau distribués en grappes: par exemple, «qui êtes-vous?», «Qui êtes-vous?», «Quel est votre nom?» Et «êtes-vous un robot?» Tomberont dans un groupe. Ainsi, la plate-forme s'auto-apprend semi-automatiquement: l'utilisateur voit où est l'écart et le comble, ajoutant de nouveaux scénarios - en conséquence, le pourcentage de demandes couvertes passe de 30% à 70% en six mois.

S'il n'y a pas d'historique de correspondance, nous sautons cette étape et commençons immédiatement par la deuxième étape: nous prédisons quelles demandes les utilisateurs se tourneront vers l'assistant.

Étape 2. Nous notons l'intention: 10-20 options pour les demandes des utilisateurs les plus fréquentes


À la deuxième étape, nous prescrivons des intentions basées sur les 10 à 20 requêtes les plus populaires: ce nombre d'options est suffisant grâce aux réseaux de neurones. Ainsi, une phrase comme «Je veux commander du vin» apprend au bot à reconnaître les demandes d'utilisateurs similaires: par exemple, «Obtenir du vin» ou «Commander du vin».

Exemple de balisage d'intention

Un autre assistant comprend et extrait l'essentiel: noms de villes, numéros de téléphone, adresses, horodatages, périodes, dates et malédictions - même si vous dites «fatigué, apportez une boîte de vin demain».

De plus, les utilisateurs peuvent ajouter leurs propres objets et marquer manuellement des phrases de formation pour que l'assistant apprenne plus rapidement. C'est l'une des fonctionnalités les plus puissantes de la plateforme, grâce à laquelle elle peut créer des robots qui ne fonctionnent pas moins bien qu'un opérateur humain.

Étape 3. Créez un scénario: prescrivez plusieurs réponses ou actions


Ici, l'utilisateur doit trouver des réponses aux demandes des utilisateurs. 95% du projet moyen prend généralement un scénario simple de questions-réponses - réponses à des questions courantes.

image

Soit dit en passant, l'assistant peut répondre avec des images, des vidéos et des fichiers audio et, si nécessaire, envoyer une géolocalisation.

Le saut à construire est particulièrement utile - grâce à lui, Lia peut passer d'un scénario à un autre, puis revenir en arrière, résoudre plusieurs problèmes. Ceci est utile si vous devez vous éloigner du dialogue, puis revenir sur la bonne voie: par exemple, posez une question de clarification.

Exemple de boîte de dialogue:

Assistant: Nous devons clarifier l'adresse de livraison, car le destinataire ne répond pas.
Client: Et à propos de quoi? Quelle commande? (JumpTo pour la clarification de la commande)
Assistant: Ordonnance du 21 août, Antigal, "Uno" Malbec.
Assistant: Alors pouvons-nous clarifier l'adresse de livraison actuelle? (Retour au script principal)

Lorsque le créateur veut que son assistant non seulement réponde par un texte, mais qu'il prenne des mesures, il pourra appeler un programmeur pour écrire des extraits JS pour le spécialiste. Nous vous permettons d'exécuter JavaScript directement pendant les scripts: accédez à l'API externe, envoyez un e-mail ou effectuez une autre action complexe.

4. Résumé


Un assistant peut s'intégrer à tout: parler à une personne au téléphone, dans des messageries instantanées ou un widget que le client affichera sur le site.

L'assemblage d'un assistant intelligent dans la plate-forme prend de quelques heures à un mois. Ensuite, le robot apprend à comprendre de manière réaliste les demandes et à reconnaître les modèles - cela prend environ six mois (pendant tout ce temps, une personne vivante les supervise). Les affaires peuvent effectuer la plupart des tâches de routine pour la fille robotique Lia: de la coordination de la livraison et de l'appel d'un taxi à la consultation des clients.

Exemple de discussion avec Virtual Wine Assistant

Soit dit en passant, nous avons déjà transféré des projets avec des banques sur la plateforme. Ils fonctionnent tout aussi bien, mais sont beaucoup plus commodément modérés.

Dans un avenir proche, nous prévoyons d'ajouter des extracteurs, ce qui permettra à nos utilisateurs d'extraire des données plus complexes (par exemple, le robot comprendra l'expression "après-demain après le déjeuner"). Nous allons également finaliser le contrôle des versions afin que les clients puissent rapidement restaurer et restaurer les versions des projets. Et nous allons également libérer le système de rôle de l'organisation.

Nous nous attendons à ce que les prévisions de Gartner soient correctes - et en 2022, jusqu'à 70% de toutes les interactions avec les clients passeront par une sorte d'IA. Selon notre idée, des concepteurs comme Lia aideront à transférer le service client vers des robots encore plus rapidement.

Source: https://habr.com/ru/post/fr478572/


All Articles