Benghy/sistema-pln-opiniones-universitarias
Sistema PLN de Opiniones Universitarias
Proyecto local para clasificar opiniones universitarias mediante un modelo mBERT multitarea. La aplicacion recibe una opinion escrita por el usuario y devuelve:
- el sentimiento de la opinion:
POSITIVOoNEGATIVO; - la categoria principal:
CURSO,DOCENCIAoUNIVERSIDAD.
El sistema esta compuesto por una API desarrollada en Flask, una interfaz web en HTML, CSS y JavaScript, y un modelo entrenado guardado localmente.
Estructura
app.py
requirements.txt
frontend/
index.html
app.js
styles.css
modelo_mbert_sentimiento_categoria/
config.json
label_maps.json
model.safetensors
tokenizer.json
scripts/
create_edurabsa_multitask_csv.py
data/
processed/
edurabsa_sentimiento_categoria.csvInstalacion
Crear y activar un entorno virtual:
python -m venv .venv
.\.venv\Scripts\Activate.ps1Instalar las dependencias:
pip install -r requirements.txtEjecucion
Iniciar la aplicacion:
python app.pyLuego abrir en el navegador:
http://127.0.0.1:5000Funcionamiento
La interfaz permite ingresar una opinion universitaria. Al presionar el boton de analisis, el texto se envia al endpoint /predict, donde se tokeniza y se procesa con el modelo mBERT entrenado.
La respuesta incluye:
- sentimiento predicho;
- confianza del sentimiento;
- categoria predicha;
- confianza de la categoria;
- probabilidades por clase.
Dataset
El archivo usado para el entrenamiento fue generado a partir de EduRABSA mediante el script:
scripts/create_edurabsa_multitask_csv.pyEl dataset procesado contiene 5007 registros utiles:
- 3405 opiniones positivas;
- 1602 opiniones negativas;
- 2662 opiniones de docencia;
- 1919 opiniones de curso;
- 426 opiniones de universidad.
Los registros neutrales fueron excluidos porque el modelo trabaja con clasificacion binaria de sentimiento.
Alcance
El modelo esta preparado para clasificar solo las etiquetas usadas durante el entrenamiento:
- sentimiento: positivo o negativo;
- categoria: curso, docencia o universidad.
La longitud maxima usada por el modelo es de 128 tokens. Si la opinion ingresada supera ese limite, la aplicacion informa que el texto fue truncado antes de realizar la prediccion.
Este proyecto esta orientado a una ejecucion local y academica.
