ToxicityClassifier / README.md
JD1714's picture
Update README.md
01a09cc verified
|
Raw History Blame Contribute Delete
3.59 kB
---
library_name: transformers
tags:
- text-classification
- multi-label
- toxic-comments
- distilbert
datasets:
- thesofakillers/jigsaw-toxic-comment-classification-challenge
language:
- en
base_model:
- distilbert/distilbert-base-uncased
---
# 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`:
```python
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.