Cómo enseñamos inteligencia artificial para responder preguntas de apoyo. Experimenta Yandex.Taxi

No hay servicios ideales: a veces el usuario tiene preguntas sobre el soporte técnico. Es difícil decir que en tales casos es más desagradable intentar combinar una combinación de réplicas de bots de plantillas que puedan resolver el problema, o esperar la respuesta de un especialista que estará en contacto con usted durante medio día.

En Yandex.Taxi, de las dos opciones, elegimos la tercera: usar inteligencia artificial para crear soporte técnico con rostro humano. Mi nombre es Tatyana Savelyeva, mi grupo se dedica al aprendizaje automático sobre datos no estructurados. Debajo del corte, comparto información de los usuarios, hablo sobre cómo automatizar un proceso complejo, organizar el trabajo de equipos completamente diferentes y, por supuesto, poner en práctica el aprendizaje profundo y los trucos técnicos (sin ellos).



¿Por qué automatizar cualquier cosa?


Parecería, por qué inventar una estructura de soporte de múltiples etapas: contratar más personas. Tal vez esto funcione si se reciben alrededor de 10 solicitudes por día. Pero cuando la cantidad de llamadas de usuarios tiende a un millón (que es un pequeño porcentaje de viajes para Yandex Taxi, pero es absolutamente impresionante), debe pensar en tácticas más confiables: encontrar y capacitar a un número suficiente de operadores que puedan hacer frente a problemas atípicos en tales volúmenes es al menos más difícil .

Hace algún tiempo, la industria decidió resolver este problema con la ayuda de varios niveles de soporte. En la primera etapa, se filtraron las preguntas más simples y predecibles: si la respuesta lista no encajaba, el problema se clasificaba y se pasaba a un experto más calificado. Elegante, pero hay un matiz.

El número de llamadas está creciendo; lleva más tiempo procesarlas. El rendimiento de los operadores, el factor humano: ¿hay muchas razones que ralentizan el sistema, donde la factura va por minutos? Muchas de estas restricciones pueden eludirse con la ayuda de una máquina: no se equivocará si se cansa y toma decisiones con mayor rapidez.

Hace aproximadamente un año, comenzamos a utilizar el aprendizaje automático para solicitar de inmediato al operador posibles escenarios de interacción. Los clientes ahora obtienen respuestas más rápido. ¡Pero no hay límite para la perfección!

¿Dónde empezar?


Supongamos que no tiene suerte: el conductor no llegó y no se pone en contacto. ¿Qué pasará con su contacto con el soporte de Yandex.Taxi?



¿Qué se puede optimizar para resolver problemas aún más rápido? Comencemos desde la primera etapa , donde el boleto va a una de dos líneas. Inicialmente, la elección dependía de las palabras clave en la consulta: funcionó, pero la precisión de la determinación fue bastante baja. Para corregir esto, ayudó un clasificador basado en el clásico codificador de modelo de red neuronal BERT.

En esta tarea, la integridad se fija para las líneas de expertos: los casos que requieren procedimientos no deben pasar por alto. Pero no se olvide de la lucha por mejorar la precisión: la menor cantidad posible de llamadas simples debería entrar en la línea de expertos para que el tiempo de respuesta para casos realmente críticos no supere la paciencia del usuario. La precisión de la clasificación por métodos de aprendizaje automático resultó ser 2 veces más efectiva que el análisis de palabras clave. La velocidad de respuesta a situaciones de emergencia aumentó en 1,5 veces.

Intentar automatizar el trabajo de una línea experta en el marco de las tecnologías existentes hoy en día es difícil: la lógica de lo que está sucediendo es difícil de sistematizar, y cualquier error será muy costoso. Volvamos a las típicas consultas de primera línea bien estudiadas, ¿tal vez confiar su procesamiento a algoritmos? Por lo tanto, las tareas de rutina se resolverán aún más rápido y los empleados podrán prestar más atención a casos controvertidos que van más allá del alcance de las plantillas.

Para probar esta idea, se desarrolló un sujest: un sistema de sugerencias que ofrece al personal de soporte las 3 opciones más preferidas para responder a la solicitud actual: El



experimento fue exitoso: en el 70% de los casos, los operadores eligieron uno de los mensajes propuestos, lo que redujo el tiempo de respuesta en un 10%. Parece hora de automatizar completamente la primera línea.

Necesito un plan¿Qué hace un empleado de primera línea ?

  1. Lee el texto, define el tema del tratamiento.
  2. Examina la información del viaje.
  3. Selecciona una de las respuestas preparadas, teniendo en cuenta los dos primeros puntos.

Un ejemplo para penetrar. Dado: una solicitud de texto para un usuario angustiado, alguna información de viaje, un personal de apoyo atento.



En primer lugar, el empleado determinará el tema de la apelación: "Doble débito de la tarjeta". Luego, verifique el método de pago, el estado y el monto cobrado. Dinero cancelado una vez: ¿cuál podría ser la razón? Sí, aquí está: dos notificaciones seguidas.

¿Qué debe hacer un sistema de respuesta automática?

Todos iguales. Incluso los requisitos clave para las respuestas no cambiarán:

Calidad

Si el usuario se queja de la aplicación, no hay necesidad de prometerle al conductor que lave el automóvil. No es suficiente entender exactamente cuál es el problema, uno debe describir en detalle cómo resolverlo.

Velocidad
Especialmente si la situación es crítica y la respuesta es importante en este momento.

Flexibilidad y escalabilidad

La tarea con un asterisco: aunque la creación de un sistema de soporte con Taxi ha comenzado, es útil transferir el resultado a otros servicios: Yandex.Food o Yandex.Lavka, por ejemplo. Es decir, al cambiar la lógica de soporte (plantillas de respuesta, temas de llamadas, etc.) quiero reconfigurar el sistema en días, no en meses.

¿Cómo se implementa?


Etapa 1. Determinamos el tema del texto usando ML.

Primero, compilamos un árbol de temas de referencias y capacitamos al clasificador para navegarlos. Hubo alrededor de 200 posibles problemas: con el viaje (el conductor no llegó), con la aplicación (no puedo adjuntar la tarjeta), con el automóvil (automóvil sucio), etc.

Como se mencionó anteriormente, utilizamos un modelo previamente entrenado basado en BERT. Es decir, para clasificar el texto de la consulta, es necesario presentarlo en forma de vectores para que las oraciones de significado similar se encuentren una al lado de la otra en el espacio resultante.

BERT está pre-entrenado en dos tareas con textos no asignados. En el primero, el 15% de los tokens se reemplazan aleatoriamente con [MÁSCARA], y la red, según el contexto, predice los tokens iniciales; esto proporciona al modelo una "bidireccionalidad" natural. La segunda tarea nos enseña a determinar la relación entre las propuestas: ¿se presentaron dos entradas seguidas o se distribuyeron por todo el texto?

Después de completar la arquitectura BERT en una muestra de solicitudes de soporte técnico de Yandex.Taxi, obtuvimos una red capaz de predecir el tema del mensaje, ajustada a los detalles de nuestro servicio. Sin embargo, la frecuencia de los temas y los temas en sí mismos cambian: para que la red se actualice con ellos, entrenaremos por separado solo las capas inferiores del modelo en los últimos datos, en las últimas semanas. Por lo tanto, se conserva el conocimiento de las características de los textos de soporte, y las probabilidades de posibles clases se distribuyen adecuadamente al día actual.

Un poco más sobre la adecuación: para todos nuestros servicios, incluido Taxi, se ha desarrollado una biblioteca completa de módulos de arquitectura modelo y métodos para validar umbrales de probabilidad. Te permite:

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

Etapa 2. Trabajamos con información sobre el viaje: prescribimos reglas comerciales para cada plantilla.

Se ofreció al personal de soporte una interfaz donde, para cada plantilla de respuesta, se requería alguna regla obligatoria. Cómo se ve, por ejemplo, para el caso de pago doble:

Plantilla: “¡Hola! Revisé todo: el viaje fue pagado una vez. El dinero primero se "congela" en su tarjeta y solo luego se carga, debido a esto el banco puede informar dos veces sobre una transacción. Por favor revise su extracto bancario para asegurarse. Si ve dos cantidades canceladas allí, envíe un escaneo o una foto de la declaración "

Regla: el tipo de pago es" tarjeta "y el estado de transacción es" éxito_cálido "y la transacción_sum == orden_cost

Solo para las plantillas de atención al cliente, nuestros expertos ya han completado más de 1.5 mil reglas.

Etapa 3. Elegimos la respuesta: combinamos los temas de texto apropiados y las reglas de negocios para las plantillas.

Cada tema se corresponde con las plantillas de respuesta apropiadas: el tema está determinado por los métodos de LD, y las reglas que responden a ellas son verificadas por la regla del párrafo anterior. El usuario recibirá una respuesta, cuya verificación arroja el valor "Verdadero". Si hay varias opciones de este tipo, se seleccionará la más popular entre el personal de soporte.



Por cierto, los procesos de interacción con los controladores en Yandex.Taxi no cambian en absoluto: el modelo solo selecciona la plantilla deseada para el operador y responde de forma independiente al usuario.

Finalizar


¡Hurra! El sistema está diseñado, el lanzamiento se llevó a cabo, la optimización muestra excelentes resultados, pero es demasiado pronto para relajarse. Los autorespondedores deberían funcionar de manera estable sin intervención constante y ser fácilmente escalables, solos o en modo semi-manual. Esto lo logramos gracias a la estructura de tres partes del sistema:

  1. Desarrollo fuera de línea: en esta etapa, los modelos cambian, las reglas se preparan;
  2. Servicio de producción: un microservicio que recoge actualizaciones, las aplica y responde a los usuarios en tiempo real;
  3. El análisis posterior de los resultados para asegurarse de que el nuevo modelo funciona correctamente, los usuarios están contentos con las respuestas automáticas.



Y de nuevo a los ejemplos. Principio de la lista de deseos más popular de los clientes (y cómo los tratamos sin escribir el código):

Taxi tiene respuestas automáticas geniales: quiero lo mismo en Yandex.Ed

Para conectar cualquier soporte a nuestro sistema, necesita cuatro pasos simples:

  1. Crear un árbol de temas para textos;
  2. Une cada tema con patrones;
  3. Complete un conjunto de reglas con plantillas en nuestro panel de administración;
  4. Proporcione una tabla de correspondencia entre las solicitudes de los usuarios y las respuestas de soporte.

Si todo esto está allí, estableceremos el camino hacia una nueva carga, el modelo aprenderá de los datos recibidos y accederá a nuestro microservicio junto con todas las reglas definidas (integrarse con un tema de ML específico). Tenga en cuenta: no se escribe una nueva lógica, ¡todo dentro del marco de un proceso existente!

La lógica de soporte ha cambiado, queremos nuevas reglas.

Por favor, complete las nuevas reglas en nuestro panel de administración. El sistema analizará cómo los cambios afectarán el porcentaje de respuestas automáticas *, teniendo en cuenta cómo se exigía la regla. Si todo salió bien, las reglas completadas se convierten en una configuración y se cargan en el servicio ML. ¡Hurra! Ha pasado menos de una hora, y las reglas de negocio se han actualizado en producción, no se ha escrito una sola línea de código, los programadores no se molestan.

* Parece que esto no es muy obvio, así que agreguemos un ejemplo al ejemplo. Supongamos que los expertos introdujeron una regla: el uso de una determinada plantilla de respuesta solo es posible para pedidos de más de 200 rublos. Si esta restricción funciona, los boletos para viajes por una cantidad menor permanecerán sin cerrar, la proporción de respuestas seleccionadas automáticamente disminuirá y la eficiencia de todo el sistema disminuirá. Para evitar que esto suceda, es importante interceptar las reglas fallidas a tiempo y enviarlas para su revisión.

Agregamos un nuevo tema, queremos cambiar el modelo, necesitamos que todo funcione mañana.

A menudo, los especialistas en contenido desean agregar nuevos temas, dividirlos en temas existentes o eliminar temas irrelevantes. No hay problema: debe cambiar la correspondencia entre los temas y las plantillas de respuesta en el panel de administración.

Si ya han aparecido temas nuevos o modificados en las respuestas de los empleados de soporte de primera línea, el modelo, con reentrenamiento regular, ajustará automáticamente estos datos y calculará los umbrales para ellos (para los datos de la última semana, excepto el conjunto diferido para las pruebas).

En la muestra de prueba, los modelos antiguos y nuevos se comparan de acuerdo con métricas especiales: precisión, el recurso compartido se repara automáticamente. Si los cambios son positivos, se lanza un nuevo modelo en producción.

Analizamos métricas: no se hundan, no se rompan


Nos centraremos en dos criterios: la calificación promedio de una respuesta automática por parte de un usuario y la aparición de preguntas adicionales. Los cambios se monitorearon en el experimento ab, no se observó una reducción estadísticamente significativa de las métricas, además, a menudo los usuarios calificaron altamente los resultados del modelo debido a la velocidad de respuesta.

Sin embargo, no importa cuánto lo intentemos, los métodos de aprendizaje automático a veces producen reacciones absurdas. Después de la próxima actualización del modelo, detectamos un caso así:

Usuario: Gracias al conductor, el auto llegó a tiempo, el conductor lo hizo bien, ¡todo salió a la perfección! Soporte
: Castigaremos al conductor, esto no volverá a suceder.

El lanzamiento, afortunadamente, fue una prueba. Y el problema era este: la modelo aprendió a responder a las reseñas con una calificación de menos de 4, y a veces mostramos por error sus reseñas con 4 y 5 estrellas. Por supuesto, debido a las limitaciones de aprendizaje, nada más neurona inteligente podría responder. Cuando se implementan, estos casos son raros (0.1% del total): los rastreamos y tomamos las medidas apropiadas: la red neuronal responderá al mensaje repetido del usuario.

Conclusiones y planes para el futuro.


Después de conectar el sistema de respuesta automática, comenzamos a responder mucho más rápido a las solicitudes de los usuarios y prestamos la máxima atención a los casos realmente complejos que requieren una investigación detallada. Esperamos que esto nos ayude a mejorar la calidad de Yandex.Taxi y a minimizar la cantidad de incidentes desagradables.

El modelo de reparación automática cierra aproximadamente el 60% de la primera línea, sin desperdiciar la calificación promedio de los usuarios. Planeamos desarrollar aún más el método y aumentar el porcentaje de respuestas automáticas en la primera línea al 99.9%. Y, por supuesto, continúe ayudándole: soporte en nuestras aplicaciones y comparta experiencias al respecto en Habré.

All Articles