Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🧠 Analizador de Sentimiento de Noticias

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.


🖥️ ¿Qué incluye el dashboard?

  • 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

image alt

🧠 Teoría

VADER (Valence Aware Dictionary and sEntiment Reasoner)

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 valencia
  • compound: score agregado normalizado entre -1 (muy negativo) y +1 (muy positivo)

Este proyecto usa el compound como métrica principal.

Umbrales de clasificación

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).

Limitaciones

  • 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.

🗂️ Estructura del proyecto

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

⚙️ Instalación

pip install -r requirements.txt

▶️ Uso

streamlit run app.py

El dashboard se abre en http://localhost:8501.

Antes de correr: configurar la API Key

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.

Controles del sidebar

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

📚 Referencias


📝 Licencia

MIT License. Libre para usar, modificar y distribuir.

About

Recopila las últimas noticias sobre temas a elección y realiza un dashboard interpretando el sentimiento de dichas noticias. Es muy útil para analizar la reacción del precio de un activo ante las últimas tendencias.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages