|
|
--- |
|
|
license: mit |
|
|
language: es |
|
|
tags: |
|
|
- text-classification |
|
|
- spanish |
|
|
- email-classification |
|
|
- bert |
|
|
- multilingual |
|
|
datasets: |
|
|
- custom |
|
|
metrics: |
|
|
- accuracy |
|
|
- f1 |
|
|
model-index: |
|
|
- name: AbiDeir/email-classifier-bert |
|
|
results: |
|
|
- task: |
|
|
type: text-classification |
|
|
name: Email Classification |
|
|
dataset: |
|
|
type: custom |
|
|
name: Email Dataset |
|
|
metrics: |
|
|
- type: accuracy |
|
|
value: 0.0 |
|
|
- type: f1 |
|
|
value: 0.0 |
|
|
--- |
|
|
|
|
|
# email-classifier-bert |
|
|
|
|
|
Modelo BERT multilingüe fine-tuneado para clasificación de emails en español. |
|
|
|
|
|
## Descripción |
|
|
|
|
|
Este modelo está basado en `bert-base-multilingual-cased` y ha sido entrenado para clasificar emails en diferentes categorías. El modelo puede identificar automáticamente el tipo de email basándose en su contenido. |
|
|
|
|
|
## Uso |
|
|
|
|
|
```python |
|
|
from transformers import AutoTokenizer, AutoModelForSequenceClassification |
|
|
import torch |
|
|
import numpy as np |
|
|
import pickle |
|
|
|
|
|
# Cargar el modelo y tokenizer |
|
|
model = AutoModelForSequenceClassification.from_pretrained("AbiDeir/email-classifier-bert") |
|
|
tokenizer = AutoTokenizer.from_pretrained("AbiDeir/email-classifier-bert") |
|
|
|
|
|
# Cargar el encoder de etiquetas |
|
|
with open("label_encoder.pkl", "rb") as f: |
|
|
encoder = pickle.load(f) |
|
|
|
|
|
def clasificar_email(texto): |
|
|
device = torch.device("cuda" if torch.cuda.is_available() else "cpu") |
|
|
model.to(device) |
|
|
|
|
|
inputs = tokenizer(texto, return_tensors="pt", truncation=True, padding=True, max_length=512) |
|
|
inputs = {k: v.to(device) for k, v in inputs.items()} |
|
|
|
|
|
with torch.no_grad(): |
|
|
outputs = model(**inputs) |
|
|
|
|
|
pred = np.argmax(outputs.logits.detach().cpu().numpy(), axis=1) |
|
|
return encoder.inverse_transform(pred)[0] |
|
|
|
|
|
# Ejemplo de uso |
|
|
resultado = clasificar_email("¿Cuándo abren mañana?") |
|
|
print(f"Categoría: {resultado}") |
|
|
``` |
|
|
|
|
|
## Instalación |
|
|
|
|
|
```bash |
|
|
pip install transformers torch numpy scikit-learn |
|
|
``` |
|
|
|
|
|
## Entrenamiento |
|
|
|
|
|
El modelo fue entrenado con: |
|
|
- **Base Model**: bert-base-multilingual-cased |
|
|
- **Epochs**: 6 |
|
|
- **Learning Rate**: 2e-5 |
|
|
- **Batch Size**: 8 |
|
|
- **Weight Decay**: 0.01 |
|
|
|
|
|
## Limitaciones |
|
|
|
|
|
- El modelo está optimizado para texto en español |
|
|
- Requiere el archivo `label_encoder.pkl` para funcionar correctamente |
|
|
- Las categorías de clasificación dependen del dataset de entrenamiento |
|
|
|
|
|
## Contacto |
|
|
|
|
|
Para preguntas o problemas, contacta al autor del modelo. |
|
|
|