Saltar al contenido

M20- Cómo Analizar Datos Provenientes de un Asistente Conversacional y no Morir en el Intento

Tutora: Karen Palacio
karen.palacio@kunan.com.ar

Descripción

Les presentamos un proyecto donde intervienen problemáticas tanto de NLP en español como de Ciencias de Datos en la industria, con un dataset que se corresponde a un asistente conversacional clínico. Vamos a estar analizando y describiendo la actividad de distintos hospitales a lo largo de tres meses, y nos interesará entender el bot como producto de datos. Por esto, estaremos caracterizando patrones de uso con distintos filtros de análisis: buscaremos identificar tipos de conversaciones, presencia de fallos, sesgos, características de poblaciones, presencia de necesidades no contempladas en el asistente, entre otras cosas.
Este dataset corresponde con el producto Merlín, desarrollado por el equipo de IA de Kunan, al que pertenezco. Merlín es un asistente conversacional orientado a acciones de rutina de clínicas y hospitales. Las cuatro funciones más importantes de este bot son las de sacar, consultar, cancelar turnos médicos, y la de pasar de estar hablando con el asistente a hablar con un operador humano (handoff). Además de esto el bot puede responder preguntas frecuentes relacionadas a la clínica (por ej, ¿qué especialidades tienen?, ¿qué horarios de atención tienen?, entre otras) y a preguntas de chitchat (por ej ¿sos un bot?, ¿cómo te llamás?, ¿quién te hizo?, etc)
El dataset de esta mentoría corresponde a conversaciones reales de pacientes con el bot, con datos recolectados por el canal de comunicación de Whatsapp, desde diciembre de 2021 hasta marzo del 2022. Tiene los mensajes de cada conversación, tanto emitidos por el bot como por el usuario y taggeados correspondientemente. Este dataset cuenta con más de 400k filas.

Este tema es interesante porque...

En este proyecto entrarás en contacto con problemáticas de análisis de texto y análisis conversacional en español, que son problemáticas abiertas en la comunidad de NLP.
Les servirá para adquirir experiencia manejando datos reales en un contexto de ciencias de datos en la industria, ya que no es un dataset sintético, ni académico.

Trataremos de responder algunas de las siguientes preguntas

– ¿Cómo se puede analizar la actividad de un hospital?
– ¿Cómo se puede analizar un producto de datos, como es un asistente conversacional?
– ¿Cómo se pueden identificar tópicos de interés en un dataset de texto?
– ¿Cómo identificamos errores de parte de un producto de datos, haciendo análisis de textos? ¿Qué otros indicios de presencia de errores nos permitirían predecir mayor probabilidad de conversación que no cumpla un objetivo?
– ¿Cómo identificamos distintas poblaciones en un dataset? ¿Cómo diferenciamos las experiencias de uso por cada población?
– ¿Hay sesgos en un producto de datos? ¿Cómo los identificamos? ¿Si hay sesgos, de qué tipo?
– ¿Cómo podemos detectar si existen necesidades expresadas por los usuarios que no estén contempladas por un producto?

Datos

La estructura del dataset planteada es la siguiente:

From_anon: Número de teléfono emisor del mensaje. (Anonimizado)
To_anon: Número de teléfono receptor del mensaje.
Hospital: Nombre del hospital.
Tel_hospital: Teléfono del hospital.
Body: Cuerpo del mensaje.
Status: Indica si el mensaje se recibió/leyó.
SentDate: Año, mes, día, hora, minutos y segundos en el que se envió el mensaje.
Fecha: Año, mes y día formato: aaaa-mm-dd
Dia: día del mes
Hora: hora del mensaje (hh)
Messages: Indica 1 por cada mensaje, variable para utilizar agrupaciones.
Direction: Dirección del mensaje ya sea de entrada o salida.
Appointment_msp: Mensaje de turno confirmado con la especialidad solicitada.
Appointment: valor dicotómico 1 indica que sacó turno y 0 que no.
Cancellation_msp: Mensaje de turno cancelado que contiene la especialidad cancelada.
Cancelled: valor dicotómico 1 indica que canceló efectivamente el turno y 0 que no se canceló.
Consult: valor dicotómico 1 indica que se consultaron los turnos y 0 que no se consultaron
Consult_Appoint: cuerpo del mensaje sobre la consulta realizada.
Fail_HH: valor dicotómico donde 1 indica que no se solicitó HH y no se logró la comunicación.
Got_HH: valor dicotómico donde 1 indica que la persona solicitó y logró contactarse con HH.

Tenemos además un dataset más crudo con el cual trabajarán para las primeras instancias.
Si querés inspeccionar el conjunto de datos, encontrarás una muestra en https://github.com/kunan-sa/mentoria_2022/blob/master/muestra_500_anon.csv
Esta muestra corresponde a 500 filas random de enero del 2022.
Estamos en proceso de anonimización de los datos, por lo que vamos procesando por baches y los vamos a ir subiendo. Tenemos en total más de 400k filas.

Hitos de la Mentoría

Entrega 20/05 – Práctico de análisis y visualización, que consistirá en:

– Analizar y visualizar los patrones de actividad por hospital, a lo largo de los meses.
– Identificar cantidad de mensajes promedios para llegar a un objetivo, por interacción del bot (sacar turnos, consultar, cancelar, hh)
– Describir cantidad y tipos de conversaciones (por objetivo, por resolución final o conversación con fallo).
– Entender las intenciones presentes en el bot.

Entrega 17/06 – Práctico de análisis exploratorio y curación de datos, que consistirá en:

– Uso de la librería datetime para la creación de columnas y sub-datasets que permitan refinar los análisis de actividad por hora del día, día de la semana, semana del mes.
– Creación y agregado de columnas con información relevante como será acción tomada por parte del bot, nombre del hospital, análisis de sentimiento del mensaje, tipo de conversación, etc.

Entrega 24/06 – Video de presentación intermedia del proyecto y dataset.
Entrega 29/07 – Práctico aprendizaje supervisado, que consistirá en dado el dataset que construyeron con los tipos de conversaciones taggeados, predecir cuándo es más factible que una persona prefiera pasar con un humano.
Entrega 26/08 – Práctico aprendizaje no supervisado, que consistirá en utilizar los algoritmos vistos en la materia para:

– Identificar distintas poblaciones presentes en el dataset.
– Explorar presencia de patrones en las conversaciones que terminan con la acción pasar a un humano
– Responder al interrogante ¿El bot performa parejamente ante estas poblaciones?
– Identificar intenciones nuevas, no contempladas por el bot.

Entrega 23/09 – Video de presentación final de mentoría.
Jornadas 11/11 y 12/11 – Presentación de mentorías.

Integrantes del grupo 1
Gustavo Álvarez Lupu - Tomás Niño Kehoe.
Integrantes del grupo 2
Francisco Furey - Gustavo Jaca
Gastón Moro.