Instructions to use acctcyf/distilbert-enron-spam-detector with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use acctcyf/distilbert-enron-spam-detector with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-classification", model="acctcyf/distilbert-enron-spam-detector")# Load model directly from transformers import AutoTokenizer, AutoModelForSequenceClassification tokenizer = AutoTokenizer.from_pretrained("acctcyf/distilbert-enron-spam-detector") model = AutoModelForSequenceClassification.from_pretrained("acctcyf/distilbert-enron-spam-detector") - Notebooks
- Google Colab
- Kaggle
DistilBERT Enron Spam Detector
Descripción
Este proyecto consiste en el desarrollo de un sistema de detección de spam en correos electrónicos mediante técnicas de procesamiento de lenguaje natural (NLP) y modelos Transformer.
Para ello, se ha realizado el fine-tuning del modelo distilbert-base-uncased sobre el dataset SetFit/enron_spam, compuesto por correos electrónicos etiquetados como legítimos (HAM) o spam (SPAM).
El objetivo del modelo es clasificar automáticamente un correo electrónico en una de las dos categorías:
HAM: correo legítimo.SPAM: correo no deseado.
Dataset
El dataset utilizado ha sido:
SetFit/enron_spam
Este dataset contiene miles de correos electrónicos reales procedentes del conjunto Enron Spam Email Dataset.
Cada ejemplo incluye distintas variables relacionadas con el correo:
| Variable | Descripción |
|---|---|
message_id |
Identificador único del correo |
text |
Texto completo del correo |
label |
Etiqueta numérica |
label_text |
Etiqueta textual (ham o spam) |
subject |
Asunto del correo |
message |
Cuerpo principal del correo |
date |
Fecha asociada al correo |
Durante el preprocesado se utilizaron únicamente las variables:
subjectmessage
Ambas variables se combinaron en una única entrada textual con la siguiente estructura:
Subject: <asunto>
Message: <cuerpo del correo>
Esta representación permite al modelo diferenciar explícitamente entre el asunto y el contenido principal del correo.
Modelo utilizado
El modelo base seleccionado ha sido:
distilbert-base-uncased
DistilBERT es una versión reducida y optimizada de BERT que mantiene gran parte de su rendimiento, pero con:
- menor número de parámetros,
- menor consumo de memoria,
- entrenamiento más rápido.
Este modelo resulta adecuado para tareas de clasificación de texto con recursos computacionales limitados.
Tokenización
Se utilizó el tokenizer oficial asociado a DistilBERT.
Los correos electrónicos fueron tokenizados utilizando:
- truncado automático,
- padding,
- longitud máxima de 256 tokens.
tokenizer(
text,
truncation=True,
padding="max_length",
max_length=256
)
Fine-Tuning
El entrenamiento se realizó utilizando la clase Trainer de Hugging Face Transformers.
Hiperparámetros principales
| Parámetro | Valor |
|---|---|
| Epochs | 5 |
| Learning rate | 2e-5 |
| Batch size | 8 |
| Weight decay | 0.01 |
| Max length | 256 |
Métricas de evaluación
Las métricas utilizadas para evaluar el modelo fueron:
- Accuracy
- Precision
- Recall
- F1-score
Resultados obtenidos
| Métrica | Resultado |
|---|---|
| Accuracy | 0.9915 |
| Precision | 0.9891 |
| Recall | 0.9940 |
| F1-score | 0.9916 |
Inferencia
Ejemplo de uso:
from transformers import pipeline
classifier = pipeline(
"text-classification",
model="TU_USUARIO_HF/distilbert-enron-spam-detector"
)
texto = "
Subject: You won a free iPhone
Message: Click here immediately to claim your reward.
"
classifier(texto)
Demo con Gradio
Además del modelo entrenado, se desarrolló una demo interactiva mediante Gradio y Hugging Face Spaces.
La aplicación permite introducir el contenido de un correo electrónico y obtener en tiempo real:
- clasificación (
HAMoSPAM), - nivel de confianza de la predicción.
Limitaciones
Este modelo presenta varias limitaciones:
- Está entrenado principalmente con correos en inglés.
- Puede funcionar peor con correos escritos en otros idiomas.
- Solo analiza texto, no adjuntos ni enlaces.
- Los correos largos se truncarán a 256 tokens.
- Puede fallar ante técnicas modernas de spam no presentes en el dataset original.
Tecnologías utilizadas
- Python
- PyTorch
- Hugging Face Transformers
- Hugging Face Datasets
- Gradio
- Scikit-learn
Autor
Proyecto desarrollado como práctica de fine-tuning y despliegue de modelos Transformer para tareas NLP.
- Downloads last month
- 2