/classification_news

Clasificación de noticias de El Comercio entre política, mundo, economía, deporte y tecnología.

Primary LanguagePython

Clasificación de noticias de El Comercio

El Comercio el más periódico más antiguo e importante del Perú. Las principales categorías de las noticias son las siguientes:

  • Política
  • Mundo
  • Economía
  • Deportes
  • Tecnología

El objetivo de este proyecto es elaborar una red neuronal recurrente (RNN) capaz de clasificar las categorías basado en el contenido.

Pasos

El proceso se divide en los siguientes pasos:

  1. Extraer el contenido de cada una de la noticias, mediante web scraping.
  2. Crear un corpus, en el que se categoriza todas las noticias según temática.
  3. Crea una red neuronal recurrente, que interprete el contexto de las noticias.

Cada noticia fue almacenada en las siguientes rutas:

Las fechas consideradas en la extracción son de 01/01/2023 a 26/09/2023.

Se obtuvo 29'837 noticias, distribuidas en las siguientes categorías:

Categorías Frecuencia %
Política 4'085 13.7
Mundo 9'390 31.5
Economía 4'322 14.5
Deporte 7'466 25.0
Tech 4'574 15.3

Configuración de la GPU

Dada la gran cantidad de noticias, es necesario configurar tensorflow para que permita estimaciones de redes neuronales con la GPU, lo cual acelerará en gran medida los tiempos por época (epoch). De manera ilustrativa, cada epoch pudo haber demorado cerca a 4 horas en ser estimada por la CPU, pero únicamente tomó 12 minutos con la GPU. En total, fue necesario 25 epochs.

Pasos:

  1. Windows 7 o superior (64 bits).
  2. Instalar Microsoft Visual C++ Redistribuible (64 bits). Descargar aquí.
  3. Instalar Miniconda. Es recomendado para instalar TensorFlow con compatibilidad con GPU. Descargar aquí.
  4. Crear un entorno virtual. Abrir Anaconda Prompt y escribir lo siguiente:
conda create --name condaGPU python=3.9
conda deactivate
conda activate condaGPU
  1. Se instala CUDA y cuDNN:
conda install -c conda-forge cudatoolkit=11.2 cudnn=8.1.0
  1. Actualizar pip
pip install --upgrade pip
  1. Instalar una versión de tensorflow menor o igual a 2.10 dado que cuenta con soporte de GPU de manera nativa
pip install "tensorflow<2.11"
  1. Verificar instalación (debe devolver un dispositivo GPU):
python -c "import tensorflow as tf; print(tf.config.list_physical_devices('GPU'))"

Para más información, dar click aquí.

Arquitectura neuronal

Las siguientes capas componen la RNN:

  • Embedding: 171'680 palabras en vocabulario y 256 dimensiones
  • LSTM Bidireccional: 128 neuronas
  • LSTM Bidireccional: 128 neuronas
  • Densa: 64 neuronas
  • Densa: 32 neuronas
  • Densa: 5 neuronas, la capa final

Resultados

Se utilizó el 70% de las noticias para el entrenamiento (training sample), y se reservó 30% para el testeo fuera de la muestra (testing sample). Con noticias hasta 26/09/2023, el ajuste en el test sample fue de 95.6%.

Las Figuras de (i) ajustes de cada sample por epoch, (ii) log loss de cada sample por epoch, y (iii) matrix de confusión del test sample son las siguientes: