Armando un clasificador de texto con Inteligencia Artificial en tres pasos

Cómo construimos una herramienta que nos permite automatizar tareas a partir de inteligencia artificial y procesamiento de lenguaje natural, aumentando la eficiencia y la calidad del proceso

Data & AI Accenture Argentina
5 min readSep 18, 2023

--

Desde el comienzo de la pandemia, nuestra forma de vivir, y de comprar, cambió drásticamente. En ese cambio, aparecen nuevos desafíos a resolver en toda la cadena de suministros. Por ejemplo, no es extraño pensar que algunos compradores o vendedores tengan que resolver inconvenientes a través de canales de comunicación específicos. En un contexto de constante cambio, es importante no solo darles una respuesta correcta, rápida y personalizada a los usuarios, sino también evaluar si la respuesta que hemos dado ha sido la correcta. Con el gran caudal de reclamos y preguntas que puede llegar a haber con el boom de los canales online, realizar esta evaluación ex post de forma manual puede ser una tarea casi imposible; sin embargo, con la ayuda de inteligencia artificial, apoyándonos en herramientas de machine learning y procesamiento de lenguaje natural (NLP) veamos cómo esto se vuelve posible.

Con esto en mente, supongamos que queremos evaluar las interacciones de los representantes de un contact center en 12 dimensiones distintas: ortografía, puntuación, inclusión de términos técnicos, utilización de lenguaje no profesional, estrategia de finalización de la conversación, etc. Además, pensemos que actualmente se están evaluando solo 1% de las interacciones de los agentes del contact center. Se puede ver que hay algunas de estas dimensiones (por ejemplo, ortografía y puntuación) se podrían evaluar automáticamente (con herramientas como el corrector automático del paquete Office), mientras que otras necesitan un grado de análisis mayor. Para estos casos, necesitamos realizar dos tareas: “traducir” el texto a una colección de números (es decir, un vector), para que puedan ser entendidos por modelos estadísticos, y luego de eso, utilizar estos resultados en un modelo que clasifique qué casos fueron correctamente analizados, y cuáles no. A modo de resumen, mostramos nuestro pipeline gráficamente, que detallaremos en los próximos párrafos

Paso 1) La respuesta a todo no siempre es Machine Learning

Como mencionamos anteriormente, algunas de las dimensiones que debíamos evaluar eran directas (por ejemplo, chequear que los signos de exclamación tengan apertura y cierre, errores de tipeo, entre otros). Por más que es posible entrenar un modelo de machine learning para realizar esta tarea, puede no ser lo mejor. En particular, para evaluar estas dimensiones utilizamos el paquete LanguageTool de python, que es el mismo utilizado por OpenOffice, para intentar identificar estos errores. Esto no solo nos permitió mejorar nuestras predicciones, sino tener un proceso mucho más robusto ya que ahora logramos identificar errores que antes los auditores no lograban ver manualmente.

Paso 2) Traduciendo texto a números

Aún cuando podíamos identificar parte de los errores con esta herramienta automática, esto no era el fin de la historia ya que para parte de los problemas necesitábamos apoyarnos en modelos de inteligencia artificial. El problema es que estos modelos no entienden “palabras” ya que no pueden tomar texto como input. Por lo tanto, para funcionar, necesitábamos poder pasar esas palabras a una colección de números (o vector). En la práctica, dado que existen varias formas de hacer esto, probamos los siguientes enfoques:

La elección del método a utilizar no es un problema trivial y puede no haber una respuesta obvia ya que existe un trade-off entre calidad del modelo y peso/tiempo de entrenamiento. Siguiendo el espíritu que mencionamos en este artículo sobre forecasting, tomamos un enfoque experimental y no elegimos a algún modelo como nuestra bala de plata, sino que para cada dimensión a actualizar probamos todo y nos quedamos con el que nos diera un mejor balance.

Ahora bien, ¿cuál es la diferencia entre cada modelo? Las variantes de menor complejidad lo que hacen es “contar palabras”, evaluando cuántas veces aparece x palabra en el texto (Bag of Words) o cuántas palabras aparecen al menos z veces en el texto (FreqDist). Sin embargo, Word2Vec y BERT representan las palabras en vectores que no tienen un significado unívoco (las variables generadas no tienen un nombre específico), pero que sí captan las diferencias entre las palabras. En pocas palabras, una de las diferencias entre ambos es que BERT es un mecanismo de atención que agrega el contexto a los vectores:

Paso 3) Viendo qué está bien y qué está mal

Aún cuando tengamos a los textos representados en vectores nos falta evaluar cuáles de esos textos tienen errores y cuáles no. En este sentido, el camino de vectorización elegido determinaba el camino a seguir:

1) Para las dimensiones que utilizaban BERT, agregamos una capa a la red neuronal que predecía si un texto estaba bien escrito o no (viendo la dimensión en particular)

2) Para las otras dimensiones, entrenamos modelos tradicionales de machine learning (Random Forest, LightGBM, Support Vector Machine). En este sentido, el enfoque que tomamos para esto fue la misma para la vectorización: experimentar, experimentar y experimentar (¡y ver qué era lo mejor!)

Es importante marcar que parte del objetivo de esta solución era aumentar la capacidad del proceso de análisis de interacciones a través de la automatización. Sin embargo, dado que los modelos tienen cierto grado de error, no es que se pasaban a automatizar todos los análisis, sino los que los modelos mostraban tener un grado mayor de confianza (es decir, hay una porción que debe ser evaluada manualmente). Podemos ver esto de forma visual, pensando que el modelo marca la probabilidad de que el mensaje sea correcto, y conceptualmente dividiendo entre las acciones que están efectivamente mal (curva azul) y las que están bien (curva violeta):

Resultados y Conclusiones

Bueno, hemos llegado al final, ya que hemos vectorizado nuestro texto y hemos clasificado entre las observaciones que decimos que están bien, las que están mal y las que no sabemos. Dado el gran desafío que fue este proyecto, es importante ver dos cosas: resultados y lecciones aprendidas. En cuanto a resultados:

· Logramos una automatización del 86% en lo analizado, lo cual llevaba a un ahorro de tiempo total de aproximadamente 14%

· Nuestra herramienta de detección automática de errores permitía aumentar la precisión del proceso en un 20%

Por otro lado, a nivel ciencia de datos, tuvimos varios aprendizajes:

· Es importante considerar el proceso de negocios y el problema existente

· No existe una solución que sirva para todos los casos. El problema debería ayudar a la elección de la solución correcta

· ¡Experimentar, experimentar y experimentar!

Conocé más sobre inteligencia aplicada en https://accntu.re/3kyDsY4

--

--

Data & AI Accenture Argentina

Argentine Data Scientist. Passionate about music, sports and data analytics