Este proyecto realiza un análisis de clustering de noticias del periódico El Tiempo de Colombia. El proceso incluye la obtención de URLs de noticias, extracción del texto completo, generación de resúmenes (con uso de LLM), creación de embeddings de los resúmenes y finalmente la aplicación de técnicas de modelado y clustering.
- Python 3.10.12
- Ollama (https://ollama.com/)
- Se sugiere que en Ollama descarge los siguientes modelos para realizar los resumenes (ambos en version instruct):
- Una opcion de modelo de embeddings es: nomic-embed-text:v1.5
El proyecto utiliza las bibliotecas de Python en requirements.txt
Clone este repositorio:
git clone https://github.com/lacamposm/news-clustering.git
cd news-clustering
Instale las dependencias:
pip install -r requirements.txt
Descargue, instale y ejecute Ollama siguiendo las instrucciones en https://ollama.com/.
El proyecto consta de tres scripts principales:
utils/scraper.py
: Contiene funciones para obtener URLs de noticias y extraer su contenido.utils/llms.py
: Incluye funciones para generar resúmenes y embeddings de las noticias.clustering.py
: (En desarrollo) Realiza el análisis de clustering utilizando técnicas como t-SNE, K-means y HDBSCAN.main_news.py
: Script principal que orquesta el proceso completo de obtención de datos, generación de resúmenes y embeddings.
Y un paquete:
model
: (En desarrollo) Contiene primeras version de modelado con clustering.
python main_news.py
Este script realizará los siguientes pasos:
- Obtendrá las noticias de El Tiempo.
- Generará resúmenes de las noticias.
- Creará embeddings de los resúmenes utilizando varios modelos.
- Realizara reduccion de dimensionalidad con PCA y UMAP. Ademas de clustres con k-means y visualizacion con t-SNE y UMAP de los primeros resultados.
- Todos los archivos de datos se generan desde cero durante la ejecución del proyecto.
- Asegúrese de tener suficiente espacio en disco y recursos computacionales, ya que el procesamiento de grandes cantidades de noticias puede ser intensivo.
Las contribuciones a este proyecto son bienvenidas. Por favor, abra un issue para discutir cambios mayores antes de enviar un pull request.
Este proyecto es de código abierto y está disponible para su uso y reproduccion.