examples/DPDLDA
richardlujunfeng 560e1a8c83 提交文件夹下的所有文件 2023-12-27 19:00:18 +08:00
..
deploy/predictor 提交文件夹下的所有文件 2023-12-27 19:00:18 +08:00
README.md 提交文件夹下的所有文件 2023-12-27 19:00:18 +08:00
export_model.py 提交文件夹下的所有文件 2023-12-27 19:00:18 +08:00
model.py 提交文件夹下的所有文件 2023-12-27 19:00:18 +08:00
train_classification.py 提交文件夹下的所有文件 2023-12-27 19:00:18 +08:00
utils.py 提交文件夹下的所有文件 2023-12-27 19:00:18 +08:00

README.md

数据集介绍

本项目使用了中文医学语言理解测评(Chinese Biomedical Language Understanding EvaluationCBLUE1.0 版本数据集这是国内首个面向中文医疗文本处理的多任务榜单涵盖了医学文本信息抽取实体识别、关系抽取、医学术语归一化、医学文本分类、医学句子关系判定和医学问答共5大类任务8个子任务。其数据来源分布广泛包括医学教材、电子病历、临床试验公示以及互联网用户真实查询等。该榜单一经推出便受到了学界和业界的广泛关注已逐渐发展成为检验AI系统中文医疗信息处理能力的“金标准”。

  • CMeEE中文医学命名实体识别
  • CMeIE中文医学文本实体关系抽取
  • CHIP-CDN临床术语标准化任务
  • CHIP-CTC临床试验筛选标准短文本分类
  • CHIP-STS平安医疗科技疾病问答迁移学习
  • KUAKE-QIC医疗搜索检索词意图分类
  • KUAKE-QTR医疗搜索查询词-页面标题相关性
  • KUAKE-QQR医疗搜索查询词-查询词相关性

更多信息可参考CBLUE的github

模型介绍

模型的整体结构与 ELECTRA 相似,包括生成器和判别器两部分。 而 Fine-tune 过程只用到了判别器模块,由 12 层 Transformer 网络组成。

快速开始

代码结构说明

以下是本项目主要代码结构及说明:

├── train_classification.py   # 文本分类任务训练评估
├── model.py                  # 模型的结构定义
├── utils.py                  # 数据的处理流程
├── export_model.py           # 动态图模型导出静态图参数
└── README.md

模型的具体使用在deploy/predictor文件夹下

依赖安装

pip install xlrd==1.2.0

模型训练

我们按照任务类别划分同时提供了8个任务的不同参数设置。可以运行下边的命令在训练集上进行训练并在验证集上进行验证。

训练参数设置Training setup及结果

Task epochs batch_size learning_rate max_seq_length metric results results (fp16)
CHIP-STS 4 16 3e-5 96 Macro-F1 0.88749 0.88555
CHIP-CTC 4 32 6e-5 160 Macro-F1 0.84136 0.83514
CHIP-CDN 16 256 3e-5 32 F1 0.76979 0.76489
KUAKE-QQR 2 32 6e-5 64 Accuracy 0.83865 0.84053
KUAKE-QTR 4 32 6e-5 64 Accuracy 0.69722 0.69722
KUAKE-QIC 4 32 6e-5 128 Accuracy 0.81483 0.82046
CMeEE 2 32 6e-5 128 Micro-F1 0.66120 0.66026
CMeIE 100 12 6e-5 300 Micro-F1 0.61385 0.60076

可支持配置的参数:

  • save_dir可选保存训练模型的目录默认保存在当前目录checkpoints文件夹下。
  • max_seq_length可选ELECTRA模型使用的最大序列长度最大不能超过512, 若出现显存不足请适当调低这一参数默认为128。
  • batch_size可选批处理大小请结合显存情况进行调整若出现显存不足请适当调低这一参数默认为32。
  • learning_rate可选Fine-tune的最大学习率默认为6e-5。
  • weight_decay可选控制正则项力度的参数用于防止过拟合默认为0.01。
  • epochs: 训练轮次默认为3。
  • max_steps: 最大训练步数。若训练epochs轮包含的训练步数大于该值,则达到max_steps后就提前结束。
  • valid_steps: evaluate的间隔steps数默认100。
  • save_steps: 保存checkpoints的间隔steps数默认100。
  • logging_steps: 日志打印的间隔steps数默认10。
  • warmup_proption可选学习率warmup策略的比例如果0.1则学习率会在前10%训练step的过程中从0慢慢增长到learning_rate, 而后再缓慢衰减默认为0.1。
  • init_from_ckpt可选模型参数路径恢复模型训练默认为None。
  • seed可选随机种子默认为1000.
  • device: 选用什么设备进行训练可选cpu、gpu或npu。如使用gpu训练则参数gpus指定GPU卡号。
  • use_amp: 是否使用混合精度训练默认为False。

医疗文本分类任务

$ unset CUDA_VISIBLE_DEVICES
$ python -m paddle.distributed.launch --gpus '0,1,2,3' train_classification.py --dataset CHIP-CDN-2C --batch_size 256 --max_seq_length 32 --learning_rate 3e-5 --epochs 16

其他可支持配置的参数:

  • dataset可选CHIP-CDN-2C CHIP-CTC CHIP-STS KUAKE-QIC KUAKE-QTR KUAKE-QQR默认为KUAKE-QIC数据集。

静态图模型导出

使用动态图训练结束之后还可以将动态图参数导出成静态图参数用于部署推理等具体代码见export_model.py。静态图参数保存在output_path指定路径中。

运行方式:

python export_model.py --train_dataset CHIP-CDN-2C --params_path=./checkpoint/model_900/ --output_path=./export

NOTICE: train_dataset分类任务选择填上训练数据集名称params_path选择最好参数的模型的路径。