File size: 4,023 Bytes
bd5fb13
b2448e5
 
 
 
 
 
 
 
 
 
 
 
 
7ca5760
b2448e5
c52ceb1
63c52cf
c52ceb1
fc27f69
 
bf7e619
63c52cf
bf7e619
 
 
248014f
e4c44ea
cc6c14e
 
63c52cf
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
248014f
 
 
 
 
 
 
 
8ab07b2
248014f
 
 
 
 
 
 
 
 
 
 
 
 
 
8df8991
 
 
 
 
 
 
 
 
 
 
 
 
 
 
62109f1
 
83070d8
 
 
 
 
 
 
d896ff7
 
 
 
 
 
 
62109f1
ed694fc
62109f1
 
 
 
 
ed694fc
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
---
language: 
- zh
tags:
- t5
- pytorch
- prompt
- zh
- Text2Text-Generation
license: "apache-2.0"
widget:
- text: "宫颈癌的早期会有哪些危险信号"
- text: "夏季如何进行饮食调养养生?"
---

中文版对话机器人

在1000w+问答和对话数据上做有监督预训练

## 注意事项

1、请使用下面方式调用模型输出结果,Hosted inference API的结果因为我无法修改后台推理程序,不能保证模型输出效果,只是举了两个例子展示。

2、模型采用top p的解码方式,每次运行可能结果都略微有些不同。

3、目前模型还是初步迭代完1epoch,数据种类数据量现阶段算是比较少模型效果的话勉勉强强,后续还会加入更多数据进行迭代优化,到时候会更新。


## 模型推理

Install package:
```
pip install transformers 
```

```python
import os
os.environ["CUDA_VISIBLE_DEVICES"] = '-1'
import torch
from torch import cuda
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
tokenizer = AutoTokenizer.from_pretrained("mxmax/Chinese_Chat_T5_Base")
model = AutoModelForSeq2SeqLM.from_pretrained("mxmax/Chinese_Chat_T5_Base") 
device = 'cuda' if cuda.is_available() else 'cpu'
model_trained.to(device)
def postprocess(text):
  return text.replace(".", "").replace('</>','')

def answer_fn(text, sample=False, top_p=0.6):
  encoding = tokenizer(text=[text], truncation=True, padding=True, max_length=256, return_tensors="pt").to(device) 
  out = model.generate(**encoding, return_dict_in_generate=True, output_scores=False, max_length=512,temperature=0.5,do_sample=True,repetition_penalty=6.0 ,top_p=top_p)
  result = tokenizer.batch_decode(out["sequences"], skip_special_tokens=True)
  return postprocess(result[0]) 
text="宫颈癌的早期会有哪些危险信号"
result=answer_fn(text, sample=True, top_p=0.6)
print('prompt:',text)
print("result:",result)
```

## 预测示例
#### 普通百科问答
```bash
Input:
关于基金啥叫前端申购代码,后端申购代码.有啥区别.有甚么作用.
Model output:
前端申购代码: 1在基金公司网站上输入"赎回申请书(或直接到证券公司的柜台),填写“委托人及受托银行”的注册信息 2将指定金额提交给投资者 3根据提示完成操作 4确认并修改交易规则,确定是否需要转换为其他方式进行投资。
```

```bash
Input:
深圳哪家店火锅好吃?
Model output:
火锅店 地址:深圳宝安区沙井路20号(深大对面)。
```

```bash
Input:
北京有哪些景点方好玩呢推荐下
Model output:
故宫的门票是5元,如果去的话可以先到北京故宫博物院看看。
```

#### 医学领域问答
```bash
Input:
重感冒的话吃什么药
Model output:
你好,根据你的描述属于病毒感染引起的症状,需要增加营养补充维生素微量元素,易消化饮食。可以服用感冒药如复方氨酚脘胺颗粒治疗看看
```

```bash
Input:
胃癌如何筛查
Model output:
你好,胃癌的诊断标准是:1早期确诊,明确病因。2根据病史、病理类型及有无并发症等综合分析;3结合临床症状和体征进行初步判断是否为癌前病变或有肿瘤变现趋势者(如无明显变化) 4对患者的情况做进一步检查以确定治疗方案
```

```bash
Input:
甲状腺五类结节怎么办
Model output:
甲状腺结节是一种常见的良性肿瘤,一般无症状,但有恶变的可能建议您到医院做一下B超检查和胸部X线片等进一步明确诊断后对症治疗。
```

```bash
Input:
宫颈癌的早期会有哪些危险信号
Model output:
你好,宫颈癌早期症状:1、白带增多、粘稠;阴道分泌物多或呈脓性。2、有异味及血丝;2、月经量少;3、腰酸背痛;4、乳房胀满;5、乳头溢液;6、下腹坠涨;7、肛门疼痛等
```

## 引用
```bash
@max{mxmax,
  title={chinese_chat: Chinese_Chat_T5_Base},
  author={Ma Xin},
  year={2023},
  howpublished={\url{https://huggingface.co/mxmax/Chinese_Chat_T5_Base}},
}
```