Skip to content

LLAES07/NLP_MULTI_CLASIFICACION

Repository files navigation

CLASIFICACIÓN DE TEXTOS JUDICIALES CON REDES NEURONALES RECURRENTES LSTM

🔍 Descripción del Proyecto

Sistema de clasificación automática de textos jurídicos mediante una red neuronal LSTM (Long Short-Term Memory) para categorizar descripciones de casos legales en 29 clases diferentes. El modelo permite procesar textos diarios de seguimiento de casos judiciales y asignarles automáticamente categorías específicas basadas en su contenido.

📂Contexto de los Datos

Fuentes de Datos:

  1. df_csv:

    • Registros diarios de estados de casos judiciales (1+ año de datos)
    • Columnas relevantes:
      • Trámite (Filtro: solo "Resolución" y "Sentencia" son los datos que importan en este proyecto)
      • Descripción (textos a clasificar)
  2. df_clasificador:

    • Dataset etiquetado manualmente
    • Estructura:
      • Descripción: Texto de entrada
      • CLASIFICADOR_CORRECTA: Etiqueta de categoría (29 clases posibles)

💻 Implementación Técnica

Notebook

Preprocesamiento de Datos

  1. Reclasificación df_csv:

    • Generación de diccionario reclasificador usando df_clasificador
  2. Limpieza de Texto:

    • Normalización de caracteres
    • Eliminación de stopwords y términos no relevantes
    • Corrección de abreviaturas legales
  3. Tokenización y Padding:

  4. Data Augmentation:

    • Generación de variaciones sintéticas de textos
    • Inclusión de errores comunes (omisión de puntos, espacios inconsistentes)
    • Modificaciones léxicas controladas
  5. Data Modeling

    • Con los datos reales y augmentados se procede a realizar el modelado con una red neuronal LSTM
    • Se buscan variaciones de estructuras para encontrar el mejor y poder realizar la automatización
CONCLUSIONES

Los datos por si solos no son suficiente para lograr un modelo que pueda predecir de manera correcta las distintas categorias. El data augmentation es muy valioso para los datos ya que con este y en conjunto a los datos originales sumado a un balance de peso en el entrenamiento de la red neuronal se logra una accuracy de 94%. Además según lo observado en el clasification report todas las clases tienen una precision de mas de 85 % lo que es escencial ya que necesitamos que el modelo no se equivoque al predecir o se equivoque lo mínimo. Por lo tanto el modelo logra la finalidad de poder clasificar de gran manera todas las clases.

🛠️ Procesamiento automatizado y Pipelines

Este proyecto implementa un sistema de clasificación automática de textos jurídicos mediante una red neuronal LSTM (Long Short-Term Memory). Su objetivo es categorizar descripciones de casos legales en 29 clases diferentes, permitiendo el análisis y organización eficiente de textos judiciales generados diariamente.

  1. Data Ingestion Encargado de generar la inyeccion de los datos. En este paso se inyectan los datos resultantes de df_csv y clasificador. Además desde django se obtiene los datos nuevos que ingresen los usuarios.

  2. Data Transformation Se transforman los datos en el siguiente orden:

    • Pipeline 1: Remueve duplicados + Procesa las oraciones para dejarlas limpias
    • Pipeline 2: Se tokenizan las oraciones
    • Label encoder: Se genera la transformación desde texto a numérico de la variable dependiente.

    Resultados generados:

    • X, y (datos preprocesados).
    • processor.pkl (procesador).
    • tokenizer.pkl (tokenizador).
    • label_encoder.pkl (mapeo de categorías).
  3. Data Modeling

  • Se entrena un modelo neuronal con la siguiente estructura - LSTM Bidireccional de 64 neuronas - Capa Dropout al 40 % - Capa densa con regularización l2 y activación relu - BatchNormalization - Capa Droupout al 30 % - Optimizador Adam con un learning rate de 0.001.

  • Sumado a esto se genera un diccionario con las metricas del modelo model_metrics.json, un heatmap y un grafico del entrenamiento.

    • Precision de entrenamiento y validacion
    • classification_report
    • heatmap
    • history de entrenamiento
  • Por ultimo se guarda el modelo model.pkl

✅ Despliegue con Django

Se desarrolló una API web en Django para permitir predicciones en tiempo real y gestionar nuevos datos de entrenamiento.

  1. Generación de app web:

    Consiste en una app básica donde se mete un texto y entrega las 3 clasificaciones más probables

  2. Lógica para poder agregar nuevos datos al set de training:

    En otra pagina se tiene un formulario en donde se rellena y se agregan nuevos datos para abastecer al modelo. Estos datos requieren de una validación final por parte del superusuario para poder dejarlo en estado Aprobado y ser utilizados en el procesamiento automatizado.

🚀 Despliegue con Docker

Este proyecto incluye un Dockerfile que permite ejecutar la aplicación Django en un contenedor de Docker, asegurando un entorno reproducible.

📌 Requisitos previos

Antes de comenzar, asegúrate de tener instalado:

🔹 1. Construcción de la imagen

Ejecuta el siguiente comando en la raíz del proyecto para construir la imagen de Docker:

docker build -t project_1 .

🔹 2. Ejecutar el contenedor

Para ejecutar la aplicación Django en un contenedor y exponerla en localhost:8000, usa:

docker run --rm -p 8000:8000 -it project_1

🔹 3. Acceder a la aplicación

Una vez que el contenedor esté corriendo, puedes abrir tu navegador y acceder a:

🔗 http://localhost:8000

About

Clasificación multiclases para textos judiciales diarios con LSTM, uso de pipelines y docker

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published