Dashboard interactivo para analizar el sentimiento de titulares periodísticos en tiempo real. Usa NewsAPI para obtener artículos y VADER (NLTK) para el análisis de sentimiento, todo controlable desde el sidebar sin tocar el código.
- Botón Analizar: el análisis solo corre cuando se presiona, evitando requests innecesarios
- 4 métricas rápidas: total de titulares, sentimiento medio, mediana y desviación estándar
- Panel principal con histograma de distribución, proporción por categoría y sentimiento por keyword
- Evolución diaria del sentimiento medio con áreas rellenas (activable)
- Tabla de titulares filtrable por categoría y keyword, con gradiente de color
- Descarga en CSV de los titulares filtrados
VADER es un modelo de análisis de sentimiento basado en reglas léxicas, diseñado específicamente para texto corto y lenguaje de redes sociales y titulares periodísticos. No requiere entrenamiento: funciona sobre un diccionario de palabras con puntajes de valencia (+/-) y reglas gramaticales.
Devuelve cuatro scores:
pos,neu,neg: proporción de tokens con cada valenciacompound: score agregado normalizado entre -1 (muy negativo) y +1 (muy positivo)
Este proyecto usa el compound como métrica principal.
| Rango | Categoría |
|---|---|
| compound > 0.05 | Positivo |
| -0.05 ≤ compound ≤ 0.05 | Neutro |
| compound < -0.05 | Negativo |
Los titulares con compound exactamente igual a 0 se excluyen del análisis (sin señal de sentimiento).
- VADER está optimizado para inglés. En otros idiomas los resultados son menos confiables.
- Analiza solo el titular, no el cuerpo del artículo (limitación del plan gratuito de NewsAPI).
- El plan gratuito de NewsAPI permite hasta 100 artículos por request y tiene un retraso de 24 horas.
sentiment-analyzer/
│
├── app.py # Dashboard Streamlit (punto de entrada)
├── config.py # API key, keywords, umbrales VADER, opciones UI
├── data_loader.py # Descarga de artículos desde NewsAPI
├── analysis.py # VADER, clasificación, métricas y agregaciones
├── charts.py # Panel principal y gráfico de evolución diaria
│
├── requirements.txt
└── README.md
pip install -r requirements.txtstreamlit run app.pyEl dashboard se abre en http://localhost:8501.
Registrate en https://newsapi.org para obtener una API Key gratuita. Podés ingresarla directamente en el campo del sidebar (campo tipo password) o reemplazar "TU_API_KEY_AQUI" en config.py.
| Control | Descripción |
|---|---|
| NewsAPI Key | Clave de acceso (se puede ingresar en el sidebar) |
| Título | Etiqueta para los gráficos |
| Keywords | Una por línea. Ej: Bitcoin, BTC, S&P 500 |
| Días de retroceso | Ventana temporal: 1, 3, 7, 14 o 30 días |
| Idioma | en, es, fr (VADER es más preciso en inglés) |
| Analizar | Dispara la descarga y el análisis |
- Hutto, C. & Gilbert, E. (2014). VADER: A Parsimonious Rule-based Model for Sentiment Analysis of Social Media Text. ICWSM.
- NLTK VADER Documentation
- NewsAPI Documentation
MIT License. Libre para usar, modificar y distribuir.
