Modelo BETO ajustado finamente (fine-tuned) para la clasificación del nivel de riesgo institucional en comentarios cualitativos de heteroevaluación docente en español, en el contexto de la Universidad Francisco de Paula Santander (UFPS), Colombia.
El modelo clasifica comentarios estudiantiles anónimos en tres niveles:
Etiqueta
Descripción
BAJO
Comentario sin señales de riesgo institucional
MEDIO
Comentario con señales de atención moderada
ALTO
Comentario con señales de riesgo que requieren atención institucional prioritaria
Descripción del modelo
Este modelo es un fine-tuning de BETO — el modelo BERT preentrenado en español desarrollado por el DCC UChile — adaptado para clasificación multiclase de texto educativo informal en español latinoamericano.
El entrenamiento forma parte de un proyecto de investigación orientado a automatizar el análisis de los resultados del sistema de evaluación docente (SET) de la UFPS, reemplazando la revisión manual de cientos de comentarios estudiantiles por semestre con un componente de inteligencia artificial capaz de detectar automáticamente situaciones que requieren atención del director de departamento.
El modelo fue seleccionado como parte de un experimento comparativo que incluyó cuatro arquitecturas Transformer preentrenadas en español: RoBERTuito, BETO, DistilBETO y Electricidad (ELECTRA-es). El número de épocas de entrenamiento (5) fue determinado mediante análisis de curvas de pérdida para garantizar que el modelo opera en su punto óptimo de generalización, previo al inicio del sobreajuste.
Uso del modelo
Instalación
pip install transformers torch
Inferencia directa
python
1from transformers import pipeline
23clasificador = pipeline(4"text-classification",5 model="DevOB/modelo-beto-nivelDeRiesgo5",6 tokenizer="DevOB/modelo-beto-nivelDeRiesgo5",7)89comentario ="El profesor nunca llegaba a tiempo y no respondía las preguntas en clase."10resultado = clasificador(comentario)11print(resultado)12# [{'label': 'MEDIO', 'score': 0.82}]
Inferencia con Transformers completo
python
1import torch
2from transformers import AutoTokenizer, AutoModelForSequenceClassification
34model_id ="DevOB/modelo-beto-nivelDeRiesgo5"56tokenizer = AutoTokenizer.from_pretrained(model_id)7model = AutoModelForSequenceClassification.from_pretrained(model_id)8model.eval()910comentario ="Este profesor tiene actitudes irrespetuosas hacia los estudiantes."1112inputs = tokenizer(13 comentario,14 return_tensors="pt",15 truncation=True,16 max_length=128,17 padding="max_length"18)1920with torch.no_grad():21 outputs = model(**inputs)2223probs = torch.softmax(outputs.logits, dim=-1)24id2label = model.config.id2label
25prediccion = id2label[probs.argmax().item()]26confianza = probs.max().item()2728print(f"Nivel de riesgo: {prediccion} (confianza: {confianza:.2%})")
Datos de entrenamiento
El modelo fue entrenado sobre un corpus de 9,457 comentarios cualitativos en español originados en evaluaciones docentes estudiantiles (heteroevaluación), con la siguiente distribución de clases:
Clase
Muestras
Porcentaje
BAJO
4,603
48.7%
MEDIO
3,071
32.5%
ALTO
1,783
18.9%
El corpus fue construido a partir de comentarios reales anonimizados de la UFPS, complementados con datos traducidos al español desde el inglés mediante Gemini Pro para enriquecer la representación de las clases de menor frecuencia. Los textos fueron limpiados y normalizados manteniendo las características del lenguaje coloquial estudiantil (abreviaciones, errores ortográficos típicos) para preservar la distribución lingüística real del entorno de producción.
Partición del dataset:
Entrenamiento: 80% (7,565 muestras)
Prueba: 20% (1,892 muestras)
Semilla aleatoria: 42
Configuración de entrenamiento
Parámetro
Valor
Modelo base
dccuchile/bert-base-spanish-wwm-cased
Épocas
5
Batch size (entrenamiento)
16
Batch size (evaluación)
32
Longitud máxima de tokens
128
Warmup steps
100
Weight decay
0.01
Semilla
42
Hardware
NVIDIA GeForce RTX 4060
CUDA
12.1
Framework
PyTorch 2.6.0 + Transformers 4.47.0
El número de épocas (5) fue seleccionado mediante análisis de curvas de pérdida. En el experimento de 12 épocas, la Loss de validación de BETO comienza a divergir significativamente de la Loss de entrenamiento a partir de la época 6 (eval_loss > 0.90), señal de sobreajuste. La época 5 representa el último punto con eval_loss < 0.90 (0.8376), garantizando generalización real sin memorización del corpus.
Curva de pérdida (experimento 12 épocas):
Época
Loss Train
Loss Eval
F1-Macro
Accuracy
1
0.3385
0.5158
76.10%
78.38%
2
0.2547
0.4799
78.61%
81.82%
3
0.1699
0.6736
77.99%
81.18%
4
0.1133
0.7982
79.40%
81.92%
5
0.0722
0.8798
80.03%
82.51%
6
0.0767
0.9168 ⚠️
80.67%
82.88%
7
0.0298
1.1149 ⚠️
80.39%
82.88%
⚠️ Sobreajuste detectado a partir de época 6 (eval_loss > 0.90).
Resultados de evaluación
Evaluación sobre el conjunto de prueba (1,892 muestras, época 5):
Métricas globales
Métrica
Valor
F1-Macro
80.79%
Accuracy
83.40%
Precision (macro)
81.29%
Recall (macro)
80.45%
Eval Loss
0.8376
Métricas por clase
Clase
Precision
Recall
F1-Score
Soporte
BAJO
93%
91%
92%
921
MEDIO
73%
79%
76%
614
ALTO
78%
71%
74%
357
Matriz de confusión
Pred. BAJO
Pred. MEDIO
Pred. ALTO
Real BAJO
839 (91.1%)
80 (8.7%)
2 (0.2%)
Real MEDIO
59 (9.6%)
484 (78.8%)
71 (11.6%)
Real ALTO
5 (1.4%)
97 (27.2%)
255 (71.4%)
⚠️ Nota importante: 97 comentarios de clase ALTO son clasificados como MEDIO (27.2% de falsos negativos críticos). Para aplicaciones donde la detección de riesgo alto es prioritaria, se recomienda evaluar el ajuste de umbral de decisión o considerar modelos con mayor Recall en la clase ALTO (ver DistilBETO de este mismo proyecto).
Limitaciones y consideraciones
Dominio específico: El modelo fue entrenado exclusivamente sobre comentarios de heteroevaluación docente universitaria en Colombia. Su rendimiento en otros dominios (reseñas, redes sociales, soporte técnico, etc.) no ha sido evaluado y puede ser significativamente inferior.
Idioma: Optimizado para español latinoamericano informal. No se garantiza rendimiento equivalente en español peninsular u otras variedades.
Desbalance de clases: La clase ALTO representa solo el 18.9% del corpus, lo que se refleja en un Recall ALTO (71%) inferior al de las demás clases. Aplicaciones con alta sensibilidad a falsos negativos en riesgo alto deben considerar estrategias de umbral o reentrenamiento con datos aumentados.
Longitud de texto: El modelo fue entrenado con un máximo de 128 tokens. Comentarios significativamente más largos serán truncados, con posible pérdida de información al final del texto.
Privacidad: Este modelo fue entrenado sobre datos anonimizados. No debe utilizarse para identificar personas ni para procesar datos personales sin las salvaguardas legales correspondientes.
Uso previsto
✅ Casos de uso apropiados:
Apoyo a directores de departamento en la revisión de comentarios de heteroevaluación docente
Priorización automática de comentarios para revisión humana
Generación de alertas tempranas en sistemas de gestión académica
❌ Casos de uso no apropiados:
Toma de decisiones definitivas sobre docentes sin revisión humana
Procesamiento de datos fuera del ámbito de la evaluación docente universitaria
Aplicaciones que requieran certeza absoluta en la detección de riesgo