# CCKS 2021答非所问 白[MASK] 队 训练复现代码
#### 此文件夹为训练文件夹,运行此文件夹中代码,可复现模型。
```
复现所需python库:
pytorch
transformers
tqdm
sklearn
pandas
numpy
```
想要训练,可运行run.sh或按本readme具体代码文件一次运行。
### 额外开源数据
##### [Chinese-medical-dialogue-data-master](https://github.com/Toyhom/Chinese-medical-dialogue-data)
### 开源预训练模型
- [hfl/chinese-roberta-wwm-ext]([hfl/chinese-roberta-wwm-ext · Hugging Face](https://huggingface.co/hfl/chinese-roberta-wwm-ext))
- [hfl/chinese-macbert-large]([hfl/chinese-macbert-large · Hugging Face](https://huggingface.co/hfl/chinese-macbert-large))
- [luhua/chinese_pretrain_mrc_macbert_large]([luhua/chinese_pretrain_mrc_macbert_large · Hugging Face](https://huggingface.co/luhua/chinese_pretrain_mrc_macbert_large))
## 具体代码文件及介绍
### 数据处理
1. 读取训练集,并转换为csv文件。
2. 读取开源数据,并转换为csv文件
`python read.py`
`python read_other.py`
3. 从训练集标注为’回答正确‘的样本中,依据编辑距离,选取其余样本中最相近(但不完全相同)问句的答句作为负样本,实现数据增广,下称(编辑距离扩增样本)。
`python edit_distance.py`
### 训练模型
##### 训练参数
| 文本最大长度 | 学习率 | 梯度累积 | batchsize_size | 权重衰减 |
| ------------ | ------ | -------- | -------------- | -------- |
| 300 | 8e-6 | 3 | 10 | 2e-4 |
1. main1.py中使用mrcmac_large预训练模型,并使用fgm对抗学习,训练出一个模型,并在最后使用1e-6的学习率对划分的valid集一并训练。训练出的模型保存为1_mrcmac_fgm.pt
2. main2.py中使用roberta_large预训练模型,并使用fgm对抗学习,训练出一个模型,并在最后使用1e-6的学习率对划分的valid集一并训练。训练出的模型保存为2_ro_fgm.pt
3. main3.py中使用macbert_large预训练模型,并使用fgm对抗学习,训练出一个模型,并在最后使用1e-6的学习率对划分的valid集一并训练。训练出的模型保存为3_mac_fgm.pt
4. main4.py中使用mrcmac_large预训练模型,并使用fgm+rdrop,训练出一个模型,并在最后使用1e-6的学习率对划分的valid集一并训练。训练出的模型保存为4_mrc_fgm_rdrop.pt
5. main5.py中使用mrcmac_large预训练模型,并使用fgm,同时使用编辑距离扩增样本训练出一个模型,并在最后使用1e-6的学习率对划分的valid集一并训练。训练出的模型保存为5_mrcmac_fgm_kz.pt
```
python main1.py
python main2.py
python main3.py
python main4.py
python main5.py
```
### 使用开源数据辅助查找易错样本
我们对[Chinese-medical-dialogue-data-master](https://github.com/Toyhom/Chinese-medical-dialogue-data)数据进行伪标签处理,并仅使用此伪标签数据训练模型。
`python prediction.py` `python train_other.py`
之后使用此伪标签模型,对train集标注,并从中找到train集容易错的样本,作为error集。
`python prediction_train.py`
#### 使用易错样本辅助训练模型
将error集一并加入训练
```
python main6.py
python main7.py
python main8.py
```
1. main6.py中使用mrcmac_large预训练模型,并使用fgm对抗学习,训练出一个模型,在除第一轮外使用error集训练模型,并在最后使用1e-6的学习率对划分的valid集一并训练。训练出的模型保存为6_mrcmac_error_fgm.pt
2. main7.py中使用mrcmac_large预训练模型,并使用fgm对抗学习,训练出一个模型,在每一轮都使用error集,并在最后使用1e-6的学习率对划分的valid集一并训练。训练出的模型保存为7_mrcmac_error_fgm.pt
3. main8.py中使用mrcmac_large预训练模型,并使用fgm对抗学习,训练出一个模型,首轮使用编辑距离扩增样本,除此之外使用error集训练数据。并在最后使用1e-6的学习率对划分的valid集一并训练。训练出的模型保存为8_mrcmac_error_fgm.pt
### 在A榜数据上微调
##### 训练参数
| 文本最大长度 | 学习率 | 梯度累积 | batchsize_size | 权重衰减 |
| ------------ | ------ | -------- | -------------- | -------- |
| 300 | 2e-6 | 3 | 10 | 2e-4 |
此处为防止较大学习率造成模型遗忘,因此使用较小学习率微调模型
对A榜进行预测,并将最高分数据给原模型训练。
```
python testA.py
python train_testA.py
```
### 预测B榜
代码与预测代码相同
没有合适的资源?快使用搜索试试~ 我知道了~
CCKS2021答非所问竞赛冠军方案.zip
共23个文件
py:16个
md:2个
pdf:2个
需积分: 5 0 下载量 177 浏览量
2024-01-14
12:59:36
上传
评论
收藏 10.53MB ZIP 举报
温馨提示
Java是一种高性能、跨平台的面向对象编程语言。它由Sun Microsystems(现在是Oracle Corporation)的James Gosling等人在1995年推出,被设计为一种简单、健壮、可移植、多线程、动态的语言。Java的主要特点和优势包括以下几个方面: 跨平台性(Write Once, Run Anywhere): Java的代码可以在不同的平台上运行,只需编写一次代码,就可以在任何支持Java的设备上执行。这得益于Java虚拟机(JVM),它充当了代码和底层硬件之间的中介。 面向对象: Java是一种纯粹的面向对象编程语言,支持封装、继承和多态等面向对象的概念。这使得Java编写的代码更加模块化、可维护和可扩展。 多线程支持: Java内置了对多线程的支持,允许程序同时执行多个任务。这对于开发需要高并发性能的应用程序(如服务器端应用、网络应用等)非常重要。 自动内存管理(垃圾回收): Java具有自动内存管理机制,通过垃圾回收器自动回收不再使用的对象,使得开发者不需要手动管理内存,减轻了程序员的负担,同时也减少了内存泄漏的风险。
资源推荐
资源详情
资源评论
收起资源包目录
CCKS2021答非所问竞赛冠军方案.zip (23个子文件)
SJT-code
desc.pdf 594KB
答非所问现场报告.pptx 5.2MB
result.txt 5.58MB
训练
read.py 945B
train_other.py 14KB
read_other.py 2KB
main2.py 15KB
main3.py 15KB
prediction_train.py 3KB
edit_distance.py 1KB
main7.py 15KB
main4.py 16KB
main8.py 15KB
main1.py 15KB
prediction.py 4KB
testA.py 4KB
run.sh 310B
main6.py 15KB
train_testA.py 15KB
Readme.md 5KB
main5.py 15KB
答非所问poster.pdf 3.25MB
Readme.md 1KB
共 23 条
- 1
资源评论
JJJ69
- 粉丝: 6262
- 资源: 5775
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功