cardiffnlp/twitter-roberta-base-hate

cardiffnlp
Clasificación de texto

Este es un modelo roBERTa-base entrenado en aproximadamente 58 millones de tweets y afinado para la detección de discurso de odio con el benchmark TweetEval. Este modelo está especializado en detectar discurso de odio contra mujeres e inmigrantes.

Como usar

from transformers import AutoModelForSequenceClassification
from transformers import AutoTokenizer
import numpy as np
from scipy.special import softmax
import csv
import urllib.request

# Preprocesar texto (placeholders de nombres de usuario y enlaces)
def preprocess(text):
    new_text = []
    for t in text.split(' '):
        t = '@user' if t.startswith('@') and len(t) > 1 else t
        t = 'http' if t.startswith('http') else t
        new_text.append(t)
    return ' '.join(new_text)

# Tareas:
# emoji, emoción, odio, ironía, ofensivo, sentimiento
# postura/aborto, postura/ateísmo, postura/clima, postura/feminista, postura/hillary
task = 'hate'
MODEL = f'cardiffnlp/twitter-roberta-base-{task}'

tokenizer = AutoTokenizer.from_pretrained(MODEL)

# descargar mapeo de etiquetas
labels = []
mapping_link = f'https://raw.githubusercontent.com/cardiffnlp/tweeteval/main/datasets/{task}/mapping.txt'
with urllib.request.urlopen(mapping_link) as f:
    html = f.read().decode('utf-8').split('\n')
    csvreader = csv.reader(html, delimiter='\t')
    labels = [row[1] for row in csvreader if len(row) > 1]

# PT
model = AutoModelForSequenceClassification.from_pretrained(MODEL)
model.save_pretrained(MODEL)

text = 'Buenas noches 😊'
text = preprocess(text)
encoded_input = tokenizer(text, return_tensors='pt')
output = model(**encoded_input)
scores = output[0][0].detach().numpy()
scores = softmax(scores)

ranking = np.argsort(scores)
ranking = ranking[::-1]
for i in range(scores.shape[0]):
    l = labels[ranking[i]]
    s = scores[ranking[i]]
    print(f'{i + 1}) {l} {np.round(float(s), 4)}')

# Resultado:
# 1) not-hate 0.9168
# 2) hate 0.0832

Funcionalidades

Clasificación de texto
Basado en Transformers
Compatible con PyTorch
Compatible con TensorFlow
Compatible con JAX
Modelo roBERTa
Compatible con AutoTrain
Compatible con Puntos de Inferencia

Casos de uso

Detección de discurso de odio
Clasificación de tweets
Detección de odio contra mujeres e inmigrantes