CoolFace
Modelpublic

acctcyf/distilbert-enron-spam-detector

sourceHugging Faceapache-2.0updated 4mo agoView on Hugging Face
0likes26downloads
Model Card

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:

VariableDescripción
message_idIdentificador único del correo
textTexto completo del correo
labelEtiqueta numérica
label_textEtiqueta textual (ham o spam)
subjectAsunto del correo
messageCuerpo principal del correo
dateFecha asociada al correo

Durante el preprocesado se utilizaron únicamente las variables:

  • —subject
  • —message

Ambas variables se combinaron en una única entrada textual con la siguiente estructura:

text
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:

text
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.
python
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ámetroValor
Epochs5
Learning rate2e-5
Batch size8
Weight decay0.01
Max length256

Métricas de evaluación

Las métricas utilizadas para evaluar el modelo fueron:

  • —Accuracy
  • —Precision
  • —Recall
  • —F1-score

Resultados obtenidos

MétricaResultado
Accuracy0.9915
Precision0.9891
Recall0.9940
F1-score0.9916

Inferencia

Ejemplo de uso:

python
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 (HAM o SPAM),
  • —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.