Este proyecto es una herramienta integral para recolectar, analizar y visualizar tweets en tiempo real. Utiliza tecnologías avanzadas como twikit para scraping de Twitter y modelos preentrenados de transformers para análisis de sentimientos. La visualización de los datos se realiza dinámicamente a través de gráficos claros y atractivos. Este enfoque permite evaluar opiniones públicas sobre temas específicos con un flujo constante y eficiente.
El API oficial de Twitter tiene las siguientes desventajas significativas:
-
Restricción en el número de resultados:
- Permite un máximo de 100 tweets por solicitud, lo cual no es ideal para análisis masivos o en tiempo real.
- Para obtener más datos, es necesario escalar a versiones pagas que incrementan costos de forma significativa.
-
Datos incompletos:
- Los tweets obtenidos suelen estar truncados si contienen enlaces largos, menciones o contenido multimedia, lo que limita el alcance y precisión del análisis de sentimientos.
-
Costos elevados:
- Las versiones del API con acceso extendido tienen precios altos y aún mantienen restricciones de uso en cuanto a la frecuencia de solicitudes y el volumen de datos.
-
Acceso sin restricciones:
twikitutiliza técnicas de scraping directo desde la interfaz web de Twitter, permitiendo obtener una mayor cantidad de datos sin las limitaciones impuestas por el API.
-
Datos completos y enriquecidos:
- Los tweets incluyen texto completo, metadatos relevantes y datos adicionales que pueden ser útiles para análisis más detallados.
-
Eficiencia para experimentos en tiempo real:
- Permite recolectar datos continuamente con mayor frecuencia, ideal para casos de uso dinámicos como eventos en curso o análisis de tendencias.
-
Recolección de tweets en tiempo real:
- Se utiliza
twikitpara buscar y recolectar tweets relacionados con palabras clave predefinidas. - Los datos recolectados incluyen texto del tweet, usuario, métricas de interacción (retweets, favoritos) y marcas temporales.
- Estos datos se almacenan en un archivo CSV (
tweets_noboa.csv), asegurando persistencia y fácil reutilización.
- Se utiliza
-
Análisis de sentimientos:
- Utiliza el modelo preentrenado
nlptown/bert-base-multilingual-uncased-sentimentde la libreríatransformerspara clasificar los tweets en:- Positivos
- Negativos
- Neutrales
- Este modelo es un ejemplo de transfer learning, ajustado para múltiples idiomas y específicamente diseñado para tareas de análisis de sentimientos.
- Los resultados del análisis se almacenan en otro archivo CSV (
tweets_sentimiento.csv), junto con los datos originales de los tweets.
- Preentrenamiento: Los modelos en
transformerscomo BERT están preentrenados en grandes cantidades de texto, lo que los hace altamente efectivos para tareas de NLP. - Uso de GPU: Si se dispone de una GPU, el análisis se acelera significativamente. En caso contrario, el modelo utiliza la CPU.
- Límite de caracteres: Debido a la arquitectura de BERT, los textos deben limitarse a 512 caracteres. El código se encarga de realizar este ajuste automáticamente.
- Utiliza el modelo preentrenado
-
Visualización dinámica:
- Se utiliza
matplotlibpara generar gráficos en tiempo real. Incluye:- Un gráfico de barras para la distribución de sentimientos (positivo, negativo y neutral).
- Un gráfico tipo gauge que muestra el índice de popularidad, calculado como la diferencia proporcional entre tweets positivos y negativos.
- Se utiliza
Para autenticar las solicitudes, es necesario exportar las cookies de sesión desde Twitter. Utiliza la extensión EditThisCookie para este propósito.
- Abre la página de Twitter.
- Exporta las cookies y guárdalas en un archivo llamado
cookies_exported.json.
El script 00_cookies.py transforma las cookies exportadas al formato requerido por twikit. Para ejecutar el script, usa el siguiente comando:
python 00_cookies.pyEl resultado será un archivo cookies.json, que se usará para autenticar las solicitudes.
Ejecuta el script principal app.py para iniciar la recolección y análisis de tweets:
python app.py- Recolecta tweets en tiempo real con base en las palabras clave.
- Almacena los resultados en
tweets_noboa.csv. - Aplica análisis de sentimientos, cuyos resultados se almacenan en
tweets_sentimiento.csv. - Muestra gráficos dinámicos con los datos procesados.
El programa genera:
- Gráfica de barras: Representa la distribución de sentimientos (positivo, negativo y neutral).
- Gauge: Muestra el índice de popularidad, que varía entre -1 (predominio negativo) y 1 (predominio positivo).
El proyecto utiliza las siguientes librerías:
pandas: Para manipulación de datos.matplotlib: Para visualización gráfica.torch: Backend para modelos detransformers.transformers: Librería de modelos preentrenados para tareas de NLP.twikit: Para scraping de datos de Twitter.
Instala las dependencias con:
pip install -r requirements.txtCrea un archivo config.ini con tus credenciales de Twitter. Este archivo será utilizado para autenticar las solicitudes:
[X]
username = "TU_USERNAME"
email = "TU_EMAIL"
password = "TU_PASSWORD"📂 TWEETSSENTIMENT
├── docs/
│ ├── 00_cookies_edit.png # Imagen de exportar cookies
│ ├── 01_cookies_transformation.png # Imagen de transformación de cookies
│ ├── 02_ejecucion_consola_real_time.png # Consola de ejecución
│ ├── 03_grafica_realtime.png # Gráfica dinámica de sentimientos
│ ├── 05_x_portal.png # Portal de Twikit
│ └── 06_prices_restrictions.png # Precios y restricciones del API de Twitter
├── app.py # Script principal
├── 00_cookies.py # Conversión de cookies
├── config.ini # Credenciales del usuario
├── requirements.txt # Dependencias del proyecto
├── tweets_noboa.csv # Tweets recolectados
├── tweets_sentimiento.csv # Tweets analizados
-
Límites de Scraping:
- Aunque
twikitevita restricciones severas, realiza solicitudes de manera escalonada para prevenir bloqueos.
- Aunque
-
Rendimiento:
- Se recomienda usar una GPU para acelerar el análisis de sentimientos con
transformers.
- Se recomienda usar una GPU para acelerar el análisis de sentimientos con
-
Visualización en tiempo real:
- La visualización dinámica asegura que los nuevos datos sean incorporados en cada actualización.
-
Persistencia de Datos:
- Los tweets procesados se guardan para evitar duplicados en futuras ejecuciones.







