Toxic Comment Classifier (DistilBERT)

Model Details

Model Description

Este modelo es un clasificador multietiqueta diseñado para detectar lenguaje nocivo en inglés. Es una adaptación (fine-tuning) del modelo base distilbert-base-uncased, entrenado para clasificar textos en 6 categorías no excluyentes: toxic, severe_toxic, obscene, threat, insult, y identity_hate.

  • Developed by: José Campos & Jhonatan Homsany
  • Model type: Text Classification (Multi-label)
  • Language(s) (NLP): English
  • Finetuned from model: distilbert-base-uncased

Uses

Direct Use

Este modelo funciona como un asistente de primera línea para quienes moderan foros, chats en vivo o redes sociales. Su propósito es actuar como un filtro rápido que lea los comentarios y envíe a revisión humana aquellos que parezcan agresivos u ofensivos, priorizando el trabajo de moderación.

Out-of-Scope Use

No está diseñado para aplicar bloqueos o baneos automáticos sin supervisión humana. Tampoco es ideal para captar sarcasmo, ironías o agresividad pasivo-agresiva que no utilice malas palabras evidentes.

Bias, Risks, and Limitations

  • Jerga y Ortografía: Al haber aprendido a leer con textos formales de Wikipedia, le cuesta interpretar la jerga de internet, las palabras acortadas o la mala ortografía intencional (ej. "I'ma", "wit").
  • Falsas Alarmas (Hipersensibilidad): Para evitar que el modelo ignore amenazas reales, se le programó matemáticamente para ser muy estricto con las categorías raras (threat, severe_toxic). Es normal que prefiera marcar un texto inofensivo como amenaza antes que dejar pasar un peligro real.
  • Sesgos en los Datos: El modelo hereda prejuicios del dataset original (Jigsaw). Tiende a asociar palabras relacionadas con minorías (orientación sexual, raza, religión) con la etiqueta de odio, ya que en sus datos de entrenamiento esas palabras se usaban frecuentemente como insulto.

How to Get Started with the Model

Puedes probar este clasificador directamente en Python utilizando la librería transformers:

from transformers import pipeline

# Cargar el modelo desde el Hub
clasificador = pipeline("text-classification", model="JD1714/ToxicityClassifier", top_k=None)

# Probar con un texto
resultado = clasificador("I hate you, you are a complete idiot!")
print(resultado)

Trainig Details

Training Data

10.000 ejemplos curados extraídos del Jigsaw Toxic Comment Classification Challenge (80% entrenamiento, 10% validación, 10% prueba).

Training Procedure

  • Estrategia: Fine-tuning completo (se descongelaron todas las capas del backbone).

  • Manejo del Desbalance: Se utilizó la función de pérdida BCEWithLogitsLoss aplicando pesos por clase (pos_weight) para penalizar severamente los errores en las categorías minoritarias.

Training Hyperparameters

  • Learning rate: 2e-05

  • Epochs: 6

  • Batch size: 16

  • Early Stopping: Patience of 2 epochs (monitoreando F1-Macro)

Evaluation

Metrics

Se utilizó la métrica F1-Macro para medir el rendimiento de forma justa, dándole la misma importancia a todas las clases sin importar su escasez en el dataset.

Results

  • F1-Macro (Validation): 0.5291

  • F1-Macro (Test): 0.6175

  • Training Time: 425 segundos en entorno Google Colab GPU.

Downloads last month
30
Safetensors
Model size
67M params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for JD1714/ToxicityClassifier

Finetuned
(12770)
this model

Dataset used to train JD1714/ToxicityClassifier