Automatizando el análisis de llamadas con Inteligencia Artificial

Daniel Monsalve Muñoz
Bancolombia Tech
Published in
7 min readDec 22, 2022

¿Alguna vez pensaste cómo funcionan dispositivos como Alexa o Siri para responder tus preguntas?

Esto ha sido posible mediante la inteligencia artificial, haciendo usos de modelos de procesamiento de speech to text, para el análisis de texto e información.

Este tipo de desarrollos también permiten que se automaticen procesos, cosa que hemos implementado para llevar el análisis de las llamadas a un siguiente nivel.

En el entorno empresarial se generan continuamente nuevos requerimientos por parte de los diferentes entes de control. Esto implica que se deban realizar actividades dentro de los procesos que, muchas veces, causan incrementos en los costos de operación.

En este caso, te contaremos sobre una iniciativa que fue creada precisamente por un requerimiento realizado por la Superintendencia Financiera a la mesa de dinero de Bancolombia, llamada Deber de asesoría. Lo anterior, consiste básicamente en cumplir con unos lineamientos establecidos que deben ser efectuados en cada una de las llamadas que sean recibidas o realizadas por los asesores.

En números, este requerimiento significaría el análisis de miles de llamadas por mes, cada una con una duración aproximada entre 5 y 10 minutos. ¿Cuánto tiempo se requiere para analizar cada una de las llamadas? ¿cuántas personas serían necesarias para poder hacerlo mensualmente? Mediante la iniciativa de Speech To Text, aborfamos esta problemática y buscamos automatizar el análisis de las llamadas usando las capacidades que nos da la Inteligencia Artificial.

¿Cómo funciona Speech To Text?

El proceso hace uso de varios componentes, partiendo por la limpieza de los audios dónde se eliminan los silencios y una vez está depurada la llamada se realiza una transcripción a texto usando Amazon Transcribe. Posteriormente, es realizada una comparación semántica de los requisitos con las frases obtenidas de la llamada y según esto se determina el nivel de cumplimiento.

Limpieza de llamada

Dentro del análisis realizado de los audios que fueron entregados, identificamos que muchas de las llamadas contaban con largos espacios en los que no había ninguna persona hablando.

Mediante el uso de pydub (un paquete open source para limpieza de audios) fueron eliminados, consiguiendo de esta manera disminuir la duración de las llamadas. Esto facilitó el paso por la herramienta de transcripción e impactó directamente los costos del proceso.

Transcripción de audios

Para la transcripción de los audios debimos realizar varias validaciones que permitieran tener certeza en cuál modelo tenía mayor confianza en la transformación de los audios, teniendo en cuenta que la llamadas contaban con un lenguaje técnico.

Se utilizaron varias llamadas con transcripción humana y de máquina para validar el cumplimiento de cada llamada e iterando en las palabras que no eran transcritas correctamente para ingresarlas en un diccionario personalizado. Luego de varias pruebas, se logró una transcripción superior al 85% haciendo uso de Amazon Transcribe y un vocabulario personalizado.

Tokenización y embedding de frases

Para poder realizar el análisis de textos, es necesario primero hacer una transformación indispensable que permita realizar operaciones con cada una de las frases. Inicialmente, para poder hacer este proceso, es necesario separar cada una de las frases del texto.

Esto lo construimos mediante la librería de nltk que nos permite fácilmente separar las frases contenidas dentro de un texto largo y convertirlas en tokens.

Posteriormente, para el proceso de embedding, que consiste en convertir estas palabras o frases en vectores de números, se utilizaron varios paquetes que contenían corpus de palabras en español de diferentes fuentes (Wikipedia, Spanish Unnanotated Corpora, entre otros), sin embargo, los modelos de Transformer fueron los que mejor resultado obtuvieron.

Un transformer, de manera sencilla, es un modelo de red neuronal que aprende de acuerdo a un contexto que se le entrega, usando relaciones en datos secuenciales, de esta manera identifica como los datos se influencia y dependen entre sí.

Es importante mencionar en este punto, que para poder determinar sí se está cumpliendo con los requisitos de asesoría se tiene un listado de frases de validación que tuvieron el mismo proceso de transformación.

Comparación semántica

Una vez se tienen los vectores de números que representan las frases, la comparación entre ellas se vuelve una tarea de medir distancias. Si pensamos en un plano cartesiano podemos decir que las líneas más cercanas son las que más se parecen, mientras que las más lejanas tienen menor similitud. Para determinar esta distancia existen distintas métricas, la seleccionada por nosotros para medirla fue cosine similarity.

Cumplimiento de requisitos

Teniendo los score de cada una de las frases de la llamada, se definió un límite (0.6) sobre el que se filtrarían las frases, es decir, sí no tienen una similitud superior al 60% no cumple con las condiciones evaluadas.

Luego, para cada una de las categorías que se deben cumplir del guion (10); se dejó el que mayor score tuviera y de acuerdo con esto, se valida el cumplimiento de cada una de las llamadas.

Arquitectura del modelo

Para este caso de uso, tratamos de mantener una arquitectura muy simple y que permitiera escalar el funcionamiento a medida que se incrementaran los análisis de las llamadas. Como se puede ver en la figura, los componentes que interactúan son pocos y además sin mucha complejidad.

Para el almacenamiento se optó por separar en diferentes buckets la información para tener un mejor control de acceso a la información debido a que hay datos potencialmente confidenciales. De esta manera se tienen los audios, las transcripciones y los resultados en contenedores diferentes.

Los scripts de procesamiento de la información corren dentro de dos lambdas, uno encargado de la transcripción de los audios y otro de validación de cumplimiento de guion. Lo diseñamos de esta manera pensando en el ahorro de costos, debido a las características de cada una de las instancias, pues, en un servicio de AWS, no se requiere tanta capacidad de procesamiento para realizar la transcripción como sí se requiere para la validación de su cumplimiento. Además, esto permite orquestar cada uno de los pasos del proceso.

Para garantizar una ejecución correcta del proceso se definieron dos componentes que permitieran el flujo de la información por cada uno de los pasos definidos. EventBridge para la ingesta de la información y la programación de la ejecución de los lambdas, esto combinado con StepFunctions para orquestar el paso de transcripción a validación de cumplimiento en el momento que la información esté disponible.

Por último, para entregar la información de una manera que permita una interpretación sencilla de los datos, se construyó un tablero dónde se puedan visualizar los resultados consolidados.

Resultados

Con la creación de las distintas funciones, se pudo realizar las pruebas en llamadas reales y obtuvimos resultados satisfactorios para el funcionamiento del modelo y para la forma en que está realizando la relación entre las frases de la llamada con los requisitos del guion. Esto lo pudimos identificar al momento de revisar algunos tokens que hicieron match y se pudo apreciar que semánticamente son similares y que en fondo, dan la misma información.

Respecto a los asesores, luego de correr las primeras llamadas, se evidencia que no están logrando llegar a un cumplimiento significativo en las frases que deben ser mencionadas a los clientes. Por lo tanto, será necesario continuar con las pruebas para validar la mejora del servicio a medida que los requisitos exigidos sean implementados dentro de las asesorías que realizan día a día.

Adicionalmente, para identificar oportunidades de mejora respecto al cumplimiento del requisito realizamos una exploración de los resultados arrojados y pudimos generar cuáles eran los puntos críticos a trabajar con los asesores, permitiendo de esta manera facilitar el crecimiento de las cifras de cumplimiento.

Pasos a seguir

Filtro de llamadas

Una de las principales implementaciones que debemos realizar para continuar mejorando, está enfocada en el filtro de llamadas que pasan a ser evaluadas en el modelo. Esto impacta directamente en el cumplimiento de los requisitos, ya que, solo serían evaluadas las llamadas que realmente deben serlo y no otras que no entran dentro del espectro de asesoría a clientes.

Mejora de vocabularios

Como mencioné anteriormente, las llamadas que se están evaluando son altamente técnicas, por lo que muchas de las palabras o conceptos que se mencionan no están dentro de los datos con los que los modelos son generalmente entrenados. La mejora de vocabulario es un proceso iterativo que se debe realizar permanentemente para poder continuar con la mejora de las transcripciones realizadas de las llamadas.

Disminución de costos

Debido a los tiempos que teníamos para la implementación del Deber de asesoría, se hizo uso de modelos pre-entrenados que permitieran generar un modelo que solucionará las necesidades rápidamente. Por esto, acudimos a Amazon Transcribe, sin embargo, los costos de este son elevados, lo que hace necesario una solución sostenible a largo plazo.

Haciendo uso de las capacidades analíticas del banco y los modelos que ya existen, plantearemos un enriquecimiento del modelo de speech to text con las transcripciones realizadas con AWS para aumentar el vocabulario y la capacidad de interpretar llamadas técnicas con mayor precisión.

Conclusiones

La inteligencia artificial puede ayudar a eliminar muchas tareas operativas y repetitivas para que las personas se enfoquen en actividades que pueden generar mayor valor a las empresas. En este caso de uso se puede ver el proceso de implementación y análisis en una iniciativa especifica que puede ser adaptada a otras necesidades.

Es importante mencionar y, como recomendación, que debemos entender muy bien el problema que se quiere resolver, pues esto permitirá tomar decisiones en el momento de definir arquitecturas, implementar los diferentes modelos y en últimas de determinar la validez de lo que se está construyendo.

Conociendo como puede abordase el trabajo con audio y procesamiento de lenguaje natural, ¿1ué otras aplicaciones consideras podrían darse a este tipo de soluciones?

--

--