class="lazyload

NOTICIAS / AI TECNOLOGÍA

25 de noviembre de 2020
Los asesores de los centros de llamadas están empezando a ver cómo la NLU aparece en su día a día, ayudándoles a responder más fácilmente a las peticiones de los clientes. Para ello, una herramienta debe ser capaz de reconocer al mismo tiempo la solicitud del cliente y sus características, es decir, una intención y entidades con nombre.

"OK Google, pon los Rolling Stones en Spotify", "Alexa, ¿qué tiempo hace hoy en París?", "Siri, ¿quién es el presidente francés?".

Si alguna vez ha utilizado asistentes vocales, indirectamente ha utilizado algunos procesos de comprensión del lenguaje natural (NLU). La misma lógica se aplica a los asistentes de chatbot o al enrutamiento automático de tickets en los servicios de atención al cliente. Desde hace algún tiempo, el NLU forma parte de nuestra vida cotidiana y es probable que no vaya a dejar de hacerlo.

Automatizando la extracción de la intención del cliente, por ejemplo, NLU puede ayudarnos a responder a las peticiones de nuestros clientes con mayor rapidez y precisión. Por eso, todas las grandes Compañia se han embarcado en el desarrollo de su propia solución. Sin embargo, con todas las bibliotecas y modelos que existen en el campo del NLU, todos ellos reivindicando resultados punteros o fáciles de obtener, a veces resulta complicado orientarse. Tras haber experimentado con varias bibliotecas en nuestros proyectos de NLU en Artefact, queríamos compartir nuestros resultados y ayudarle a comprender mejor las herramientas actuales en NLU.

¿Qué es NLU?

La comprensión del lenguaje natural (NLU) es definida por Gartner como "la comprensión por los ordenadores de la estructura y el significado del lenguaje humano(por ejemplo, inglés, español, japonés), lo que permite a los usuarios interactuar con el ordenador utilizando frases naturales". En otras palabras, NLU es un subdominio de Inteligencia Artificial que permite interpretar textos analizándolos, convirtiéndolos en lenguaje informático y produciendo una salida de forma comprensible para los humanos.

Si te fijas bien en cómo funcionan los chatbots y los asistentes virtuales, desde tu petición hasta su respuesta, NLU es una capa que extrae tu intención principal y cualquier información importante para la máquina, de modo que pueda responder mejor a tu petición. Digamos que llamas al servicio de atención al cliente de tu marca favorita para saber si el bolso de tus sueños está por fin disponible en tu ciudad: NLU le dirá al asistente que tienes una solicitud de disponibilidad de producto y buscará el artículo concreto en la base de datos de productos para averiguar si está disponible en el lugar que deseas. Gracias a NLU, hemos extraído una intención, un nombre de producto y una ubicación.

Imagen para el puesto

(Arriba: ilustración de una intención de cliente y varias entidades que se extraen de la conversación)

El lenguaje natural está inculcado en la mayoría de las empresas data y, con los recientes avances en este campo, teniendo en cuenta la democratización de los algoritmos de NLU, el acceso a más potencia informática y más data, se han puesto en marcha muchos proyectos de NLU. Veamos uno de ellos.

Presentación del proyecto

Un proyecto típico en el que se utiliza NLU es, como ya se ha mencionado, ayudar a los asesores de los centros de llamadas a responder a las peticiones de los clientes más fácilmente a medida que avanza la conversación. Para ello tendríamos que realizar dos tareas diferentes:

  • Comprender la intención del cliente durante la llamada (es decir, la clasificación del texto).
  • Capte los elementos importantes que permitan responder a la solicitud del cliente (es decir, el reconocimiento de entidades con nombre), por ejemplo, números de contrato, tipo de producto, color del producto, etc.

Cuando examinamos por primera vez las soluciones sencillas y disponibles en el mercado para estas dos tareas, pudimos encontrar más de una docena de frameworks, algunos desarrollados por GAFAM y otros por colaboradores de plataformas de código abierto. Imposible saber cuál elegir para nuestro caso de uso, cómo se comporta cada uno de ellos en un proyecto concreto y real data, aquí conversaciones de audio de call center transcritas a texto. Por eso hemos decidido compartir nuestra comparativa de rendimiento con algunos consejos, así como los pros y los contras de cada solución que hemos probado.

Es importante señalar que esta evaluación comparativa se ha realizado con el inglés data y texto de voz transcrito, por lo que no puede utilizarse tanto como referencia para otros idiomas o aplicaciones que utilicen directamente texto escrito, por ejemplo casos de uso de chatbot.

Punto de referencia

Detección de intenciones

El objetivo es detectar lo que quiere el cliente, su intención. Dada una frase, el modelo tiene que ser capaz de clasificarla en la clase correcta, correspondiendo cada clase a una intención predefinida. Cuando hay varias clases, se habla de clasificación multiclase. Por ejemplo, una intención puede ser "quiereComprarProducto" o "buscaInformación". En nuestro caso, hemos definido 5 intenciones diferentes y se utilizaron las seis soluciones siguientes para la prueba comparativa:

  • FastText: biblioteca para el aprendizaje eficaz de representaciones de palabras y clasificación de frases creada por el laboratorio de investigación de Facebook AI .
  • Ludwig: una caja de herramientas que permite entrenar y probar modelos de deep learning sin necesidad de escribir código, utilizando la línea de comandos o la API programática. El usuario solo tiene que proporcionar un archivo CSV (o un pandas DataFrame con la API programática) que contenga su data, una lista de columnas para usar como entradas, y una lista de columnas para usar como salidas, Ludwig hará el resto.
  • Regresión logística con preprocesamiento espacial: regresión logística clásica utilizando la biblioteca scikit-learn con preprocesamiento personalizado utilizando la biblioteca spaCy (tokenización, lematización, eliminación de palabras de parada).
  • BERT con tubería spaCy: Canalizaciones de modelos spaCy que envuelven el paquete de transformadores Hugging Face para acceder fácilmente a arquitecturas de transformadores de última generación como BERT.
  • LUIS: Servicio API cloud de Microsoft que aplica inteligencia de aprendizaje automático personalizada al texto conversacional en lenguaje natural de un usuario para predecir intenciones y entidades.
  • Flair: un marco de PNL de última generación para diversas tareas, como el reconocimiento de entidades con nombre (NER), el etiquetado de partes del discurso (PoS), la desambiguación de sentidos y la clasificación.

Los siguientes modelos se han entrenado y probado con los mismos conjuntos de datos: 1600 expresiones para el entrenamiento y 400 para las pruebas. Los modelos no se han ajustado, por lo que algunos de ellos podrían tener mejores resultados que los que se presentan a continuación.

Imagen para el puesto

*Tiempo de inferencia en el Macbook Air local (Intel Core i5-8 de doble núcleo a 1,6 GHz Go 1600 MHz de RAM DDR3).

  • En general, en términos de rendimiento, todas las soluciones obtienen resultados buenos o incluso muy buenos (puntuación F1 > 70%).
  • Uno de los inconvenientes de Ludwig y LUIS es que son modelos muy "de caja negra", lo que dificulta su comprensión y puesta a punto.
  • LUIS es la única solución probada que no es de código abierto, por lo que es mucho más cara. Además, el uso de su API en Python puede resultar complejo, ya que se ha diseñado inicialmente para utilizarse a través de una interfaz de botones. Sin embargo, puede ser una solución a preferir si usted está en el contexto de un proyecto que pretende entrar en producción y cuya infraestructura está construida sobre Azure por ejemplo, la integración del modelo será entonces más fácil.

Extracción de entidades

El objetivo es poder localizar palabras concretas y clasificarlas correctamente en categorías predefinidas. De hecho, una vez que haya detectado lo que su cliente desea hacer, puede que necesite encontrar más información en su solicitud. Por ejemplo, si un cliente quiere comprar algo, es posible que usted quiera saber de qué producto se trata, en qué color, o si un cliente quiere devolver un producto, es posible que usted quiera saber en qué fecha o en qué tienda se realizó la compra. En nuestro caso, habíamos definido 16 entidades personalizadas: 9 entidades relacionadas con el producto (nombre, color, tipo, material, tamaño, ...) y entidades adicionales relacionadas con la geografía y la hora. En cuanto a la detección de intenciones, se han utilizado varias soluciones para hacer un benchmark:

  • spaCy: una biblioteca de código abierto para el procesamiento avanzado del lenguaje natural en Python que ofrece diferentes funciones, incluido el reconocimiento de entidades con nombre.
  • LUIS: ver arriba
  • Ludwig: ver arriba
  • Flair: ver arriba

Los siguientes modelos se han entrenado y probado con los mismos conjuntos de datos: 1600 expresiones para el entrenamiento y 400 para las pruebas. Los modelos no se han ajustado, por lo que algunos de ellos podrían tener mejores resultados que los que se presentan a continuación.

Imagen para el puesto

  • Hay dos modelos que obtienen muy buenos resultados en el reconocimiento personalizado de entidades con nombre, spaCy y LUIS. Ludwig y Flair necesitarían algunos ajustes para obtener mejores resultados, sobre todo en términos de recuerdo.
  • Una de las ventajas de LUIS es que el usuario puede aprovechar algunas funciones avanzadas para el reconocimiento de entidades, como los descriptores, que proporcionan indicios de que determinadas palabras y frases forman parte de un vocabulario de dominio de entidades (por ejemplo: vocabulario de colores = negro, blanco, rojo, azul, azul marino, verde).

Conclusión

Entre las soluciones probadas en nuestro conjunto de datos de centros de llamadas, tanto para la detección de intenciones como para el reconocimiento de entidades, ninguna destaca en términos de rendimiento. Según nuestra experiencia, la elección de una solución en lugar de otra debe basarse en su practicidad y en función de su caso de uso específico (si ya utiliza Azure, si prefiere tener más libertad para ajustar sus modelos...). Como recordatorio, tomamos las librerías tal cual para producir este benchmark, sin afinar los modelos, por lo que los resultados mostrados deben tomarse con una ligera retrospectiva y podrían variar en un caso de uso diferente o con más entrenamiento data.

class="lazyload

¿Le interesa el marketing digital y data ?

Suscríbase a Data Digest, el boletín de Artefact, para recibir consejos prácticos, ideas y opiniones en su bandeja de entrada cada mes.

¡Apúntame!