ccamilo99/XML-Roberta-Large-spanish-sarcasm-detection-univalle-pln
XML-RoBERTa-Large para la Detección de Sarcasmo (Univalle PLN)
Este modelo es un ajuste fino (finetuning) del gigante XLM-RoBERTa-large diseñado específicamente para la tarea de clasificación binaria de detección de sarcasmo en español. Fue desarrollado como parte del Taller de Procesamiento de Lenguaje Natural (PLN).
🧠 Arquitectura de Entrenamiento (Fine-Tuning Parcial)
Para capturar la compleja semántica del sarcasmo en español y optimizar el uso de VRAM (evitando errores de Out of Memory), se aplicó una estrategia de descongelado parcial:
- Se congeló la base del cuerpo del modelo.
- Se descongelaron las últimas 6 capas del encoder y el pooler de XLM-RoBERTa para permitir que adaptaran sus representaciones semánticas profundas al dataset de sarcasmo.
📊 Rendimiento del Modelo
El modelo se entrenó durante 8 épocas con un optimizador adaptativo y un tamaño de lote virtual de 16 (Lote físico de 4 con 4 pasos de acumulación de gradientes).
Los mejores resultados se alcanzaron en la Época 8, obteniendo métricas sobresalientes en el conjunto de validación:
- Validation Loss: 0.4011
- Accuracy (Exactitud): 93.61%
- F1-Score: 91.68%
🛠️ Cómo usarlo en Python
Puedes cargar y probar este modelo directamente utilizando la librería transformers de Hugging Face:
from transformers import AutoTokenizer, AutoModelForSequenceClassification, pipeline
model_name = "ccamilo99/XML-Roberta-Large-spanish-sarcasm-detection-univalle-pln"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name)
sarcasm_detector = pipeline("text-classification", model=model, tokenizer=tokenizer)
# Ejemplos de prueba
print(sarcasm_detector("Sí, porque claramente yo soy el experto en cocina gourmet."))
print(sarcasm_detector("La Tierra gira alrededor del Sol."))