WalterWi's picture
Upload 10 files
f343795 verified
|
Raw History Blame Contribute Delete
4.48 kB
---
language:
- es
library_name: transformers
pipeline_tag: text-classification
tags:
- machine-learning
- text-classification
- bert
- educational-example
license: mit
---
# Clasificador de comentarios con Transformers: 驴positivo o negativo?
## Descripci贸n del modelo
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.
## Objetivo
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.
## Datos de entrenamiento
- **Dataset:** sint茅tico, generado en `train.py` a partir de 5 plantillas de frases y 16 adjetivos (8 positivos y 8 negativos).
- **Cantidad de registros:** 368 comentarios. Se usan 294 para entrenar y 74 para evaluar.
- **Entrada (X):** el texto del comentario, por ejemplo "el departamento es muy luminoso".
- **Salida (y):** la etiqueta, `negativo` (0) o `positivo` (1).
## Entrenamiento
- **Tipo de aprendizaje:** supervisado.
- **Problema:** clasificaci贸n de texto (binaria).
- **Arquitectura:** `BertForSequenceClassification` con 2 capas, 2 cabezas de atenci贸n, dimensi贸n 32 y unos 20.500 par谩metros.
- **Tokenizer:** a nivel palabra (`WordLevel`), con 37 tokens. Pasa todo a min煤sculas y saca las tildes.
- **Funci贸n de p茅rdida:** entrop铆a cruzada. La calcula el modelo cuando recibe `labels`.
- **Optimizador:** `AdamW`, con tasa de aprendizaje 0,001.
- **脡pocas:** 15, en lotes de 16.
- **Biblioteca:** Hugging Face Transformers, con PyTorch.
## Evaluaci贸n
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*.
## Archivos
| 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.
## C贸mo utilizar el modelo
Desde esta carpeta:
```python
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:
```python
clasificador = pipeline("text-classification", model="tu-usuario/nombre-del-repo")
```
Funciona con Transformers 4 (la versi贸n de Colab) y con Transformers 5.
## Limitaciones
- Tiene fines exclusivamente educativos.
- **Solo conoce 37 palabras.** Cualquier otra palabra se convierte en `[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.
- No entiende negaciones ("no es luminoso") ni iron铆a. Las frases de entrenamiento no las tienen.
- El dataset sale de plantillas, as铆 que el accuracy de test es optimista.
- Para un uso real, conviene partir de un modelo preentrenado en espa帽ol y hacerle fine-tuning con comentarios reales.
## Autor铆a
Modelo desarrollado con fines educativos para el IFTS N.潞 18. Docente: Cynthia M. Villagra.