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

Recibe las últimas noticias y actualizaciones sobre el mundo de IA directamente en tu bandeja de entrada.