Downloads · 30 days
10
3% of all-time downloads
gefero/replicate-HatEval-robertuito-base-uncased
replicate-HatEval-robertuito-base-uncased is a text classification model from gefero. Use it when you need a label for a piece of text. It is set up for transformers. The card lists the license as cc-by-nc-4.0.
Réplica del experimento de detección de discurso de odio en español de Pérez et al. (2022): fine-tuning de RoBERTuito sobre HatEval 2019 (SemEval-2019 Task 5), Subtarea A, español, con las particiones oficiales del sh…
Downloads · 30 days
10
3% of all-time downloads
All-time downloads
297
Public
Parameters
109M
435 MB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors435 MB · 100%
From the Hugging Face model README
Réplica del experimento de detección de discurso de odio en español de Pérez et al. (2022): fine-tuning de RoBERTuito sobre HatEval 2019 (SemEval-2019 Task 5), Subtarea A, español, con las particiones oficiales del shared task y 10 corridas con distintas semillas.
| Macro-F1 (test oficial ES) | |
|---|---|
| Reportado en el paper (media de 10 corridas) | 0.801 |
| Esta réplica (media de 10 corridas) | 0.8018 ± 0.0108 |
Modelo con fines pedagógicos. Fue entrenado como ejemplo de fine-tuning y de replicación de resultados para un curso de posgrado. No está pensado para moderación de contenido ni para ningún uso en producción. Ver Sesgos, riesgos y limitaciones.
pysentimiento/robertuito-base-uncasedClasificación binaria de tuits en español como Hateful / Not hateful, siguiendo el esquema
de anotación de HatEval: odio dirigido a mujeres o personas migrantes.
Cualquier uso debería incluir supervisión humana, evaluación previa sobre datos de la población objetivo, y análisis de errores desagregado por subgrupo. El umbral de decisión es una elección de despliegue, no una propiedad del modelo: dado el desbalance sistemático entre precisión y recall, conviene ajustarlo según el costo relativo de cada tipo de error.
from transformers import pipeline
from pysentimiento.preprocessing import preprocess_tweet
pipe = pipeline("text-classification",
model="[COMPLETAR: usuario]/replicate-HatEval-robertuito-base-uncased")
texto = "Andate a tu país"
pipe(preprocess_tweet(texto, lang="es"))
Importante. Este modelo requiere el preprocesamiento de RoBERTuito. Sin él, la entrada no coincide con el formato de entrenamiento y el rendimiento cae. Ver Preprocesamiento.
HatEval 2019, Subtarea A, subconjunto en español, particiones oficiales del shared task
(valeriobasile/HatEval en el Hub, filtrando language == "es").
| Partición | Instancias | % clase Hateful |
|---|---|---|
| Entrenamiento | 4.500 | 41.3% |
| Validación | 500 | 44.4% |
| Test | 1.599 | 41.3% |
Etiqueta HS: 1 si el tuit contiene discurso de odio contra mujeres o personas migrantes, 0 en
caso contrario. El test oficial tiene 1.600 instancias; la copia del Hub contiene 1.599.
Se aplicó pysentimiento.preprocessing.preprocess_tweet(texto, lang="es") antes de tokenizar,
que es la normalización usada durante el preentrenamiento de RoBERTuito:
@usuariohashtag seguido del texto segmentadoemojiTokenización posterior con truncado y padding a max_length=128.
| Learning rate | 2e-5, schedule lineal |
| Warmup | 10% de los pasos (141 de 1.410) |
| Batch size (train / eval) | 16 / 64 |
| Épocas | 5 (1.410 pasos de optimización) |
| Weight decay | 0.01 |
| Precisión | fp16 mixta |
| Optimizador | AdamW (default de Trainer) |
| Selección de época | Mejor macro-F1 en validación (load_best_model_at_end) |
| Semillas | 0, 1, 7, 13, 42, 100, 123, 2024, 31337, 65535 |
| Framework | transformers v5, PyTorch |
Difiere de la receta del paper original, que usa learning rate 5e-5. El resto (5 épocas, warmup del 10%, selección del mejor checkpoint por época según la métrica de la tarea) coincide.
La métrica oficial de SemEval-2019 Task 5 es macro-F1, elegida porque la accuracy premia al clasificador trivial de clase mayoritaria en un corpus desbalanceado. Se reportan además el F1, la precisión y el recall sobre la clase positiva.
| Semilla | Dev macro-F1 | Test macro-F1 | Accuracy | F1 (odio) | Precisión | Recall |
|---|---|---|---|---|---|---|
| 0 | 0.8889 | 0.8078 | 0.8111 | 0.7824 | 0.7459 | 0.8227 |
| 1 | 0.8766 | 0.8074 | 0.8105 | 0.7828 | 0.7429 | 0.8273 |
| 7 | 0.8765 | 0.8127 | 0.8161 | 0.7873 | 0.7535 | 0.8242 |
| 13 | 0.8791 | 0.8002 | 0.8024 | 0.7796 | 0.7222 | 0.8470 |
| 42 | 0.8891 | 0.8066 | 0.8093 | 0.7841 | 0.7357 | 0.8394 |
| 100 | 0.8893 | 0.7975 | 0.7992 | 0.7788 | 0.7143 | 0.8561 |
| 123 | 0.8897 | 0.7970 | 0.7980 | 0.7825 | 0.7042 | 0.8803 |
| 2024 | 0.8910 | 0.8136 | 0.8161 | 0.7921 | 0.7427 | 0.8485 |
| 31337 | 0.8812 | 0.7989 | 0.8011 | 0.7776 | 0.7221 | 0.8424 |
| 65535 | 0.8836 | 0.7765 | 0.7774 | 0.7623 | 0.6814 | 0.8652 |
La fila resaltada es el checkpoint publicado.
| Métrica | Media ± desvío | Rango |
|---|---|---|
| Macro-F1 | 0.8018 ± 0.0108 | [0.7765, 0.8136] |
| Accuracy | 0.8041 ± 0.0115 | [0.7774, 0.8161] |
| F1 (clase odio) | 0.7810 ± 0.0078 | [0.7623, 0.7921] |
| Precisión (clase odio) | 0.7265 ± 0.0222 | [0.6814, 0.7535] |
| Recall (clase odio) | 0.8453 ± 0.0185 | [0.8227, 0.8803] |
Esta es la cifra que reporta el experimento: 0.8018 ± 0.0108, no la del checkpoint publicado.
Se publica la semilla con mejor macro-F1 en validación (semilla 2024, dev 0.8910). El conjunto de test no participó de esta decisión, de modo que la cifra de test del modelo publicado (0.8136) no está sesgada por selección.
Advertencia sobre el número del modelo publicado. El test macro-F1 de esta semilla, 0.8136, es también el máximo de las 10 corridas. Es coincidencia: la correlación entre dev y test en estas 10 corridas es prácticamente nula (Pearson r = −0.02, Spearman ρ = −0.14). Elegir por dev no ayuda a conseguir un buen test, solo evita el sesgo de haber elegido por test. Nótese que el máximo en test está 1.2 puntos por encima de la media: ese es exactamente el sesgo que se habría introducido al seleccionar por test.
Todas las cifras corresponden al test oficial de HatEval en español.
| Sistema | Macro-F1 |
|---|---|
| Mejor sistema de SemEval-2019 Task 5 | 0.730 |
| BETO cased (Pérez et al. 2022, media de 10 corridas) | 0.768 |
| RoBERTuito uncased (Pérez et al. 2022, media de 10 corridas) | 0.801 |
| Esta réplica (media de 10 corridas) | 0.8018 ± 0.0108 |
La media coincide con el valor publicado hasta el tercer decimal. La réplica usa learning rate 2e-5 en lugar del 5e-5 del trabajo original, lo que sugiere que el resultado no es especialmente sensible a ese hiperparámetro en este rango.
Baselines no incluidos. Esta ficha no reporta baselines (clase mayoritaria, TF-IDF + regresión logística). Sin ellos no es posible cuantificar cuánto aporta el fine-tuning de un modelo preentrenado respecto de métodos superficiales sobre este corpus.
Se puede estimar con la calculadora de impacto de ML de Lacoste et al. (2019).
RoBERTa base preentrenado con MLM sobre unos 500 millones de tuits en español. Para esta tarea
se agrega un clasificador lineal sobre la representación del token [CLS], entrenado con
cross-entropy sobre dos clases.
Si usás este modelo, citá el modelo base y el corpus.
@inproceedings{perez2022robertuito,
title = {{RoBERTuito}: a pre-trained language model for social media text in {S}panish},
author = {P{\'e}rez, Juan Manuel and Furman, Dami{\'a}n A. and
Alonso Alemany, Laura and Luque, Franco},
booktitle = {Proceedings of the Thirteenth Language Resources and Evaluation Conference},
pages = {7235--7243},
year = {2022},
address = {Marseille, France},
publisher = {European Language Resources Association}
}
@inproceedings{basile2019semeval,
title = {{SemEval}-2019 Task 5: Multilingual Detection of Hate Speech Against
Immigrants and Women in {T}witter},
author = {Basile, Valerio and Bosco, Cristina and Fersini, Elisabetta and
Nozza, Debora and Patti, Viviana and Rangel Pardo, Francisco Manuel and
Rosso, Paolo and Sanguinetti, Manuela},
booktitle = {Proceedings of the 13th International Workshop on Semantic Evaluation},
pages = {54--63},
year = {2019},
publisher = {Association for Computational Linguistics}
}
resultados_semillas.csv — métricas completas de las 10 corridas.Germán Rosati