Comment nous avons appris à l'intelligence artificielle à répondre aux questions d'assistance. Découvrez Yandex.Taxi

Il n'y a pas de services idéaux - parfois l'utilisateur a des questions sur le support technique. Il est difficile de dire que dans de tels cas, il est plus désagréable d'essayer de combiner une combinaison de répliques de bots modèles qui peuvent résoudre le problème, ou d'attendre la réponse d'un spécialiste qui vous contactera déjà une demi-journée.

Dans Yandex.Taxi, parmi les deux options, nous avons choisi la troisième: utiliser l'intelligence artificielle pour créer un support technique à visage humain. Je m'appelle Tatyana Savelyeva, mon groupe est engagé dans l'apprentissage automatique sur des données non structurées. Sous la coupe - je partage les idées des utilisateurs, explique comment automatiser un processus complexe, organiser le travail d'équipes complètement différentes et, bien sûr, appliquer le Deep Learning et les hacks techniques dans la pratique (sans eux).



Pourquoi automatiser quoi que ce soit?


Il semblerait, pourquoi inventer une structure de soutien en plusieurs étapes - embaucher plus de personnes. Peut-être que cela fonctionnera si environ 10 demandes par jour viennent en soutien. Mais lorsque le nombre d'appels d'utilisateurs tend à un million (ce qui est un petit pourcentage de trajets pour Yandex Taxi, mais c'est absolument impressionnant), il faut penser à des tactiques plus fiables: trouver et former un nombre suffisant d'opérateurs capables de faire face à des problèmes atypiques dans de tels volumes est au moins plus difficile. .

Il y a quelque temps, l'industrie a décidé de résoudre ce problème à l'aide de plusieurs niveaux de support. Lors de la première étape, les questions les plus simples et prévisibles ont été filtrées: si la réponse prête ne convenait pas, le problème était classé et transmis à un expert plus qualifié. Élégant, mais il y a une nuance.

Le nombre d'appels augmente - il faut plus de temps pour les traiter. Le débit des opérateurs, le facteur humain - y a-t-il de nombreuses raisons qui ralentissent le système, où la facture va pendant quelques minutes? Beaucoup de ces restrictions peuvent être contournées à l'aide d'une machine: elle ne se trompera pas si elle se fatigue, et elle prend des décisions plus rapidement.

Il y a environ un an, nous avons commencé à utiliser l'apprentissage automatique afin de proposer immédiatement à l'opérateur des scénarios d'interaction possibles. Les clients obtiennent désormais des réponses plus rapidement. Mais il n'y a pas de limite à la perfection!

OĂą commencer?


Supposons que vous n'ayez pas de chance: le chauffeur n'est pas arrivé et ne prend pas contact. Qu'adviendra-t-il de votre contact avec le support Yandex.Taxi?



Qu'est-ce qui peut être optimisé pour résoudre les problèmes encore plus rapidement? Commençons par la première étape , où le ticket va sur l'une des deux lignes. Au départ, le choix dépendait des mots clés dans la requête - cela fonctionnait, mais la précision de la détermination était plutôt faible. Pour corriger cela, un classificateur basé sur le modèle-encodeur de réseau de neurones classique BERT a aidé.

Dans cette tâche, l'exhaustivité est fixée pour les lignes d'experts: les cas nécessitant une procédure ne doivent pas passer par eux. Mais n'oublions pas la lutte pour augmenter la précision: le moins d'appels simples devraient être acheminés vers la ligne expert afin que le temps de réponse aux cas vraiment critiques ne dépasse pas la patience de l'utilisateur. La précision de la classification par les méthodes d'apprentissage automatique s'est avérée 2 fois plus efficace que l'analyse des mots clés. La vitesse de réponse aux situations d'urgence a été multipliée par 1,5.

Essayer d'automatiser le travail d'une ligne d'experts dans le cadre des technologies existantes est aujourd'hui difficile: la logique de ce qui se passe est difficile à systématiser et toute erreur coûtera très cher. Revenons à des requêtes de première ligne typiques et bien étudiées - confions-nous peut-être leur traitement à des algorithmes? Ainsi, les tâches de routine seront résolues encore plus rapidement et les employés pourront accorder plus d'attention aux cas controversés qui dépassent le cadre des modèles.

Pour tester cette idée, un projet a été développé - un système d'indices qui offre au personnel de support les 3 options les plus privilégiées pour répondre à la demande actuelle: L'



expérience a réussi: dans 70% des cas, les opérateurs ont choisi l'un des messages proposés, ce qui a réduit le temps de réponse de 10%. Il semble temps d'automatiser complètement la première ligne.

Besoin d'un plan.Que fait un employé de première ligne ?

  1. Lit le texte, définit le sujet du traitement.
  2. Examine les informations sur le voyage.
  3. Sélectionne l'une des réponses préparées, en tenant compte des deux premiers points.

Un exemple à pénétrer. Éléments fournis: une demande de texte pour un utilisateur en détresse, des informations sur le voyage, un personnel de soutien attentionné.



Tout d'abord, l'employé déterminera l'objet de l'appel: "Double débit de la carte". Ensuite, vérifiez le mode de paiement, l'état et le montant facturé. Argent radié une fois: quelle pourrait être la raison? Oui, le voici: deux notifications d'affilée.

Que doit faire un système de réponse automatique?

Tous les mêmes. Même les exigences clés pour les réponses ne changeront pas:

Qualité

Si l'utilisateur se plaint de l'application, il n'est pas nécessaire de promettre de demander au conducteur de laver la voiture. Il ne suffit pas de comprendre exactement quel est le problème, il faut décrire en détail comment le résoudre.

Vitesse
Surtout si la situation est critique et que la réponse est importante en ce moment.

Flexibilité et évolutivité

La tâche avec un astérisque: bien que la création d'un système de support avec Taxi ait commencé, il est utile de transférer le résultat vers d'autres services: Yandex.Food ou Yandex.Lavka, par exemple. Autrement dit, lorsque je change la logique de prise en charge - modèles de réponse, sujets d'appels, etc. - je veux reconfigurer le système en jours, pas en mois.

Comment est-il mis en Ĺ“uvre


Étape 1. Nous déterminons le sujet du texte à l'aide de ML.

Tout d'abord, nous avons compilé un arbre de sujets de références et formé le classificateur à les parcourir. Il y avait environ 200 problèmes possibles: avec le voyage (le chauffeur n'est pas arrivé), avec l'application (je ne peux pas attacher la carte), avec la voiture (voiture sale), etc.

Comme mentionné ci-dessus, nous avons utilisé un modèle pré-formé basé sur BERT. Autrement dit, pour classer le texte de la requête, il est nécessaire de le présenter sous la forme de vecteurs afin que des phrases de sens similaire se trouvent côte à côte dans l'espace résultant.

BERT est pré-formé sur deux tâches avec des textes non alloués. Dans le premier, 15% des jetons sont remplacés aléatoirement par [MASQUE], et le réseau, en fonction du contexte, prédit les jetons initiaux - ce qui confère au modèle une «bidirectionnalité» naturelle. La deuxième tâche nous apprend à déterminer la relation entre les propositions: deux entrées ont-elles été soumises consécutivement ou dispersées dans le texte?

Après avoir terminé l'architecture BERT sur un échantillon de demandes de support technique Yandex.Taxi, nous avons obtenu un réseau capable de prédire l'objet du message, ajusté aux spécificités de notre service. Cependant, la fréquence des sujets et les sujets eux-mêmes changent: pour que le réseau soit mis à jour avec eux, nous ne formerons séparément que les couches inférieures du modèle sur les dernières données - au cours des dernières semaines. Ainsi, la connaissance des caractéristiques des textes de support est préservée et les probabilités de classes possibles sont réparties de manière adéquate sur la journée en cours.

Un peu plus sur l'adéquation: pour tous nos services - y compris Taxi - une bibliothèque complète de modules d'architecture de modèle et de méthodes de validation des seuils de probabilité a été développée. Il vous permet de:

  • , : , — ;
  • , . , . , , , .

Étape 2. Nous travaillons avec des informations sur le voyage: nous prescrivons des règles métier pour chaque modèle Le

personnel de support s'est vu proposer une interface où, pour chaque modèle de réponse, une règle obligatoire était requise. À quoi cela ressemble, par exemple, dans le cas du double paiement:

Modèle: «Bonjour! J'ai tout vérifié: le voyage a été payé une fois. L'argent est d'abord «gelé» sur votre carte, puis débité, car la banque peut alors informer deux fois d'une transaction. Veuillez vérifier votre relevé bancaire pour vous en assurer. Si vous y voyez deux montants radiés, veuillez envoyer un scan ou une photo du relevé "

Règle: payment_type est" card "et transaction_status est" clear_success "et transaction_sum == order_cost

Uniquement pour les modèles de support client, nos experts ont déjà rempli plus de 1,5 mille règles.

Étape 3. Nous choisissons la réponse: nous combinons les rubriques de texte et les règles métier appropriées pour les modèles.

Chaque thème se voit attribuer les modèles de réponse appropriés: le sujet est déterminé par les méthodes ML et les modèles qui y répondent sont vérifiés par la règle du paragraphe précédent. L'utilisateur recevra une réponse dont la vérification a renvoyé la valeur "Vrai". S'il existe plusieurs options de ce type, la plus populaire parmi le personnel de support sera sélectionnée.



Soit dit en passant, les processus d'interaction avec les conducteurs dans Yandex.Taxi ne changent pas du tout: le modèle ne sélectionne que le modèle souhaité pour l'opérateur et répond indépendamment à l'utilisateur.

Finaliser


Hourra! Le système est conçu, le lancement a eu lieu, l'optimisation montre d'excellents résultats, mais il est trop tôt pour se détendre. Les répondeurs automatiques devraient fonctionner de manière stable sans intervention constante et être facilement évolutifs - seuls ou en mode semi-manuel. Nous y sommes parvenus grâce à la structure en trois parties du système:

  1. Développement hors ligne - à ce stade, les modèles changent, les règles sont préparées;
  2. Service de production - un microservice qui récupère les mises à jour, les applique et répond aux utilisateurs en temps réel;
  3. Une analyse ultérieure des résultats pour s'assurer que le nouveau modèle fonctionne correctement, les utilisateurs sont satisfaits des réponses automatiques.



Et encore une fois aux exemples. Haut de la liste de souhaits des clients les plus populaires (et comment nous les traitons sans Ă©crire de code):

Taxi a des réponses automatiques sympas: je veux la même chose dans Yandex.Ed

Pour connecter n'importe quel support à notre système, vous avez besoin de quatre étapes simples:

  1. Créez une arborescence de sujets pour les textes;
  2. Faites correspondre chaque thème avec des motifs;
  3. Remplissez un ensemble de règles avec des modèles dans notre panneau d'administration;
  4. Fournissez une table de correspondance entre les demandes des utilisateurs et les réponses du support.

Si tout cela est là, nous allons définir le chemin vers un nouveau téléchargement, le modèle apprendra des données reçues et tirera dans notre microservice avec toutes les règles définies (intégrer avec un thème ML spécifique). Attention: aucune nouvelle logique n'est écrite, le tout dans le cadre d'un processus existant!

La logique du support a changé, nous voulons de nouvelles règles

S'il vous plaît - remplissez les nouvelles règles dans notre panneau d'administration. Le système analysera comment les modifications affecteront le pourcentage de réponses automatiques *, en tenant compte de la demande de la règle. Si tout s'est bien passé, les règles terminées sont transformées en configuration et chargées dans le service ML. Hourra! Moins d'une heure s'est écoulée et les règles métier ont été mises à jour en production, aucune ligne de code n'a été écrite, les programmeurs ne sont pas dérangés.

* Il semble que ce ne soit pas très évident, alors ajoutons un exemple à l'exemple. Supposons que les experts aient introduit une règle: l'utilisation d'un certain modèle de réponse n'est possible que pour les commandes d'une valeur supérieure à 200 roubles. Si cette restriction fonctionne, les tickets pour des voyages pour un montant inférieur resteront confidentiels, la proportion de réponses sélectionnées automatiquement diminuera et l'efficacité de l'ensemble du système diminuera. Pour éviter que cela ne se produise, il est important d'intercepter les règles ayant échoué à temps et de les envoyer pour révision.

Nous avons ajouté un nouveau thème, nous voulons changer de modèle, nous avons besoin de tout pour travailler demain.

Souvent, les spécialistes du contenu souhaitent ajouter de nouveaux sujets, les diviser en sujets existants ou supprimer ceux qui ne sont pas pertinents. Pas de problème - vous devez modifier la correspondance entre les sujets et les modèles de réponse dans le panneau d'administration.

Si des sujets nouveaux ou modifiés sont déjà apparus dans les réponses des employés du support de première ligne, le modèle, avec un recyclage régulier, resserrera automatiquement ces données et calculera des seuils pour celles-ci (pour les données de la semaine dernière, à l'exception de l'ensemble différé pour les tests).

Sur l'échantillon de test, les anciens et les nouveaux modèles sont comparés selon des mesures spéciales - précision, la part est auto-fixée. Si les changements sont positifs, un nouveau modèle est déployé en production.

Nous analysons les métriques: ne coule pas, ne casse pas


Nous nous concentrerons sur deux critères - la note moyenne d'une réponse automatique par un utilisateur et l'apparition de questions supplémentaires. Les changements ont été surveillés dans l'expérience ab, aucun abaissement statistiquement significatif des paramètres n'a été observé, de plus, les utilisateurs ont souvent évalué les résultats du modèle en raison de la vitesse de réponse.

Cependant, peu importe nos efforts, les méthodes d'apprentissage automatique produisent parfois des réactions absurdes. Après la prochaine mise à jour du modèle, nous avons attrapé un tel cas:

Utilisateur: Grâce au chauffeur, la voiture est arrivée à l'heure, le chauffeur a bien fait, tout s'est parfaitement déroulé! Support
: Nous punirons le conducteur, cela ne se reproduira plus.

Le lancement, heureusement, était un test. Et le problème était le suivant: le modèle a appris à répondre aux avis avec une note inférieure à 4, et parfois nous avons montré par erreur ses avis avec 4 et 5 étoiles. Bien sûr, en raison des limites d'apprentissage, rien de plus intelligent que les neurones ne pourrait répondre. Une fois mis en œuvre, ces cas sont rares (0,1% du total) - nous les suivons et prenons les mesures appropriées: le réseau neuronal répondra au message répété de l'utilisateur.

Conclusions et plans pour l'avenir


Après avoir connecté le système de réponse automatique, nous avons commencé à répondre beaucoup plus rapidement aux demandes des utilisateurs et à porter une attention maximale aux cas vraiment complexes qui nécessitent une enquête détaillée. Nous espérons que cela nous aidera à améliorer la qualité de Yandex.Taxi et à minimiser le nombre d'incidents désagréables.

Le modèle de correction automatique ferme environ 60% de la première ligne, sans dilapider la note moyenne des utilisateurs. Nous prévoyons de développer davantage la méthode et d'augmenter le pourcentage de réponses automatiques sur la première ligne à 99,9%. Et, bien sûr, continuez à vous aider - supportez nos applications et partagez votre expérience à ce sujet sur Habré.

All Articles