Loading…
Loading…
Este modelo es un ejemplo pedagógico del Seminario de Actualización (IFTS N.º 18). Muestra todas las piezas que se publican cuando se comparte un modelo de Hugging Face Transformers: la arquitectura, los pesos y el tokenizer.
Clasifica comentarios cortos sobre departamentos como positivo o negativo.
Es un BERT diminuto entrenado desde cero con un vocabulario propio y muy chico. En un caso real no se entrena desde cero: se hace fine-tuning de un modelo preentrenado del Hub. Igual, los archivos que se publican son los mismos.
Clasificar un texto en una de dos clases. Es un problema de clasificación binaria, como el de la Clase 11, pero con texto como entrada.
train.py a partir de 5 plantillas de frases y 16 adjetivos (8 positivos y 8 negativos).negativo (0) o positivo (1).BertForSequenceClassification con 2 capas, 2 cabezas de atención, dimensión 32 y unos 20.500 parámetros.WordLevel), con 37 tokens. Pasa todo a minúsculas y saca las tildes.labels.AdamW, con tasa de aprendizaje 0,001.Se evaluó sobre 74 comentarios que el modelo no vio durante el entrenamiento.
| Métrica | Resultado |
|---|---|
| Accuracy | 1,000 |
Que acierte el 100 % no quiere decir que el modelo sea bueno. Los comentarios de test usan las mismas plantillas y los mismos adjetivos que los de entrenamiento: es un examen con las mismas preguntas que la práctica. Ver Limitaciones.
| Archivo | Qué es |
|---|---|
config.json |
la arquitectura: capas, dimensiones, etiquetas (id2label) |
model.safetensors |
los pesos |
tokenizer.json |
el vocabulario y cómo se corta el texto en tokens |
tokenizer_config.json |
la configuración del tokenizer y sus tokens especiales |
train.py |
el código que lo entrenó |
predict.py |
cómo cargarlo y usarlo |
requirements.txt |
las dependencias |
README.md |
esta Model Card |
Modelo y tokenizer van juntos. Si el modelo se publica sin su tokenizer, no se puede usar: los números que entiende el modelo son posiciones del vocabulario de ese tokenizer y de ningún otro.
Desde esta carpeta:
from transformers import pipeline
clasificador = pipeline("text-classification", model=".")
print(clasificador("el departamento es muy luminoso"))
# [{'label': 'positivo', 'score': 0.99...}]
Una vez publicado en el Hub, se cambia la carpeta por el nombre del repo:
clasificador = pipeline("text-classification", model="tu-usuario/nombre-del-repo")
Funciona con Transformers 4 (la versión de Colab) y con Transformers 5.
[UNK] (desconocida). Por ejemplo, "tiene una vista increíble" queda como [UNK] [UNK] [UNK] [UNK]. El modelo igual responde, y con seguridad alta: dice negativo (1.00). Un modelo puede equivocarse con total confianza cuando le llega algo distinto de lo que vio al entrenar.Modelo desarrollado con fines educativos para el IFTS N.º 18. Docente: Cynthia M. Villagra.