语言:
标签:
注:本模型及模型卡片基于针对情感分析微调的XLM-T模型
用于情感分析的twitter-XLM-roBERTa-base模型
这是一个基于XLM-roBERTa-base架构的模型,在约1.98亿条推文上预训练后,针对西班牙语情感分析任务进行微调。本模型曾提交至IberLEF 2021会议的EmoEvalEs竞赛,该任务要求将西班牙语推文分类为七种情绪:愤怒、厌恶、恐惧、快乐、悲伤、惊讶及其他。我们以71.70%的宏观平均F1分数获得竞赛第一名。
from transformers import pipeline
model_path = "daveni/twitter-xlm-roberta-emotion-es"
emotion_analysis = pipeline("text-classification", framework="pt", model=model_path, tokenizer=model_path)
emotion_analysis("爱因斯坦说过:宇宙中只有两种无限的事物,宇宙本身和推特上该死的比特币广告。快停下啊混蛋啊啊啊我要死了")
[{'label': 'anger', 'score': 0.48307016491889954}]
完整分类示例
from transformers import AutoModelForSequenceClassification
from transformers import AutoTokenizer, AutoConfig
import numpy as np
from scipy.special import softmax
def preprocess(text):
new_text = []
for t in text.split(" "):
t = '@用户' 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_path = "daveni/twitter-xlm-roberta-emotion-es"
tokenizer = AutoTokenizer.from_pretrained(model_path)
config = AutoConfig.from_pretrained(model_path)
model = AutoModelForSequenceClassification.from_pretrained(model_path)
text = "今天真是发布视频的好天气,对吧?这次我们频道要探讨一个前所未有的主题。"
text = preprocess(text)
print(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 = config.id2label[ranking[i]]
s = scores[ranking[i]]
print(f"{i+1}) {l} {np.round(float(s), 4)}")
输出结果:
今天真是发布视频的好天气,对吧?这次我们频道要探讨一个前所未有的主题。
1) joy 0.7887
2) others 0.1679
3) surprise 0.0152
4) sadness 0.0145
5) anger 0.0077
6) disgust 0.0033
7) fear 0.0027
局限性及偏差
- 微调数据集存在类别不平衡问题,近半数样本属于其他类别,可能导致模型对该类别的预测存在偏差
训练数据
预训练权重与cardiffnlp发布的原始模型完全一致,微调使用EmoEvalEs数据集
引用信息
@inproceedings{vera2021gsi,
title={GSI-UPM在IberLEF2021:通过微调XLM-RoBERTa语言模型分析西班牙推文情感},
author={Vera, D and Araque, O and Iglesias, CA},
booktitle={伊比利亚语言评估论坛论文集(IberLEF 2021)},
year={2021}
}