Skip to content

fedepicado/ClickBait-News

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🕵️ Detector de Clickbait en Noticias

Proyecto para:

  • Descargar noticias desde una API pública de noticias (por ejemplo, NewsAPI).
  • Analizar el sentimiento del título y del contenido de cada noticia usando un modelo local vía Ollama (llama3.2).
  • Detectar posibles casos de clickbait comparando ambos sentimientos.
  • Visualizar los resultados en una interfaz web hecha con Streamlit.

🔧 Requisitos previos

  • Python 3.10+ (recomendado 3.11 o 3.12).

  • Ollama instalado en tu máquina (para usar el modelo llama3.2):

    • Descargar desde: https://ollama.com

    • Luego, en una terminal:

      ollama pull llama3.2
  • Una API key de NewsAPI (o similar):

    • Regístrate en https://newsapi.org
    • Obtén tu API Key.

📁 Estructura básica del proyecto

  • news_api_script.py: script para descargar noticias desde la API y guardarlas en CSV.
  • data/noticias.csv: archivo generado con las noticias descargadas.
  • sentiment_analyzer.py: clase SentimentAnalyzer que usa Ollama (modelo llama3.2) para clasificar el sentimiento.
  • app.py: aplicación Streamlit que:
    • Carga un CSV de noticias.
    • Analiza sentimiento de título y contenido.
    • Detecta posibles casos de clickbait.
    • Muestra resultados y métricas.
  • requirements.txt: dependencias del proyecto.

🧱 Crear y preparar el entorno

Desde la carpeta del proyecto:

python -m venv venv
venv\Scripts\activate    # En Windows
# o en macOS / Linux:
# source venv/bin/activate

pip install -r requirements.txt

🔐 Configurar la API key y variables de entorno

  1. En la raíz del proyecto, crea un archivo llamado .env.
  2. Dentro de .env, agrega tu API key de noticias:
NEWS_API_KEY=tu_api_key_de_newsapi
  1. (Opcional) Si Ollama no corre en http://localhost:11434, puedes definir:
OLLAMA_BASE_URL=http://tu_host_ollama:11434

El proyecto usa python-dotenv para cargar estas variables automáticamente.


🌐 Descargar noticias con news_api_script.py

El script news_api_script.py:

  • Carga la API key desde .env.
  • Llama a la API de noticias (ejemplo: busca noticias sobre el Mundial).
  • Convierte la respuesta en un DataFrame de pandas.
  • Guarda las noticias en data/noticias.csv.

Ejecutar:

python news_api_script.py

Dentro del script puedes ajustar:

  • query (por ejemplo "Mundial", "economía Argentina", "tecnología", etc.).
  • page_size (cantidad máxima de noticias a descargar).
  • language (por ejemplo "es" para español).

🧠 Analizador de sentimientos (Ollama + llama3.2)

El archivo sentiment_analyzer.py define la clase:

  • SentimentAnalyzer:
    • Usa langchain-ollama para conectarse a Ollama.
    • Modelo utilizado: llama3.2 (modelo pequeño, ideal para correr localmente).
    • Se le pasa un prompt con el título (o contenido) de la noticia.
    • Devuelve una de estas etiquetas:
      • POSITIVE
      • NEUTRAL
      • NEGATIVE

Antes de usarlo, asegurate de que Ollama esté corriendo y que ya descargaste el modelo:

ollama pull llama3.2

📊 App Streamlit: Detector de Clickbait

La app principal está en app.py.

Para ejecutarla:

streamlit run app.py

¿Qué hace la app?

  1. Te permite subir un archivo CSV (por ejemplo, data/noticias.csv).
  2. Muestra cuántas filas/noticias hay.
  3. Te deja elegir:
    • Columna de TÍTULO (por defecto title si existe).
    • Columna de CONTENIDO (por defecto content si existe).
  4. Te permite elegir cuántas noticias analizar:
    • Primeros 10 títulos.
    • Primeros 50 títulos.
    • Dataset completo.
  5. Para cada noticia:
    • Analiza el sentimiento del título.
    • Analiza el sentimiento del contenido.
    • Calcula si la combinación se considera clickbait.
  6. Muestra:
    • Número de casos coherentes (no clickbait).
    • Número de casos clickbait.
    • Total analizado.
    • Una tabla con:
      • Título
      • Contenido
      • Sentimiento del título
      • Sentimiento del contenido
      • Flag is_clickbait.

🚀 Flujo recomendado de uso

  1. Crear entorno y dependencias

    • Crear venv y ejecutar: pip install -r requirements.txt.
  2. Configurar variables de entorno

    • Crear .env con:

      NEWS_API_KEY=tu_api_key_de_newsapi
      
    • (Opcional) Configurar OLLAMA_BASE_URL si usas otra URL.

  3. Descargar noticias

    • Ejecutar:

      python news_api_script.py
    • Esto generará data/noticias.csv.

  4. Ejecutar el detector de clickbait

    • Lanzar la app:

      streamlit run app.py
    • Subir el CSV de noticias.

    • Elegir columnas de título y contenido.

    • Elegir si quieres analizar 10, 50 o todas las noticias.

    • Revisar cuántos casos se marcan como clickbait según la definición anterior.


🧩 Notas y posibles mejoras

  • Probar otros modelos de Ollama (más grandes o especializados) si tu hardware lo permite.
  • Ajustar la definición de clickbait o agregar más categorías (por ejemplo, grado de exageración).
  • Guardar resultados enriquecidos (sentimientos, flag de clickbait).

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages