🚀 中文多任务情感分析模型
本项目基于transformers
库构建,是一个支持多种格式情感分析的模型。它由IDEA-CCNL/Randeng-T5-784M-MultiTask-Chinese在多个中英文情感分析数据集上微调得到,可输出多种格式的情感分析结果,并支持通过额外条件控制答案生成。
🚀 快速开始
安装依赖
确保你已经安装了transformers
和evaluate
库,若未安装,可使用以下命令进行安装:
pip install transformers evaluate
运行示例代码
以下是一个使用该模型进行情感分析评估的示例代码:
import evaluate
module = evaluate.load("yuyijiong/quad_match_score")
predictions=["food | good | food#taste | pos"]
references=["food | good | food#taste | pos & service | bad | service#general | neg"]
result=module.compute(predictions=predictions, references=references)
print(result)
✨ 主要特性
- 多格式输出:支持输出四元组、二元组、三元组等多种格式的情感分析结果。
- 额外条件控制:可以通过额外条件控制答案的生成,如答案风格控制、指定方面的情感分析、补全null对象等。
- 多语言支持:在多个中英文情感分析数据集上微调,支持中英文情感分析任务。
📦 安装指南
你可以通过以下命令安装所需的依赖库:
pip install transformers evaluate
💻 使用示例
基础用法
import torch
from transformers import T5Tokenizer, AutoModelForSeq2SeqLM
tokenizer = T5Tokenizer.from_pretrained("yuyijiong/Randeng-T5-large-sentiment-analysis-Chinese")
model = AutoModelForSeq2SeqLM.from_pretrained("yuyijiong/Randeng-T5-large-sentiment-analysis-Chinese", device_map="auto")
generation_config=GenerationConfig.from_pretrained("yuyijiong/Randeng-T5-large-sentiment-analysis-Chinese")
text = '情感四元组(对象 | 观点 | 方面 | 极性)抽取任务(观点可以较长): [个头大、口感不错,就是个别坏了的或者有烂掉口子刻意用泥土封着,这样做不好。]'
input_ids = tokenizer(text,return_tensors="pt", padding=True)['input_ids'].cuda(0)
with torch.no_grad():
output = model.generate(input_ids=input_ids,generation_config=generation_config)
output_str = tokenizer.batch_decode(output, skip_special_tokens=True)
print(output_str)
高级用法
不同任务示例
["四元组(对象 | 观点 | 方面 | 极性)",
'二元组(对象 | 观点)',
'三元组(对象 | 观点 | 方面)',
'三元组(对象 | 观点 | 极性)',
'三元组(对象 | 方面 | 极性)',
'二元组(方面 | 极性)',
'二元组(观点 | 极性)',
'单元素(极性)']
额外条件控制示例
- 答案风格控制
- 指定方面的情感分析
- 补全null对象
具体使用示例
Q:情感四元组(对象 | 观点 | 方面 | 极性)抽取任务(观点可以较长): [个头大、口感不错,就是个别坏了的或者有烂掉口子刻意用泥土封着,这样做不好。]
A:个头 | 大 | 商品#大小 | 积极 & 口感 | 不错 | 商品#口感 | 积极 & null | 个别坏了的或者有烂掉口子刻意用泥土封着,这样做不好 | 商品#新鲜程度 | 消极
Q:情感四元组(对象 | 观点 | 方面 | 极性)抽取任务(观点可以较长,补全null): [个头大、口感不错,就是个别坏了的或者有烂掉口子刻意用泥土封着,这样做不好。]
A:个头 | 大 | 商品#大小 | 积极 & 口感 | 不错 | 商品#口感 | 积极 & null (个别) | 有烂掉口子刻意用泥土封着,这样做不好 | 商品#新鲜程度 | 消极
Q:情感四元组(对象 | 观点 | 方面 | 极性)抽取任务(观点尽量短): [个头大、口感不错,就是个别坏了的或者有烂掉口子刻意用泥土封着,这样做不好。]
A:个头 | 大 | 商品#大小 | 积极 & 口感 | 不错 | 商品#口感 | 积极
Q:情感三元组(对象 | 观点 | 极性)抽取任务(观点可以较长,补全null): [个头大、口感不错,就是个别坏了的或者有烂掉口子刻意用泥土封着,这样做不好。]
A:个头 | 大 | 积极 & 口感 | 不错 | 积极 & null (花生) | 个别坏了的或者有烂掉口子刻意用泥土封着,这样做不好 | 消极
Q:判断以下评论的情感极性: [个头大、口感不错,就是个别坏了的或者有烂掉口子刻意用泥土封着,这样做不好。]
A:中性
Q:情感二元组(方面 | 极性)抽取任务(方面选项: 价格#性价比/价格#折扣/价格#水平/食品#外观/食物#分量/食物#味道/食物#推荐): [个头大、口感不错,就是个别坏了的或者有烂掉口子刻意用泥土封着,这样做不好。]
A:食物#分量 | 积极 & 食物#味道 | 中性
Q:sentiment quadruples (target | opinion | aspect | polarity) extraction task : [The hot dogs are good , yes , but the reason to get over here is the fantastic pork croquette sandwich , perfect on its supermarket squishy bun .]
A:hot dogs | good | food#quality | pos & pork croquette sandwich | fantastic | food#quality | pos & bun | perfect | food#quality | pos
📚 详细文档
输出格式
输出格式为
'对象1 | 观点1 | 方面1 | 情感极性1 & 对象2 | 观点2 | 方面2 | 情感极性2 ......'
评估指标
可以使用yuyijiong/quad_match_score
评估指标进行评估。
支持的情感分析任务
["四元组(对象 | 观点 | 方面 | 极性)",
'二元组(对象 | 观点)',
'三元组(对象 | 观点 | 方面)',
'三元组(对象 | 观点 | 极性)',
'三元组(对象 | 方面 | 极性)',
'二元组(方面 | 极性)',
'二元组(观点 | 极性)',
'单元素(极性)']
额外条件说明
- 答案风格控制:可以控制抽取的观点为整句话或缩减为几个词,如(观点尽量短)、(观点可以较长)。
- 指定方面的情感分析:可以对指定的方面做情感分析,如(方面选项:商品/物流/商家/平台)。
- 补全null对象:情感对象
target
可能为null
,表示文本中未明确给出,可以允许模型自动猜测为null
的对象,如(补全null)。
🔧 技术细节
本模型基于IDEA-CCNL/Randeng-T5-784M-MultiTask-Chinese在多个中英文情感分析数据集上微调得到,使用transformers
库进行模型的加载和推理,使用evaluate
库进行评估指标的计算。
📄 许可证
文档中未提及许可证信息。若有相关信息,请补充后可进一步完善此部分内容。