🛡️ SinOdio BETO: Detector de Discurso de Odio v3
Protegiendo la dignidad humana con IA
📖 Descripción
SinOdio BETO v3 es un modelo de detección de discurso de odio especializado en español latinoamericano, diseñado para identificar tanto hate speech explícito como las formas sutiles y normalizadas de discriminación que a menudo eluden los sistemas de moderación tradicionales.
Este modelo es parte de DignityAI, un ecosistema de IA enfocado en proteger la dignidad humana mediante la detección de discriminación en contenido digital.
🎯 Características Clave
- ✅ Especializado en español latinoamericano: Comprende jerga, modismos y expresiones regionales
- ✅ Detecta hate speech sutil: No solo insultos explícitos, sino también discriminación normalizada
- ✅ Cobertura regional: Entrenado con ejemplos de Chile, México, Argentina, Colombia y Perú
- ✅ Alto recall (91%): Prioriza detectar hate speech real sobre evitar falsos positivos
- ✅ F1 Score 0.87: Excelente balance entre precisión y recall
📊 Métricas de Rendimiento
| Métrica | v3 | v1 | Mejora |
|---|---|---|---|
| Accuracy | 91.85% | 77.82% | +14.03% |
| F1 Score | 0.8700 | 0.6619 | +20.81% |
| Precision | 0.8330 | 0.6096 | +22.34% |
| Recall | 0.9103 | 0.7240 | +18.63% |
🎯 Filosofía de Diseño
Para hate speech detection, priorizamos Recall sobre Precision:
- Recall 91%: Detectamos 91 de cada 100 casos reales de hate speech
- Precision 83%: De lo que marcamos como hate, 83% es correcto
Justificación: Es más importante detectar contenido dañino (evitar falsos negativos) que marcar incorrectamente contenido inocente (falsos positivos), especialmente en contextos de moderación de contenido.
🚀 Uso Rápido
Instalación
pip install transformers torch
Ejemplo Básico
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
# Cargar modelo y tokenizer
model_name = "antonn-dromundo/SinOdio-BETO-HateSpeech-Detector-v3"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name)
def detectar_odio(texto):
"""
Detecta hate speech en texto en español.
Returns:
tuple: (etiqueta, confianza)
etiqueta: "HATE" o "NO HATE"
confianza: probabilidad (0-1)
"""
inputs = tokenizer(texto, return_tensors="pt", padding=True, truncation=True, max_length=128)
with torch.no_grad():
outputs = model(**inputs)
probs = torch.softmax(outputs.logits, dim=1)
pred = torch.argmax(probs, dim=1).item()
conf = probs[0][pred].item()
etiqueta = "HATE" if pred == 1 else "NO HATE"
return etiqueta, conf
# Ejemplos
textos = [
"los inmigrantes enriquecen nuestra cultura",
"las mujeres simplemente son más emocionales, es biología"
]
for texto in textos:
etiqueta, confianza = detectar_odio(texto)
print(f"Texto: {texto}")
print(f"Predicción: {etiqueta} (confianza: {confianza:.2%})\n")
Output:
Texto: los inmigrantes enriquecen nuestra cultura
Predicción: NO HATE (confianza: 99.70%)
Texto: las mujeres simplemente son más emocionales, es biología
Predicción: HATE (confianza: 99.60%)
🎓 Detalles Técnicos
Modelo Base
- Arquitectura: BETO (BERT para español)
- Base model:
dariolopez/bert-base-spanish-wwm-cased - Parámetros: ~110M
- Tamaño: 439 MB
Entrenamiento
Dataset de entrenamiento:
- ~35,000 ejemplos de texto en español
- Fuentes:
- SinOdio-LATAM-Regional-HateSpeech
- Spanish Hate Speech Superset
- Ejemplos sintéticos balanceados
Hiperparámetros:
- Epochs: 2
- Learning rate: 2e-5
- Batch size: 16
- Max sequence length: 128
- Optimizer: AdamW
- Warmup steps: 200
Hardware:
- GPU: NVIDIA T4 (Google Colab Pro)
- Tiempo de entrenamiento: ~30 minutos
💡 Casos de Uso
✅ Recomendado para:
- Moderación de contenido en redes sociales y plataformas
- Aplicaciones de citas para filtrar perfiles con contenido ofensivo
- Análisis académico de hate speech en español latinoamericano
- Herramientas educativas para concientización sobre discriminación
- Sistemas de alerta temprana en comunidades online
⚠️ Limitaciones y Consideraciones
- Contexto cultural: Optimizado para español latinoamericano; puede tener menor precisión en español de España
- Sarcasmo e ironía: Puede tener dificultades con lenguaje altamente contextual
- Evolución del lenguaje: El hate speech evoluciona; el modelo requiere actualizaciones periódicas
- No es infalible: Debe ser parte de un sistema de moderación humano-IA, no reemplazarlo
- Falsos positivos: ~17% de casos marcados pueden no ser hate speech real
🌍 Categorías Detectadas
El modelo identifica discriminación relacionada con:
- 🚶 Inmigración y xenofobia
- 👥 Género y machismo
- 🏳️🌈 Orientación sexual y identidad de género
- 🎨 Raza y etnia
- 💰 Clase social (aporofobia)
- ♿ Discapacidad (capacitismo)
- 🌐 Pueblos originarios
📚 Dataset
Este modelo fue entrenado con SinOdio-LATAM, el primer dataset académico de hate speech sutil en español latinoamericano.
Características del dataset:
- 10,000+ pares de ejemplos (explícito-disimulado)
- Cobertura de 5 países latinoamericanos
- Múltiples categorías de discriminación
- Metodología de contrastive pairs
🔬 Investigación y Citas
Si utilizas este modelo en investigación académica, por favor cita:
@misc{dromundo2025sinodio,
title={SinOdio BETO: Detector de Discurso de Odio para Español Latinoamericano},
author={Dromundo, Antonio},
year={2025},
publisher={HuggingFace},
url={https://huggingface.co/antonn-dromundo/SinOdio-BETO-HateSpeech-Detector-v3}
}
🤝 Contribuciones y Feedback
¿Encontraste un caso donde el modelo falla? ¿Tienes sugerencias de mejora?
- 📧 Email: [email protected]
- 💼 LinkedIn: antonn-dromundo
⚖️ Consideraciones Éticas
Este modelo fue diseñado con los siguientes principios éticos:
- Transparencia: Documentación completa de capacidades y limitaciones
- No discriminación: Entrenado para detectar odio, no perpetuarlo
- Privacidad: No almacena ni procesa datos personales
- Uso responsable: Debe complementar, no reemplazar, moderación humana
- Acceso abierto: Disponible públicamente para investigación y bien social
⚠️ Usos No Autorizados
Este modelo NO debe usarse para:
- Censura gubernamental o política
- Vigilancia masiva sin consentimiento
- Discriminación algorítmica
- Generar hate speech (incluso con fines educativos sin supervisión)
📜 Licencia
Apache 2.0 - Libre para uso comercial y académico con atribución.
🙏 Agradecimientos
- BETO: Por el excelente modelo base en español
- HuggingFace: Por la infraestructura y comunidad
- Comunidad NLP en español: Por inspiración y recursos
🔄 Historial de Versiones
v3 (Noviembre 2025) - Actual
- ✅ Mejora de +21 puntos en F1 score
- ✅ Ajuste fino con ejemplos específicos NO HATE
- ✅ Recall 91% (mejor detección de hate speech)
v2 (Noviembre 2025)
- ✅ Integración de dataset SinOdio-LATAM
- ✅ Mejora significativa en hate speech sutil
v1 (Octubre 2025)
- ✅ Primera versión pública
- ✅ F1 0.66, Accuracy 78%
- Downloads last month
- 25
Dataset used to train antonn-dromundo/SinOdio-BETO-HateSpeech-Detector-v3
Space using antonn-dromundo/SinOdio-BETO-HateSpeech-Detector-v3 1
Evaluation results
- F1 Scoreself-reported0.870
- Accuracyself-reported0.918
- Recallself-reported0.910
- Precisionself-reported0.833