🛡️ SinOdio BETO: Detector de Discurso de Odio v3

Protegiendo la dignidad humana con IA

Model Dataset License


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

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:

  1. Moderación de contenido en redes sociales y plataformas
  2. Aplicaciones de citas para filtrar perfiles con contenido ofensivo
  3. Análisis académico de hate speech en español latinoamericano
  4. Herramientas educativas para concientización sobre discriminación
  5. 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?


⚖️ Consideraciones Éticas

Este modelo fue diseñado con los siguientes principios éticos:

  1. Transparencia: Documentación completa de capacidades y limitaciones
  2. No discriminación: Entrenado para detectar odio, no perpetuarlo
  3. Privacidad: No almacena ni procesa datos personales
  4. Uso responsable: Debe complementar, no reemplazar, moderación humana
  5. 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%

Construido con ❤️ por DignityAI

Protegiendo la dignidad humana, un modelo a la vez

HuggingFace Dataset

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

Dataset used to train antonn-dromundo/SinOdio-BETO-HateSpeech-Detector-v3

Space using antonn-dromundo/SinOdio-BETO-HateSpeech-Detector-v3 1

Evaluation results