Create README.md
Browse files
README.md
ADDED
@@ -0,0 +1,109 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
---
|
2 |
+
language:
|
3 |
+
- zh
|
4 |
+
- en
|
5 |
+
library_name: transformers
|
6 |
+
pipeline_tag: text2text-generation
|
7 |
+
datasets:
|
8 |
+
- Yaxin/SemEval2016Task5NLTK
|
9 |
+
metrics:
|
10 |
+
- yuyijiong/quad_match_score
|
11 |
+
---
|
12 |
+
yuyijiong/T5-large-sentiment-analysis-Chinese的改进版,增加更多任务,使用chatgpt生成部分数据\
|
13 |
+
在多个中英文情感分析数据集上微调得到 \
|
14 |
+
输出格式为
|
15 |
+
```
|
16 |
+
'对象1 | 观点1 | 方面1 | 情感极性1 & 对象2 | 观点2 | 方面2 | 情感极性2 ......'
|
17 |
+
```
|
18 |
+
|
19 |
+
可以使用yuyijiong/quad_match_score评估指标进行评估
|
20 |
+
```python
|
21 |
+
import evaluate
|
22 |
+
module = evaluate.load("yuyijiong/quad_match_score")
|
23 |
+
predictions=["food | good | food#taste | pos"]
|
24 |
+
references=["food | good | food#taste | pos & service | bad | service#general | neg"]
|
25 |
+
result=module.compute(predictions=predictions, references=references)
|
26 |
+
print(result)
|
27 |
+
```
|
28 |
+
|
29 |
+
支持以下情感分析任务
|
30 |
+
```
|
31 |
+
["四元组(对象 | 观点 | 方面 | 极性)",
|
32 |
+
'二元组(对象 | 观点)',
|
33 |
+
'三元组(对象 | 观点 | 方面)',
|
34 |
+
'三元组(对象 | 观点 | 极性)',
|
35 |
+
'三元组(对象 | 方面 | 极性)',
|
36 |
+
'二元组(方面 | 极性)',
|
37 |
+
'二元组(观点 | 极性)',
|
38 |
+
'单元素(极性)']
|
39 |
+
```
|
40 |
+
|
41 |
+
可以增加额外条件来控制答案的生成,例如:
|
42 |
+
|
43 |
+
答案风格控制,希望抽取的观点为整句话or缩减为几个词:\
|
44 |
+
(观点尽量短)\
|
45 |
+
(观点可以较长)\
|
46 |
+
(对较长观点进行概括) 注意此条件可能使答案中出现与原文不同的词
|
47 |
+
|
48 |
+
可以对指定的方面做情感分析:
|
49 |
+
(方面选项:商品/物流/商家/平台)
|
50 |
+
|
51 |
+
情感对象target可能为null,表示文本中未明确给出
|
52 |
+
可以允许模型自动猜测为null的对象:
|
53 |
+
(补全null)
|
54 |
+
|
55 |
+
support the following sentiment analysis tasks
|
56 |
+
```
|
57 |
+
["quadruples (target | opinion | aspect | polarity)",
|
58 |
+
"quadruples (target | opinion | aspect | polarity)",
|
59 |
+
'pairs (target | opinion)',
|
60 |
+
'triples (target | opinion | aspect)',
|
61 |
+
'triples (target | opinion | polarity)',
|
62 |
+
'triples (target | aspect | polarity)',
|
63 |
+
'pairs (aspect | polarity)',
|
64 |
+
'pairs (target | polarity)',
|
65 |
+
'pairs (opinion | polarity)',
|
66 |
+
'single (polarity)']
|
67 |
+
```
|
68 |
+
|
69 |
+
|
70 |
+
使用方法:
|
71 |
+
Usage
|
72 |
+
```python
|
73 |
+
import torch
|
74 |
+
from transformers import T5Tokenizer, AutoModelForSeq2SeqLM
|
75 |
+
|
76 |
+
tokenizer = T5Tokenizer.from_pretrained("yuyijiong/T5-large-sentiment-analysis-Chinese-MultiTask")
|
77 |
+
model = AutoModelForSeq2SeqLM.from_pretrained("yuyijiong/T5-large-sentiment-analysis-Chinese-MultiTask", device_map="auto")
|
78 |
+
generation_config=GenerationConfig.from_pretrained("yuyijiong/T5-large-sentiment-analysis-Chinese-MultiTask")
|
79 |
+
text = '情感四元组(对象 | 观点 | 方面 | 极性)抽取任务(观点可以较长): [个头大、口感不错,就是个别坏了的或者有烂掉口子刻意用泥土封着,这样做不好。]'
|
80 |
+
input_ids = tokenizer(text,return_tensors="pt", padding=True)['input_ids'].cuda(0)
|
81 |
+
with torch.no_grad():
|
82 |
+
output = model.generate(input_ids=input_ids,generation_config=generation_config)
|
83 |
+
output_str = tokenizer.batch_decode(output, skip_special_tokens=True)
|
84 |
+
print(output_str)
|
85 |
+
```
|
86 |
+
|
87 |
+
用法示例
|
88 |
+
```
|
89 |
+
Q:情感四元组(对象 | 观点 | 方面 | 极性)抽取任务(观点可以较长): [个头大、口感不错,就是个别坏了的或者有烂掉口子刻意用泥土封着,这样做不好。]
|
90 |
+
A:个头 | 大 | 商品#大小 | 积极 & 口感 | 不错 | 商品#口感 | 积极 & null | 个别坏了的或者有烂掉口子刻意用泥土封着,这样做不好 | 商品#新鲜程度 | 消极
|
91 |
+
|
92 |
+
Q:情感四元组(对象 | 观点 | 方面 | 极性)抽取任务(观点可以较长,补全null): [个头大、口感不错,就是个别坏了的或者有烂掉口子刻意用泥土封着,这样做不好。]
|
93 |
+
A:个头 | 大 | 商品#大小 | 积极 & 口感 | 不错 | 商品#口感 | 积极 & null (个别) | 有烂掉口子刻意用泥土封着,这样做不好 | 商品#新鲜程度 | 消极
|
94 |
+
|
95 |
+
Q:情感四元组(对象 | 观点 | 方面 | 极性)抽取任务(观点尽量短): [个头大、口感不错,就是个别坏了的或者有烂掉口子刻意用泥土封着,这样做不好。]
|
96 |
+
A:个头 | 大 | 商品#大小 | 积极 & 口感 | 不错 | 商品#口感 | 积极
|
97 |
+
|
98 |
+
Q:情感三元组(对象 | 观点 | 极性)抽取任务(观点可以较长,补全null): [个头大、口感不错,就是个别坏了的或者有烂掉口子刻意用泥土封着,这样做不好。]
|
99 |
+
A:个头 | 大 | 积极 & 口感 | 不错 | 积极 & null (花生) | 个别坏了的或者有烂掉口子刻意用泥土封着,这样做不好 | 消极
|
100 |
+
|
101 |
+
Q:判断以下评论的情感极性: [个头大、口感不错,就是个别坏了的或者有烂掉口子刻意用泥土封着,这样做不好。]
|
102 |
+
A:中性
|
103 |
+
|
104 |
+
Q:情感二元组(方面 | 极性)抽取任务(方面选项: 价格#性价比/价格#折扣/价格#水平/食品#外观/食物#分量/食物#味道/食物#推荐): [个头大、口感不错,就是个别坏了的或者有烂掉口子刻意用泥土封着,这样做不好。]
|
105 |
+
A:食物#分量 | 积极 & 食物#味道 | 中性
|
106 |
+
|
107 |
+
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 .]
|
108 |
+
A:hot dogs | good | food#quality | pos & pork croquette sandwich | fantastic | food#quality | pos & bun | perfect | food#quality | pos
|
109 |
+
```
|