cardiffnlp / twitter-xlm-roberta-base-sentiment
cardiffnlp
Clasificación de texto
Este es un modelo multilingüe XLM-roBERTa-base entrenado en aproximadamente 198 millones de tuits y ajustado para el análisis de sentimientos. El modelo fue afinado para el análisis de sentimientos en 8 idiomas (Ar, En, Fr, De, Hi, It, Sp, Pt) pero se puede usar en más idiomas (ver el artículo para más detalles). Este modelo ha sido integrado en la biblioteca TweetNLP.
Como usar
Ejemplo de Pipeline
from transformers import pipeline
model_path = "cardiffnlp/twitter-xlm-roberta-base-sentiment"
sentiment_task = pipeline("sentiment-analysis", model=model_path, tokenizer=model_path)
sentiment_task("T'estimo!")
# Resultado: [{'label': 'Positive', 'score': 0.6600581407546997}]
Ejemplo completo de clasificación
from transformers import AutoModelForSequenceClassification
from transformers import TFAutoModelForSequenceClassification
from transformers import AutoTokenizer, AutoConfig
import numpy as np
from scipy.special import softmax
# Procesamiento del texto (placeholders de nombre de usuario y enlace)
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)
MODEL = f"cardiffnlp/twitter-xlm-roberta-base-sentiment"
tokenizer = AutoTokenizer.from_pretrained(MODEL)
config = AutoConfig.from_pretrained(MODEL)
# 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)
# TF
# model = TFAutoModelForSequenceClassification.from_pretrained(MODEL)
# model.save_pretrained(MODEL)
# text = "Good night 😊"
# encoded_input = tokenizer(text, return_tensors='tf')
# output = model(encoded_input)
# scores = output[0][0].numpy()
# scores = softmax(scores)
# Imprimir etiquetas y puntuaciones
ranking = np.argsort(scores)
ranking = ranking[::-1]
for i in range(scores.shape[0]):
l = config.id2label[ranking[i]]
s = scores[ranking[i]]
print(f"{i+1}) {l} {np.round(float(s), 4)}")
# Resultado:
# 1) Positive 0.7673
# 2) Neutral 0.2015
# 3) Negative 0.0313
Funcionalidades
- Clasificación de texto
- Multilingüe
- Compatible con PyTorch
- Compatible con TensorFlow
- Compatible con AutoTrain
- Compatible con Endpoints de inferencia
Casos de uso
- Análisis de sentimientos en redes sociales
- Clasificación de emociones en texto multilingüe
- Procesamiento de lenguaje natural en tuits