Asistiendo el acceso de información veraz con NLP: Covid19

María Florencia Alonso

Descripción

Con el comienzo de la pandemia por coronavirus y la situación de aislamiento social, preventivo y obligatorio que comenzó a vivirse el 20 de Marzo, el equipo de Inteligencia Artificial de KUNAN junto a un grupo de voluntarios comenzó el desarrollo de un asistente virtual a través de un chat para responder las dudas que se fueran generando respecto a la cuarentena y demás medidas tomadas ante esa situación.

Siempre con el objetivo de centralizar la información de distintas de fuentes oficiales y hacerla llegar a la gente, de una forma sencilla y directa. Algunas de ellas son: el Boletín oficial, recomendaciones de la OMS/OPS, el Ministerio de Salud de la Nación y Ministerios de salud provinciales, el Banco Central, la AFIP.

Con el pasar de los días se llegó a abarcar una amplia variedad de temas: medidas tomadas desde el gobierno, estadísticas de casos en provincias de Argentina y en países en general, recomendaciones de los principales entes de salud, también se trataron temas como la violencia de género, los estados de ansiedad y otras cuestiones psicológicas durante la cuarentena. Además hubo un esfuerzo constante por mantener el asistente actualizado con los cambios que fueran surgiendo y nuevos temas de interés.

El proyecto es sin fines de lucro y puede verse en https://asistocovid.com.ar​ . Se puso a libre disposición de quien quisiera colocar el asistente en su sitio web.


Este tema es interesante porque...

Trataremos con muchos de los temas actuales sobre pandemia, cuarentena y coronavirus.

Como se mencionó, algunos de ellos: medidas oficiales, aspectos sociales, recomendaciones de organismos de salud, estadísticas de casos y más.

Además podrás tener una primera aproximación al análisis de texto y el procesamiento del lenguaje natural integrando sobre un mismo dataset los temas vistos en las materias de la Diplomatura. Con una orientación hacia chatbots!


Objetivos

Para tener más claros los puntos claves de la mentoría, se buscará a través de ella:

- Tomar conciencia del aprendizaje y evolución continua de un asistente conversacional, ya que al ser un modelo basado en datos se va mejorando a medida que cuenta con más conversaciones con usuarios. Ésto se verá en la etapa de análisis, sobre todo de las primeras semanas de vida del asistente.

- Clasificar las frases de los usuarios como una primera aproximación a un bot.

- Descubrir tópicos en las preguntas y frases formuladas por los usuarios. Más que nada apuntando a aquellos temas de interés del público donde hay falta de información oficial.Aunque también esto es útil en el proceso de actualización de la información cubierta por el bot.

- Análisis de sentimiento para buscar indicadores de angustia y violencia en las input de usuario. Lo que permitiría detectar y tratar éstos temas en el asistente.


Dataset

En ésta mentoría se va a trabajar sobre un dataset conformado por todas las conversaciones que tuvo el asistente virtual con usuarios. Tanto usuarios desde la página asistocovid como de otras páginas donde fue insertado.

En https://github.com/kunan-sa/asistocovid se puede acceder al dataset. Se encuentra en formato .csv para su cómoda adquisición y análisis.

Descripción del archivo DatasetAsistocovid.csv:

- ID_evento: identificador para cada evento. Un evento puede ser entendido como un mensaje enviado ya sea por el usuario o por el bot.

- ID_conversacion: identificador para cada usuario que interactuó con el bot.

- evento: [user, bot] según quien envió el mensaje

- ​ categoría: nombre de la categoría que se puede asignar a la frase del usuario.

- texto: descripción del mensaje

- fecha: formato día-mes-año. Fecha del evento

- hora: formato hora-minutos-segundos. Hora del evento


Hitos de la mentoría

Análisis y visualización de datos

Teniendo en mente los objetivos planteados una buena forma de comenzar es analizar el dataset. Si bien éste de por sí no tiene campos numéricos, se pueden definir algunas variables de interés sobre el corpus y hacer un análisis estadístico para explorarlas mejor.

Se puede comenzar por los siguientes puntos y luego agregar otros de interés:

1- Frecuencia de las palabras usadas por los usuarios y además esto mismo considerando la variable tiempo.

2- Cantidad de eventos o conversaciones por fecha, con lo que se podría observar la evolución del asistente en el tiempo.

3- Cantidad de respuestas fallidas del bot por fecha.

4- Se correlaciona la evolución en el tiempo con la cantidad de respuestas fallidas?

5- Se puede decir algo sobre la frecuencia de uso del bot según la hora del día?

Del punto 2 al 5 se espera tener más información sobre los inicios del asistente y su proceso de entrenamiento continuo.

No olvidar responder a los puntos anteriores también con las visualizaciones apropiadas.

Tip: una visualización interesante para la frecuencia de palabras es la WordCloud.

Análisis exploratorio y curación de datos

En ésta entrega se comenzará a preparar el dataset para los prácticos siguientes.

1- Primero se busca hacer una limpieza general. Ésto es, eliminar las conversaciones vacías ya que no aportarán nada a futuros análisis.

2- Preparar un dataset para usar modelos supervisados. Éste debe incluir las frases de usuario, que son las que se van a usar para clasificar, más los labels.3- Preparar el dataset para el práctico de aprendizaje no supervisado. Éste está orientado a descubrir tópicos en las preguntas no respondidas por el asistente, por lo que en éste caso debe filtrar éste subconjunto de frases.

4- Guarde los datasets en un formato conveniente para procesar después.

Introducción al aprendizaje automático

Nos basamos en el dataset obtenido en el punto 2 del práctico anterior.

Para poder trabajar con texto es necesario primero conseguir una representación numérica del mismo. En éste punto también hay que determinar qué es lo que se va a querer analizar y en base a ello construir la matriz de n-samples x n-features. Según los objetivos planteados qué nos puede interesar más? Necesitaríamos una representación de las palabras o de las frases? O ambos enfoques estarían bien?

1- Investigue qué son las stop words y por qué es conveniente eliminarlas en muchos procesos de NLP.

2- Probar distintas representaciones. Investigue: sklearn tfidfvectorizer, sklearn countvectorizer

3- Probar distintas técnicas de reducción de dimensión. Investigue: sklearn TruncatedSVD

Aprendizaje Supervisado

Continuación del práctico anterior.

1- Con lo explorado en el práctico anterior puede elegir rápidamente una representación para las frases de los usuarios.

2- Probar distintos algoritmos de clasificación para categorizar las frases de los usuarios tomando como ground truth la columna Categorías.

3- Elegir las métricas adecuadas para comparar la performance de sus clasificadores y mostrar las matrices de confusión. Comentar resultados.

4- Ahora pruebe implementar un clasificador para detectar las frases con contenido de angustia y violencia.

Aprendizaje No Supervisado

En éste punto se busca encontrar aquellos temas de interés del público donde hay falta de información oficial.

Una primera aproximación es buscar aquellas preguntas de los usuarios que no fueron respondidas por el bot. Dentro de éste conjunto seguro estarán las que nos interesan, más otras no respondidas por falta de entrenamiento del asistente, sobre todo si también va a incluir la primer etapa de vida del mismo.

Se trabaja sobre el dataset obtenido en el punto 3 del segundo práctico.

1- Puede elegir una de las representaciones obtenidas en la segunda entrega y utilizarla nuevamente para éste conjunto de frases.

2- Reducir dimensiones de la matriz.

3- Elija un algoritmo para hacer clustering y obtenga conclusiones de los resultados.

4- Pruebe LDA (está implementado en sklearn) para descubrir temas y comente posibles temas.