Categories
Herramientas Limpieza de datos Modelización Visualización

Los temas de la crisis: topic modeling sobre la COVID-19

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.

Coherencia de los modelos evaluada con c_npmi, c_uci y u_mass para todos los tweets en español del 25 de abril

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ópicos
Coherencia 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.

Categories
Limpieza de datos Métodos

¿Cómo hidratar un conjunto de Tweets?

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

Una vez que Hydrator está configurado, puedes subir tu archivo de identificadores de tweets. En nuestro caso, utilizamos nuestro conjunto de datos sobre las Narrativas Digitales de la Covid-19, que actualizamos diariamente.

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!

Categories
Datos Recolección

Un conjunto de datos de Twitter para la narrativa digital

A finales de abril empezamos a familiarizarnos con la API de Twitter y a preguntarnos cómo capturar las conversaciones públicas que están ocurriendo en esta red social.

Entendimos rápidamente que necesitábamos un plan y una metodología para organizar nuestro corpus, conseguir nuestros objetivos, y dividir las diferentes tareas entre los miembros del equipo.

Los conjuntos de datos en inglés son numerosos (véase la publicación “Minería de Twitter y datasets sobre la Covid-19” del 23 de abril de 2020). Para empezar con un corpus más definido, decidimos centrarnos en conjuntos de datos en español, en general y por áreas. También quisimos dar un tratamiento especial al área del sur de Florida y abordarla desde una perspectiva bilingüe, debido a su diversidad lingüística, especialmente en inglés y español. Con esto en mente, una parte del equipo analiza las conversaciones en inglés y español, centrándose en el área del sur de Florida y Miami. Mientras que el equipo de CONICET se encarga de explorar los datos en español, es decir, de Argentina.

Para ampliar nuestro conjunto de datos, hemos decidido cosechar también todos los tweets en español, y crear conjuntos de datos específicos para otras partes de América Latina (México, Colombia, Perú, Ecuador), y España. Para una mejor organización de nuestro corpus, creamos una base de datos relacional que colecta la información relacionada con tweets específicos e ingiere automáticamente cientos de miles de tweets al día.

Tenemos diferentes queries o búsquedas en marcha, que corresponden a los conjuntos de datos en nuestra carpeta ‘twitter-corpus‘ en GitHub. En resumen, hay tres tipos principales de búsquedas:

  1. Búsqueda general para español cosechando todos los tweets que contienen los siguientes hashtags y palabras clave: covidcoronaviruspandemiacuarentenaconfinamientoquedateencasadesescaladadistanciamiento social
  2. Búsqueda específica para inglés en Miami y el sur de Florida. Los hashtags y las palabras clave cosechadas son: covidcoronaviruspandemicquarantinestayathomeoutbreaklockdownsocialdistancing.
  3. Búsquedas específicas con las mismas palabras clave y hashtags para español en Argentina, México, Colombia, Perú, Ecuador, España, utilizando la geolocalización del tweet cuando sea posible y/o la información del usuario

Las carpetas se organizan por día (YEAR-MONTH-DAY). En cada una hay 9 archivos de texto plano denominados “dhcovid”, seguidos de fecha (YEAR-MONTH-DAY), idioma (“en” para inglés y “es” para español), y abreviatura de región (“fl”, “ar”, “mx”, “co”, “pe”, “ec”, “es”):

  1. dhcovid_YEAR-MONTH-DAY_es_fl.txt: Conjunto de datos que contiene tweets geolocalizados en el sur de Florida. La geolocalización es rastreada por las coordenadas del tweet, por el lugar o por la información del usuario.
  2. dhcovid_YEAR-MONTH-DAY_en_fl.txt: Este archivo contiene solo tweets en inglés que refieren al área de Miami y el sur de Florida. Esta elección se debe a la existencia de múltiples proyectos que recogen datos en inglés, nuestro proyecto está particularmente interesado en esta área debido a nuestra institución de origen (Universidad de Miami) y porque pretendemos estudiar las conversaciones desde un punto de vista bilingüe (EN/ES).
  3. dhcovid_YEAR-MONTH-DAY_es_ar.txt: Conjunto de datos que contienen tweets geolocalizados en Argentina (por georreferencia, por lugar o por usuario).
  4. dhcovid_YEAR-MONTH-DAY_es_mx.txt: Conjunto de datos que contienen tweets geolocalizados en México (por georreferencia, por lugar o por usuario).
  5. dhcovid_YEAR-MONTH-DAY_es_co.txt: Conjunto de datos que contienen tweets geolocalizados en Colombia(por georreferencia, por lugar o por usuario).
  6. dhcovid_YEAR-MONTH-DAY_es_pe.txt: Conjunto de datos que contienen tweets geolocalizados en Perú (por georreferencia, por lugar o por usuario).
  7. dhcovid_YEAR-MONTH-DAY_es_ec.txt: Conjunto de datos que contienen tweets geolocalizados en Ecuador (por georreferencia, por lugar o por usuario).
  8. dhcovid_YEAR-MONTH-DAY_es_es.txt: Conjunto de datos que contienen tweets geolocalizados en España (por georreferencia, por lugar o por usuario).
  9. dhcovid_YEAR-MONTH-DAY_es.txt Este conjunto de datos contiene todos los tweets en español, independientemente de su geolocalización.

Desde el 23 de mayo, tenemos un total de:

  1. Español del sur de Florida (es_fl): 6,440 tweets
  2. Inglés del sur de Florida (en_fl): 22,618 tweets
  3. Español de Argentina (es_ar): 64,398 tweets
  4. Español de Mexico (es_mx): 402,804 tweets
  5. Español de Colombia (es_co): 164,613 tweets
  6. Español de Peru (es_pe): 55,008 tweets
  7. Español de Ecuador (es_ec): 49,374 tweets
  8. Español de España (es_es): 188,503 tweets
  9. Español (es): 2,311,482 tweets.

No incluimos los retweets, solo los tweets originales.

El corpus consiste en una lista de Tweet IDs. Una forma de obtener el tweet original es utilizando “hidratador de Twitter”, que toma el Id y descarga todos los metadatos en un archivo CSV.

Figura 1. Captura de pantalla de una lista de tweets IDs.

Empezamos a recoger nuestros conjuntos de datos el 24 de abril de 2020. Para fechas anteriores (enero – 24 de abril), esperamos utilizar el conjunto de datos del PanaceaLab, debido a que es uno de los pocos que recoge datos en todos los idiomas, y esperamos conseguirlo en los próximos meses.

word cloud

Hemos publicado una primera versión de nuestro conjunto de datos en Zenodo: Susanna Allés Torrent, Gimena del Rio Riande, Nidia Hernández, Romina De León, Jerry Bonnell y Dieyun Song. (2020). Digital Narratives of Covid-19: a Twitter Dataset (Version 1.0) [Data set]. Zenodo. http://doi.org/10.5281/zenodo.3824950

Traducción: Romina De León

Categories
Datos Recolección

Minería de Twitter y datasets sobre la Covid-19

El único tema en estos días: el coronavirus, Covid-19, la pandemia, SARS, la crisis, la enfermedad, el enemigo, la supervivencia… Todos estamos bajo la misma situación global y preocupados por los impactos y consecuencias que este evento está teniendo y tendrá en nuestras vidas.

Asimismo, esta pandemia puede ser abordada desde infinitas perspectivas, por ello, creemos que las Humanidades Digitales pueden contribuir. Nuestro principal interés se centra en las narrativas digitales que emergen de este brote. ¿Cuáles son las narrativas entorno a la pandemia? Ciertamente, no son únicas ni monolíticas.

El distanciamiento social pone en primera línea a las redes sociales, algunas de ellas están abiertas a la minería y a la recuperación de lo que la gente está diciendo. El mejor ejemplo de ello es Twitter, que posee una API para recuperar tweets, que contienen los textos e interacciones sociales. Numerosos investigadores y proyectos ya están minando datos sobre la Covid-19 y proporcionando conjuntos de datos de tweets para ser descargados y explorados. Aquí tienes una lista de estos conjuntos de datos:

  • Covid-19 Twitter chatter dataset for scientific use” (Panacea Lab) es un conjunto de datos en línea, almacenado en GitHub y distribuido con un DOI de Zenodo (la versión numérica se actualiza casi cada semana). Recogen datos desde el 27 de enero y en todos los idiomas, pero –como explican– los de mayor prevalencia son: inglés, español y francés. Presentan los conjuntos de datos en dos formatos diferentes: uno que contiene todas las menciones y los retweets, mientras que el otro es una versión limpia que solo contiene los tweets. También realizan tareas de PLN, proporcionando las 1.000 palabras más frecuentes y las principales ocurrencias. Complementan su conjunto de datos construyendo estadísticas generales. Este corpus –tal como lo establecen los Términos de servicio de Twitter– consiste en una lista de identificadores de tweets (Tweet IDs), que necesitan ser hidratados. Puede consultar también las publicaciones electrónicas publicadas en arXiv “A large-scale COVID-19 Twitter chatter dataset for open scientific research – an international collaboration”.
  • COVID-19-TweetIDs (E.Chen, K. Lerman y E. Ferrara) es otra colección en curso de tweets asociados con la pandemia. Comenzaron a reunir datos el 28 de enero. Ellos además de recolectar hashtags, utilizan la API de streaming de Twitter para rastrear cuentas de usuario específicas y palabras clave concretas. Han estructurado su repositorio GitHub por mes, día y hora. Cada carpeta de mes contiene un archivo .txt por día y hora con los Tweet IDs, estos deben ser hidratados. Consulta las publicaciones de arXiv “COVID-19: The First Public Coronavirus Twitter Dataset”.
  • Coronavirus Tweet Ids” (D. Kerchner y L. Wrubel) contiene los Tweet IDs de 155.206.805 Tweets relacionados con el Coronavirus. Su fecha de inicio fue el 3 de marzo de 2020 y publican una nueva versión cada dos semanas aproximadamente. Para construir las colecciones utilizan el Social Feed Manager.
  • Corona Virus (COVID-19) Tweets Dataset” (R. Lamsal) provee un conjunto de datos en CSV con losTweet IDs. Esta iniciativa monitorea en tiempo real la actividad en Twitter siguiendo solo los tweets en inglés “en”, y las palabras “corona”, “covid”, “covid-19”, “coronavirus” y las variantes de “sars-cov-2”. Simultáneamente, tienen sentiment.live, un sitio que visualiza el análisis de los sentimientos del feed de Twitter.

Hay muchos otros catálogos, proyectos y repositorios que reúnen colecciones de Twitter. Recomendamos también que eches un vistazo a:

y que visites el impactante Covid-19 Dashboard, que permite rastrear el número de casos en todo el mundo.

En este auge de datos, nuestro proyecto Narrativas digitales de la Covid-19 también busca crear un conjunto de datos de Twitter concebido bajo estos criterios:

  • Por lengua: inglés, español
  • Por región: Sur de Florida, Miami
  • Por fecha: 27 de enero –
  • Por hashtags (covid, covid-19, coronavirus, etc.)

Somos algo novatos en el uso de estas técnicas, así que tened paciencia mientras publicamos tutoriales sobre cómo lo estamos haciendo, y ¡únete a nosotros!

Traducción: Romina De León

Categories
Humanidades Digitales Organización Preservación

Recursos del proyecto

Te interesa saber más o colaborar con nuestro proyecto?

Nuestra plataforma de divulgación será este sitio web creado con WordPress y alojado en la University of Miami donde publicaremos recursos sobre la Covid-19 desde una perspectiva humanística y lingüística y documentaremos nuestro trabajo.

Todos los datos del proyecto se almacenan en nuestro repositorio en Github, proporcionando una lista de datos relacionados con la pandemia, y un corpus bilingüe de Twitter en inglés y español, especialmente enfocado en el área del sur de Florida y Miami. También usamos GitHub para documentar el desarrollo del proyecto y escribimos entradas en nuestro blog sobre el trabajo realizado.

Asimismo, tenemos una biblioteca en Zotero, donde puede unirse y agregar cualquier lectura que considere interesante.

Encuentras nuestros tweets bajo el hashtag #DHCOVID

Categories
Investigación Lenguaje Proyectos

Hola Mundo

Las Humanidades Digitales pueden ayudarnos a comprender los datos desde una perspectiva humanista, y parece particularmente acertado en estos momentos, en el que los datos sobre la Covid-19 están en todas partes y se están generando en masa. Los datos generados al interno de un contexto social, humanístico y humano necesitan ser analizados críticamente. Narrativas Digitales de Covid-19 (DHCOVID) explorará durante un año (mayo de 2020-2021) las narrativas existentes detrás de los datos sobre la pandemia del coronavirus en la literatura académica y las redes sociales utilizando enfoques cuantitativos y cualitativos de las HD.

DHCOVID es un proyecto bilingüe, a partir de datos en inglés y español, que reúne a académicos de la Universidad de Miami (EE. UU.) y del CONICET (Argentina). El proyecto, además, está abierto a todo tipo de colaboraciones y a investigadores colaborativas en el ámbito de las Humanidades Digitales o de cualquier otra disciplina interesada en los datos de la Covid-19.

El proyecto ha sido financiado por el College of Arts and Sciences de la Universidad de Miami.

Actualizaremos este sitio con posts sobre nuestras investigaciones y también difundiremos las noticias en Twitter (#DHCOVID). ¡Gracias por participar en el proyecto!