cardiffnlp/twitter-roberta-base-sentiment
cardiffnlp
Clasificación de texto
Este es un modelo roBERTa-base entrenado en ~58M tweets y ajustado para análisis de sentimiento con el benchmark TweetEval. Este modelo es adecuado para inglés (para un modelo multilingüe similar, vea XLM-T). Artículo de referencia: TweetEval (Conclusiones de EMNLP 2020). Repositorio Git: Repositorio oficial de TweetEval.
Como usar
Ejemplo de clasificación
from transformers import AutoModelForSequenceClassification
from transformers import TFAutoModelForSequenceClassification
from transformers import AutoTokenizer
import numpy as np
from scipy.special import softmax
import csv
import urllib.request
# Preprocesar texto (marcadores de posición de nombre 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 = 'sentiment'
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 = 'Good night 😊'
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) positivo 0.8466
2) neutral 0.1458
3) negativo 0.0076
Funcionalidades
- Clasificación de Texto
- Transformers
- PyTorch
- TensorFlow
- JAX
- roberta
- tweet_eval
- Compatible con AutoTrain
- Compatibilidad con Puntos de Inferencia
Casos de uso
- Análisis de Sentimiento
- Detección de Emojis
- Clasificación de Emoción
- Detección de Odio
- Identificación de Ironía
- Detección de Contenido Ofensivo
- Análisis de Postura en temas como aborto, ateísmo, cambio climático, feminismo y Hillary Clinton