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.
-
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)
-
df_clasificador:- Dataset etiquetado manualmente
- Estructura:
Descripción: Texto de entradaCLASIFICADOR_CORRECTA: Etiqueta de categoría (29 clases posibles)
-
Reclasificación df_csv:
- Generación de diccionario reclasificador usando df_clasificador
-
Limpieza de Texto:
- Normalización de caracteres
- Eliminación de stopwords y términos no relevantes
- Corrección de abreviaturas legales
-
Tokenización y Padding:
-
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
-
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
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.
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.
-
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.
-
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).
-
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
Se desarrolló una API web en Django para permitir predicciones en tiempo real y gestionar nuevos datos de entrenamiento.
-
Generación de app web:
Consiste en una app básica donde se mete un texto y entrega las 3 clasificaciones más probables
-
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.
Este proyecto incluye un Dockerfile que permite ejecutar la aplicación Django en un contenedor de Docker, asegurando un entorno reproducible.
Antes de comenzar, asegúrate de tener instalado:
- Docker en tu sistema.
Ejecuta el siguiente comando en la raíz del proyecto para construir la imagen de Docker:
docker build -t project_1 .Para ejecutar la aplicación Django en un contenedor y exponerla en localhost:8000, usa:
docker run --rm -p 8000:8000 -it project_1
Una vez que el contenedor esté corriendo, puedes abrir tu navegador y acceder a: