Estamos felices de anunciar finalmente el lanzamiento de la interfaz para descargar una colección de tweets relacionados con la pandemia de Covid-19. Puedes elegir un rango de fecha, un área (México, Argentina, Colombia, Perú, Ecuador, España, área de Miami), y el idioma (sólo para el área de Miami, en inglés y español).
Los textos fueron procesados eliminando acentos, puntuación, mención de usuarios (@usuarios) para proteger la privacidad, y reemplazando todos los enlaces con “URL”. Los emojis son transliterados en un código UTF-8 y transformados en emojilabels. También decidimos unificar las diferentes ortografías de Covid-19 bajo una única forma, y todas las demás características, incluyendo los hashtags, son siempre conservadas.
¡Pero hay más! Hemos implementado una API simplificada para escoger su colección sin necesidad de acceder a la interfaz.
El punto de acceso a la API es: https://covid.dh.miami.edu/get/ y sirve para proporcionar los archivos .txt que quieras.
Hay tres variables principales para las consultas y cada una de ellas está separada por un “&”: idioma, geolocalización y fecha. Cada consulta comienza siempre con un “?” y se abrevia de la siguiente manera:
lang = es o en
geo = fl, ar, es, co, pe, ec, mx, all
fecha: mes-año-día, {mes}-año-mes, {año}-año, o un rango ‘{desde}año-mes-día-{hasta}año-mes-día’
Aquí hay algunos ejemplos:
Tweets en inglés, de Florida, del 24 de abril: https://covid.dh.miami.edu/get/?lang=en&geo=fl&date=2020-04-24
Tweets en español, de Florida, del 24 de abril: https://covid.dh.miami.edu/get/?lang=es&geo=fl&date=2020-04-24
Tweets en español, de Colombia, del 17 de mayo: https://covid.dh.miami.edu/get/?lang=es&geo=co&date=2020-05-17
Todos los tweets en español de Florida: https://covid.dh.miami.edu/get/?lang=es&geo=fl&date=all
Tweets de Argentina del 24 al 28 de abril: https://covid.dh.miami.edu/get/?lang=es&geo=ar&date=from-2020-04-24-to-2020-04-28
Todos los tweets de España del mes de abril: https://covid.dh.miami.edu/get/?lang=es&geo=es&date=month-2020-04
Por favor, ¡diviértete! ?
Recuerde: si el archivo aún no se ha generado en la base de datos, tardará algunos minutos en hacerlo.
En este post, presentaremos otra manera de explorar nuestro dataset de tweets sobre el Covid-19 con el objetivo de detectar temas o tópicos emergentes de interés para nuestro estudio de las narrativas sociales acerca de la pandemia. Para ello, realizamos un procesamiento de aprendizaje automático no supervisado con la ayuda de diferentes librerías para Python.
En este caso, trabajamos con material en español pero el mismo procesamiento puede aplicarse al corpus en inglés, con algunas diferencias en los parámetros de lengua.
“Preparar datos es 80% del trabajo de data science”
Ya es sabido (ver fuente) que cuando se trabaja con grandes corpus, la mayor parte del tiempo se dedica a limpiar y organizar los datos. ¡Y nuestro caso no es la excepción! Esta tarea es muy importante ya que no sólo reduce el volumen de los datos facilitando su procesamiento automático, sino que también tiene una enorme influencia en la calidad de los resultados.
En primer lugar, filtramos las stopwords y los emojis. Usamos listas genéricas disponibles en librerías standard (NLTK, emoji) que actualizamos continuamente con ítems específicos de nuestro corpus en base a los resultados obtenidos (‘retwitt’, ‘covid19’, etc.).
Otro paso importante del preprocesamiento es la detección de categorías (Part of Speech) y la lematización. Usamos Stanza (de Stanford NLP) porque da mejores resultados para tratar la morfología del español. En inglés, cuya morfología flexiva es más reducida, es posible usar Spacy con buenos resultados y un tiempo de procesamiento mucho menor.
Una vez que terminamos el preprocesamiento, podemos detectar automáticamente los tópicos predominantes en nuestro corpus con aprendizaje automático gracias a Gensim, una librería de Python para topic modelling. Realizamos un aprendizaje no surpervisado porque no tenemos manera de saber de antemano cuáles son los tópicos ni cuántos son. Entrenamos modelos con el algoritmo LDA para 3 a 30 tópicos.
Los gráficos de coherencia de los tópicos generados para todos los tweets en español del 25 de abril nos muestran que la conversación en nuestro corpus de coronavirus se encuentra muy concentrada, ya que la coherencia disminuye marcadamente a medida que el número de tópicos aumenta. Si se diera el caso contrario (mayor índice de coherencia al aumentar el número de tópicos) sería importante encontrar un compromiso entre los resultados de los scores de coherencia y un número de tópicos al alcance de la interpretación humana, ya que resulta difícil imaginar un análisis humano que maneje más de una docena de tópicos para el mismo corpus.
La visualización de los resultados en gráficos es de gran ayuda para facilitar el análisis. Una forma de graficar los tópicos es usando pyLDAvis, una librería para visualizar de manera interactiva las palabras que conforman los tópicos configurados por los modelos.
En el gráfico precedente (click aquí para abrir el gráfico en una pestaña nueva) en el que se grafican 7 tópicos para el 25 de abril para los tweets en español en todos los países/regiones de nuestra muestra (Argentina, Colombia, Ecuador, España, Florida, México, Perú), podemos observar lo que señalamos más arriba: es difícil para un humano encontrar el criterio por el cual fueron agrupadas ciertas palabras como parte del mismo tópico. A medida que aumenta el número de tópicos, éstos se vuelven menos interpretables aunque tengan alto score de coherencia.
Probablemente, esto se deba a la amplitud de nuestra muestra: más allá del covid19, los usuarios de Twitter de cada país deben abordar diferentes temáticas que poco tienen que ver. Comparemos los resultados para Argentina y Colombia, por ejemplo.
Coherencia de los modelos evaluada con c_npmi, c_uci y u_mass para Argentina, mejores resultados para 3 y 5 tópicosCoherencia de los modelos evaluada con c_npmi, c_uci y u_mass para Colombia, mejores resultados para 3 y 7 tópicos
Otro tipo de visualización útil para el topic modelling es el gráfico de Circle Pack, donde los colores representan los diferentes tópicos y el tamaño de las esferas la frecuencia de las palabras. Vamos a comparar el Circle Pack del 25 de abril de Argentina y Colombia para 3 tópicos porque ambos recibieron un score alto de coherencia para ese número.
Tópicos para tweets sobre el covid19 en Colombia el 25 de abril de 2020
En el gráfico de Colombia, vemos un tópico (color rojo teja) que relaciona la pandemia con la política, que incluye palabras como “gobierno”, “presidente”, “país”; otro tópico (color azul) que aborda cuestiones más vinculadas a lo sanitario, que incluye “vacuna”, “virus”, “prueba” y otro tópico (color verde) que parece más vinculado a las estadísticas diarias de números de casos, muertos y contagiados.
Tópicos para tweets sobre el covid19 en Argentina el 25 de abril de 2020
Para interpretar el Circle Pack de Argentina, es imprescindible conocer el tema de actualidad de ese día particular (ver noticia): un bebé de la ciudad de Santa Fé que fue nombrado Ciro Covid el 24 de abril. La pregunta “¿Quién va a ponerle de nombre a su bebé Ciro Covid?” que predominó en Twitter Argentina al día siguiente, no sólo está representada claramente en el tópico verde, sino que invadió también los tweets con partes diarios de números de nuevos casos y fallecidos (tópico color rojo teja). En una medida mucho menor, otro tema abordado ese día en ese país, fue la polémica sobre otorgar libertad condicional a presos como medida de prevención, representado por el color azul.
Una vez más, confirmamos que el aporte de una mirada humanista interesada en el conocimiento de los datos y su contextualización es de gran ayuda para asignar significados a los resultados del procesamiento automático.
Para más detalles sobre el procesamiento realizado para obtener los tópicos, descargue la notebook disponible en el repositorio de GitHub del proyecto.
El discurso público generado en Twitter es uno de los principales focos de atención en nuestro proyecto de investigación. Asimismo, la gran cantidad de datos de Twitter ha atraído el interés de investigadores de disciplinas y campos diversos para explorar diferentes aspectos de la sociedad. Esta entrada se concibe a modo de tutorial sobre cómo usar DocNow Hydrator con el fin de “hidratar” los tweets. Nuestro proyecto, como ya hemos indicado, está ofreciendo una serie de datasets o conjuntos de datos, que recogen tweets relacionados con la Covid-19 y que pueden ser descargados desde nuestro respositorio de GitHub.
Debido a los términos de desarrollo de Twitter y a la ética de investigación, la mayoría de los TweetSets (conjunto de datos de Twitter) que podemos extraer de la Interfaz de Programación de Aplicaciones (API) de Twitter así como de las bases de datos de terceros son tweets “deshidratados”. En otras palabras, en lugar de recopilar el contenido de los tweets, las geolocalizaciones, el tiempo, las imágenes y otra información sobre los tweets, lo que los investigadores obtienen es un archivo de texto plano que consiste en una lista de identificadores únicos de cada uno de los tweets (tweets IDs). Estos IDs permiten recuperar todos los metadatos del tweet, incluyendo el texto, y deben ser “hidratados” para recuperar los metadatos y convertirse en una fuente significativa de investigación. El gran tamaño de los metadatos relacionados con cada uno los tweets es una de las razones principales por las que los datasets ofrecen solo identificadores “deshidratados”. Así, un archivo que ofrece sólo una serie de números (IDs) es mucho más manejable que, por ejemplo, una hoja csv con miles de tweets con sus metadatos.
Una muestra de identificadores de tweet (IDs) deshidratados.
DocNow Hydrator es un programa de código abierto utilizado para hidratar las identificadores de los tweets, y puede descargarse desde Github. Antes de comenzar a utilizar Hydrator debemos vincular nuestra cuenta de Twitter en “Settings” (Configuración).
Página “Configuración” de Hydrator para vincular la cuenta de Twitter
La pestaña “Add” (añadir) de Hydrator se utiliza para subir archivos de tweet IDs
Si tu archivo ha sido procesado correctamente, Hydrator te mostrará la ruta del archivo y calculará el número total de tweet IDs detectados. En “Title” (título) puedes renombrar el archivo hidratado, mientras que el resto de las casillas pueden ser ignoradas. Luego haz clic en “Add dataset” (añadir conjunto de datos).
Después de subir un archivo de tweet IDs.
Haz clic en “Start” para hidratar las tweet IDs.
El nuevo conjunto de datos generado “COVID0401” está disponible en la pestaña “Datasets”.
Aparecerá una nueva pestaña que te solicitará ubicación y nombre para el archivo de tweets IDs hidratados. Hydrator generará un archivo .json por defecto. Convertir el documento en un archivo .csv lo hará más accesible para ser consultado por Excel u otros procesadores de archivos.
Guarda el documento hidratado en formato .csv y selecciona la ubicación para almacenarlo.
Hydrator comenzará el proceso de hidratación. El tiempo de ejecución dependerá de la cantidad de tweet IDs.
La barra de progreso se pondrá verde cuando se complete la hidratación.
El archivo .csv completo presentará toda la información relacionada a los tweet IDs originales.
Por motivos de privacidad, no mostramos el contenido específico del archivo hidratado
Con ello, los investigadores pueden analizar geolocalizaciones, imágenes, emojis, el discurso delos tweets, hashtags, información temporal, así como otra relacionada con metadatos. Si utilizas nuestro conjunto de datos, nos gustaría mucho que compartieras tu experiencia con nosotros. !Síguenos en nuestro blog y gracias por mantenerte al día con nuestro proyecto!