Loading…
Loading…
Modelo bert-base-uncased ajustado (fine-tuning) para clasificar comentarios en
inglés como tóxicos o no tóxicos. Fue desarrollado como componente
inteligente del Proyecto Integrador de Desarrollo de Soluciones Inteligentes
(Universidad Bernardo O'Higgins, 2026), integrado en un blog simulado que censura
comentarios tóxicos y advierte de posible baneo ante reiteraciones.
import torch
from transformers import AutoTokenizer, AutoModelForSequenceClassification
MODEL_ID = "bmerino10/vigia-bert-toxicidad"
tok = AutoTokenizer.from_pretrained(MODEL_ID)
model = AutoModelForSequenceClassification.from_pretrained(MODEL_ID).eval()
texto = "You are a complete idiot and nobody wants you here."
enc = tok(texto, truncation=True, max_length=256, return_tensors="pt")
with torch.no_grad():
probs = torch.softmax(model(**enc).logits, dim=-1)[0]
print(model.config.id2label) # {0: 'No tóxico', 1: 'Tóxico'}
print(f"Prob. tóxico: {probs[1]:.4f}") # decisión: tóxico si >= 0.5
google/civil_comments). Licencia del dataset: [CC0 1.0].train, seleccionadas con semilla 42.toxico = 1 si toxicity >= 0.5, 0 en caso contrario.
El umbral es una decisión del equipo, no una etiqueta oficial del dataset.| Parámetro | Valor |
|---|---|
| Modelo base | google-bert/bert-base-uncased |
| Longitud máxima | 256 tokens |
| Épocas | 5 (con early stopping, paciencia 2) |
| Learning rate | 2e-5 |
| Batch size (train / eval) | 8 / 16 |
| Weight decay | 0.01 |
| Precisión | fp16 (GPU T4, Google Colab) |
| Selección del mejor modelo | F1 macro en validación |
| Semilla | 42 |
| Modelo | Accuracy | F1 macro | F1 clase tóxica |
|---|---|---|---|
| Baseline mayoritario | 0.9210 | 0.4794 | 0.0000 |
| TF-IDF + Regresión Logística | 0.8896 | 0.7082 | 0.4782 |
| BERT (este modelo) | 0.9424 | 0.8043 | 0.6399 |
Detalle de BERT por clase:
| Clase | Precision | Recall | F1 |
|---|---|---|---|
| No tóxico | 0.97 | 0.97 | 0.97 |
| Tóxico | 0.63 | 0.65 | 0.64 |
El baseline que siempre predice "no tóxico" tiene buena accuracy pero no detecta ningún comentario tóxico; por eso se usa F1 macro como métrica principal.
Se utilizó Claude (Anthropic) como apoyo para estructurar el código y redactar documentación. El equipo ejecutó los entrenamientos, revisó los resultados y es responsable del contenido.
Merino, B. & Díaz, M. (2026). BERT para detección de toxicidad en Civil Comments.
Universidad Bernardo O'Higgins, Desarrollo de Soluciones Inteligentes.
google-bert/bert-base-uncased