|
|
--- |
|
|
language: |
|
|
- es |
|
|
license: mit |
|
|
tags: |
|
|
- text-classification |
|
|
- sentiment-analysis |
|
|
- reviews |
|
|
- distilbert |
|
|
- spanish |
|
|
datasets: |
|
|
- amazon_reviews_multi |
|
|
metrics: |
|
|
- accuracy |
|
|
- f1 |
|
|
- precision |
|
|
- recall |
|
|
model-index: |
|
|
- name: distilbert-review_classification |
|
|
results: |
|
|
- task: |
|
|
type: text-classification |
|
|
name: Clasificación de reseñas (5 clases) |
|
|
dataset: |
|
|
name: amazon_reviews_multi (español) |
|
|
type: amazon_reviews_multi |
|
|
metrics: |
|
|
- type: accuracy |
|
|
value: 0.5808 |
|
|
- type: f1 |
|
|
value: 0.58158 |
|
|
pipeline_tag: text-classification |
|
|
widget: |
|
|
- text: "Este producto es increíble, funciona perfectamente y el precio es excelente." |
|
|
- text: "La calidad del producto deja mucho que desear y llegó con un retraso considerable." |
|
|
--- |
|
|
|
|
|
# distilbert-review_classification |
|
|
|
|
|
Este modelo es una variante de DistilBERT entrenada para la clasificación de reseñas de Amazon en español. Está basado en `distilbert-base-multilingual` y ha sido afinado para predecir calificaciones de estrellas (1-5) a partir del texto de la reseña. |
|
|
|
|
|
## Modelo |
|
|
|
|
|
**Arquitectura base:** DistilBERT (distilbert-base-multilingual) |
|
|
**Tarea:** Clasificación de texto (5 clases) |
|
|
**Idioma:** Español |
|
|
**Caso de uso:** Análisis de sentimiento y clasificación de reseñas |
|
|
|
|
|
## Rendimiento |
|
|
|
|
|
El modelo fue evaluado en un conjunto de datos balanceado con 1000 muestras para cada clase (calificación de 1 a 5 estrellas): |
|
|
|
|
|
| Métrica | Valor | |
|
|
|---------|-------| |
|
|
| Exactitud (Accuracy) | 0.5808 | |
|
|
| F1 Score (macro promedio) | 0.58158 | |
|
|
| Precisión (macro promedio) | 0.58303 | |
|
|
| Recall (macro promedio) | 0.5808 | |
|
|
|
|
|
### Rendimiento por clase |
|
|
|
|
|
| Clase | Precisión | Recall | F1 Score | Soporte | |
|
|
|-------|-----------|--------|----------|---------| |
|
|
| 1 ⭐ | 0.72069 | 0.707 | 0.71378 | 1000 | |
|
|
| 2 ⭐ | 0.50409 | 0.554 | 0.52787 | 1000 | |
|
|
| 3 ⭐ | 0.48916 | 0.474 | 0.48146 | 1000 | |
|
|
| 4 ⭐ | 0.51613 | 0.512 | 0.51406 | 1000 | |
|
|
| 5 ⭐ | 0.68509 | 0.657 | 0.67075 | 1000 | |
|
|
|
|
|
## Detalles de entrenamiento |
|
|
|
|
|
* **Epochs:** 1 |
|
|
* **Pasos de entrenamiento:** 50,000 |
|
|
* **Tiempo de entrenamiento:** ~8.2 horas (29,486 segundos) |
|
|
* **Loss final:** 0.9721 |
|
|
|
|
|
## Uso |
|
|
|
|
|
```python |
|
|
from transformers import AutoTokenizer, AutoModelForSequenceClassification |
|
|
import torch |
|
|
|
|
|
# Cargar modelo y tokenizer |
|
|
tokenizer = AutoTokenizer.from_pretrained("polodealvarado/distilbert-review_classification") |
|
|
model = AutoModelForSequenceClassification.from_pretrained("polodealvarado/distilbert-review_classification") |
|
|
|
|
|
# Preparar el texto de entrada |
|
|
texto = "Este producto superó mis expectativas, lo recomiendo totalmente." |
|
|
inputs = tokenizer(texto, return_tensors="pt", padding=True, truncation=True, max_length=512) |
|
|
|
|
|
# Realizar la predicción |
|
|
with torch.no_grad(): |
|
|
outputs = model(**inputs) |
|
|
logits = outputs.logits |
|
|
predicted_class = torch.argmax(logits, dim=1).item() |
|
|
|
|
|
# La clase predicha será un número del 0 al 4, que corresponde a 1-5 estrellas |
|
|
estrellas_predichas = predicted_class + 1 |
|
|
print(f"Predicción: {estrellas_predichas} estrellas") |
|
|
``` |
|
|
|
|
|
## Limitaciones |
|
|
|
|
|
- El modelo fue entrenado con datos de reseñas de Amazon, por lo que puede tener un rendimiento reducido en otros dominios. |
|
|
- El rendimiento es más alto para reseñas claramente positivas (5 estrellas) o c |