Análisis de datos

Metodología

Para llevar acabo esta investigación, Data Crítica recolectó datos utilizando la API Académica de Twitter y la herramienta Minet. El periodo de los tweets recolectados abarca desde la creación de cada uno de los perfiles seleccionados hasta el 21 de marzo de 2023. Los textos de los tweets fueron clasificados programáticamente utilizando modelado de tópicos con la librería de Python BERTopic para generar clusters con temas fácilmente interpretables.

Posteriormente se entrenó el modelo con el texto de los tweets sin procesar y preprocesados para explorar lo resultados. Sin embargo, se interpretaron mejor los tópicos utilizando texto preprocesado, ya que las palabras catalogadas como stop-words causaron mucho ruido en los tópicos entrenados con el texto original. Asimismo, se utilizó un modelo multilingual debido a que los datos se encuentran en español y portugués.

Después de adaptar el modelo a los datos, se extrajeron los tópicos generados y se visualizaron de una manera muy similar al metodo LDavis. Para las cuentas en las que se generaron 50 o menos tópicos, se mantuvieron tal cual. No obstante, para las cuentas donde se obtuvieron más de 50, se realizó una reducción de tópicos al 20% del total identificados. Este procedimiento se aplicó debido a que es difícil predecir el número de tópicos antes de haber entrenado el modelo, de ahí que se pueda decidir un número de temas después de saber cuántos se crean en un principio. Además, el propósito es poder identificar aquellos tópicos relacionados con temas de género, por ello es más asequible reducir esta cantidad para poder categorizarlos.

Para visualizar los términos asociados a cada tópico, se crearon gráficos de barras con las puntuaciones c-TF-IDF de cada tópico. Posteriormente se analizó tópico por tópico y se seleccionaron aquellos que hablan sobre aborto, feminismo, género y personas LGBTIQ+. Luego se hizo un lista de palabras con los términos asociados con esos tópicos y se filtraron los tweets de cada cuenta que contenían alguna de esas palabras, esto con el objetivo de hacer una aproximación de la cantidad de tweets de cada cuenta que tocan estos temas. Finalmente se calculó el porcentaje de tweets filtrados con temática de género entre el total de tweets para cada cuenta.

Para más detalles sobre los tópicos generados y su selección, revisar el apartado correspondiente para cada cuenta.

Instalación

Lista de librerías requeridas para el proyecto:

pip install minet
pip install pandas
pip install numpy
pip install plotly
pip install emoji
pip install spacy
pip install tweet-preprocessor
pip install bertopic
python -m spacy download es_core_news_sm
python -m spacy download pt_core_news_sm

Documentación

Lista de documentación para las librerías requeridas:

Selección de perfiles

Se seleccionaron 3 cuentas por cada país incluyendo organizaciones provida, así como figuras políticas y religiosas de Brasil, Colombia y Ecuador.

País Nombre Usuario
Brasil Nikolas Ferreira nikolas_dm
Brasil Pastor Silas Malafaia PastorMalafaia
Brasil Brasil Sem Aborto brasilsemaborto
Colombia Misión Paz misionpaz
Colombia María Fernanda Cabal MariaFdaCabal
Colombia Unidos por la Vida UnidosxlaVidaCo
Ecuador Mamela Fiallo Flor MamelaFialloFlo
Ecuador Esteban Torres Cobo etorrescobo
Ecuador Familia Ecuador _FamiliaEcuador

Recolección de datos

Se recolectaron los tweets de cada usuario usando la librería minet como interfaz de línea de comandos (CLI)

minet twitter scrape tweets 'from:username' > username.csv

Preprocesamiento

Se aplicaron varias técnicas de preprocesamiento de texto en los datos con las librerías preprocessor y spacy:

  • Lower: Todas las palabras se convirtieron a minúsculas (p.e: Twitter → twitter)
  • Stop words: Se eliminaron las palabras que son muy comunes pero que no aportan significado al texto. Se utilizaron las que vienen por defecto para español y portugués en spacy.
  • Demojize: Cambia los emojis por una representación textual (p.e: relaxed → :smiling_face:)
  • URLs: Sustituye las URLs por $URL$ (p.e: https://github.com/ → $URL$)
  • Mentions: Sustituye las menciones por $MENTION$ (p.e: @twitter → $MENTION$)
  • Hashtags: Sustituye los hashtags por $HASHTAG$ (p.e: #twitter → $HASHTAG$)
  • Números: Sustituye los números por $NUMBER$ (p.e: 4 → $NUMBER$)

Modelado de tópicos

Para el modelado de tópicos se utilizó la librería bertopic que utiliza técnicas de embeddings con Transformers y c-TF-IDF. Por defecto, los pasos principales para el modelado de temas con BERTopic son Sentence Transformers, UMAP, HDBSCAN y c-TF-IDF ejecutados en secuencia.

Limitaciones

Una de las limitaciones de esta metodología es que bertopic asigna cada documento a un solo cluster y, por tanto, a un solo tópico, lo cual podría no capturar la complejidad del texto.

Otro aspecto a tomar en cuenta es que el algoritmo es susceptible a la elección de sus parámetros y el preprocesamiento de los datos, lo cual repercute directamente en los resultados. Debido a esto, se han expuesto todos los procedimientos aplicados.

Por otro lado, la selección de tópicos está sujeta a interpretaciones, de ahí que se hayan establecido términos a partir de los cuales catalogarlos. A pesar de la selección, estos tópicos pueden contener palabras que no estén asociadas a temas de género o que dependan del contexto, por ello solo se trata de una estimación.

Por último, un tema a considerar es que este tipo de modelado de tópicos con deep learning, requiere considerables recursos computacionales en caso de que se quiera replicar este anális.


Jupyter Notebooks creados por Fernanda Aguirre