Pour recevoir des appels, nous avons utilisé la plate-forme Voximplant , et pour reconnaître les questions et réponses - DeepPavlov . L'assistant vocal a été lancé en deux semaines et demie et a permis de traiter 5 000 appels. Nous avons réussi à déployer un produit qui a aidé les habitants du Tatarstan à recevoir des informations fiables des autorités et à simplement sortir dans la rue. Ci-dessous, nous vous expliquerons comment nous l'avons fait.
Quelle était la tâche
Nous avions initialement prévu de créer un assistant vocal qui aiderait les gens à bénéficier des services gouvernementaux et à répondre aux questions fréquemment posées. Mais lorsque tout le gadget avec le coronavirus a commencé, nous avons réalisé que Lilia aiderait à décharger le centre d'appels: par exemple, conseiller sur la hotline, aider à obtenir des laissez-passer numériques et des allocations de chômage. Tout ce qu'une personne peut trouver sur le site Web des services de l'État peut être trouvé auprès de Lilia, et vous pouvez également simplement discuter avec elle.
. 1 -: , . : , , , . 12.
. , . , . , , , — « ».
En plus de délivrer des laissez-passer numériques, Lilia a dû répondre aux questions des habitants du Tatarstan. Nous avons conçu un assistant vocal qui répondrait aux questions courantes telles que «Ce que vous devez faire pour obtenir un laissez-passer» et «Le gingembre vous aide-t-il avec le coronavirus?»
Pour résoudre ce problème, nous pourrions faire un SVI régulier. Mais l'IVR prend beaucoup de temps, et si vous le faites normalement, vous devez mettre en place une architecture complexe. En général, il n'y avait pas de temps pour cela. Nous avons pensé qu'il serait plus facile de créer un assistant vocal (qui peut traduire la parole en texte, la traiter, classer les intentions et fournir une réponse vocale). Hehe.
À quoi ça ressemble du point de vue de l'utilisateur
Tout est simple ici.
- L'homme appelle la hotline, on lui propose de choisir entre une conversation avec l'opérateur et Lilia. À tout moment, vous pouvez passer à un opérateur en direct.
- .
- , . , -.
Pour recevoir des appels et implémenter des scripts, nous avons utilisé la plateforme Voximplant: écrit un script et connecté un signal de répondeur. Lily salua l'homme et lui demanda ce qu'il voulait.
L'appelant pose une question au téléphone. Puis Lilia a commencé à écouter. Chez VoxImplant, nous avons utilisé le module ASR pour traduire la parole en texte, il appelle le modèle Yandex.SpeechKit sous le capot. Ainsi, le flux audio est traduit en texte, qui subit ensuite une tokenisation et une extraction. Nous avons également essayé d'extraire des fonctionnalités: NER, POS et Chunk pour les méthodes de base ML, mais tout cela a pris beaucoup de temps.
Par exemple, dans un premier temps, à partir de la question «Veuillez me dire comment vous protéger du coronavirus», nous extirpons «protection» et «coronavirus» et les convertissons en représentation vectorielle. La représentation vectorielle des entités entre dans le classifieur du coronavirus (et plus tard - pour les services publics). Maintenant DeepPavlov fait tout cela.
Ensuite, il existe plusieurs options, en fonction du niveau de confiance (confiance):
- Si le réseau a classé la question avec une confiance suffisante (sur la base de l'étude, les seuils ont été sélectionnés individuellement, par classe), Lilia répondra à la question.
- Si le réseau a une réponse de faible confiance, nous supposons qu'il s'agit d'une question que nous n'avons pas couverte dans notre ensemble de données (mais la question fait toujours référence au domaine du coronavirus), ou que la personne voulait simplement parler d'un autre sujet. Par exemple, il a demandé «Qui est Elon Musk».
Pour de telles questions, nous avons utilisé le modèle BERT formé sur le vidage Wikipedia pour le problème de réponse aux questions de la base de connaissances.
A la fin, Lilia vérifie nécessairement l'exactitude de la reconnaissance de l'intention et la qualité de la réponse en demandant: "Ai-je répondu à votre question?" Si l'utilisateur répond oui, Lilia attendra la question suivante. Sinon, nous vous demanderons de reformuler la question et de recommencer tout le cycle. Il se trouve que cela ne fonctionne pas. Ensuite, les opérateurs en direct entrent dans la bataille.
Maintenant, Lilia parle d'une voix agréable d'un synthétiseur vocal de Yandex - nous avons légèrement changé la clé et augmenté la vitesse. Parfois, Lily confond l'accent, mais cela peut être corrigé avec un balisage. Bien sûr, j'aimerais ajouter Tatar, mais jusqu'ici c'est difficile.
Au total, le projet a duré deux semaines et demie, compte tenu des jeux de données: une idée est venue, nous avons discuté du projet avec le ministre et, comme on dit, des algues. Une semaine a été consacrée à l'estimation et à la recherche, le développement a pris encore 10 jours, puis nous avons finalisé et vissé des fonctions supplémentaires. Les principaux chevaux étaient Nvidia RTX2070. Les BERT nécessitaient environ 12 à 16 Go de mémoire vidéo.
De LSVM et catboost à DeepPavlov
Dans le processus de développement, nous avons utilisé différents modèles de classificateurs. Tout d'abord, nous avons essayé des modèles d'apprentissage automatique tels que la forêt aléatoire, LSVM, catboost, logreg. En général, la précision des modèles d'apprentissage automatique n'était pas très élevée. Pourquoi donc? Parce que de nombreuses questions des utilisateurs sont très similaires les unes aux autres: la question «mon enfant est malade du coronavirus que faire» est assez similaire à la question «est-il possible de marcher avec un enfant pendant le coronavirus», bien que ce soient des catégories différentes et que des réponses différentes soient requises.
Nous pourrions faire l'extraction d'entités, l'échantillonnage, la recherche. Mais nous étions pressés. Par conséquent, nous avons décidé d'utiliser la bibliothèque DeepPavlov du MIPT dans nos travaux, qui a donné une précision de 78% avec régression logistique et BERT - 84%.
La précision des réponses dépend du balisage des ensembles de données. Nous avions une liste de 200 questions que les gens posaient sur la hotline, mais elles n'étaient pas correctement séparées. Par exemple, les gens ont demandé quoi faire si l'un de leurs proches tombait malade, et la question était de savoir quels sont les symptômes du coronavirus. Les modèles ML ont été confus.
Résultats et plans pour l'avenir
Lilia a travaillé pendant 2 semaines et traité 5000 appels. Pendant ce temps, Lilia a grandement facilité le travail des opérateurs de la hotline - ils n'avaient pas à répondre à des questions triviales et répétitives. Grâce à Lilia, les utilisateurs ont reçu des laissez-passer, des réponses aux questions et ont simplement parlé. Bien sûr, il y avait des utilisateurs qui l'ont injuriée et ont demandé à être transférés à l'opérateur.
Le régime d'auto-isolement a été annulé, les laissez-passer numériques ne sont plus valides, mais Lilia est toujours dans les rangs. Elle continue de répondre aux questions sur le coronavirus, mais maintenant la capacité de répondre aux questions liées aux services publics lui a été ajoutée.
Nous sommes un ministère, et nous avons, en fait, deux tâches: afin que les autres départements utilisent normalement les technologies et que les habitants du Tatarstan puissent communiquer facilement et simplement avec l'État. La deuxième tâche est parfaitement gérée par le portail des services de l'État - le nôtre, local, pas fédéral. Mais ce portail est un site et une application, ce qui reste difficile à atteindre pour certains. Et si les résidents ne se rendent pas sur le portail, le portail ira au résident, c'est-à-dire que nous nous dirigeons vers une simplification de l'interaction avec le portail pour les personnes qui n'utilisent pas particulièrement Internet.
À présent, le ministère des Affaires numériques du Tatarstan s'emploie à garantir que les gens puissent bénéficier des services gouvernementaux par la voix et par chat. Nous voulons créer un assistant universel que vous pouvez appeler / écrire et obtenir des réponses à toutes les questions importantes.
Jusqu'à présent, Lilia peut dire combien de temps le bureau d'enregistrement est ouvert, et à l'avenir, nous prévoyons qu'elle pourra prendre des relevés de compteurs (mais ce n'est que lorsque nous résolvons le problème de la sécurité du transfert de ces données). En général, nous transformons Lilia en un produit distinct.
Si vous souhaitez enseigner à Lilia, bienvenue dans notre équipe.