中文医疗实体标准化项目
1. 数据准备(t+5)
实体标注化数据集
疾病:
- ICD-10数据一 (合作公司私有数据集)
- ICD-10数据二(私有数据集)
- CHIP2020评测:评测官网
手术:
药品:
缩略词 同义词(甲方提供)
问题:同一个缩写对应不同的疾病名(舍弃)
下载地址:http://chisc.net/doc/view/9169.html
数据特点概述
数据集处理 & 缩写词同义词词表的使用
- 标准词典扩充:原始的数据集表示为(实体,标准实体),输入实体后模型直接输出的它对应的标准实体。为了能够充分利用训练数据和同义词缩略词词表,将数据表示修改为(实体,中间词),在进行测试时,输入实体后模型只需要输出中间词,这个中间词可能是标准实体,也可能是同义词缩略词表中的缩写词,也可能是训练集中出现过的待标准实体,得到中间词后我们再根据扩充后的词表(合并了同义词缩写词和训练数据的词表)查询最终的标准实体。
在添加层级结构模块时,需要得到标准实体在层级结构中的编码,只有在标准术语集中的编码才能够得到对应的层级结构编码,所以需要把训练数据中所有标准实体不再标准术语集中的条目删除。缩写词同义词词表只能当作训练数据进行扩充。
2. 算法模型构建 & 初步评测结果(t+10)
算法主要分为两个阶段:
第一步:预选,tfidf静态选择+bert动态选择
预选阶段的目的是从标准词表(假设N个)中选择topk个候选标准实体进行下一步的标准实体预测
tfidf静态选择:用训练数据+标准词表作为语料训练一个tfidf模型,训练完成后得到实体和所有标准实体的稀疏表示,实体的稀疏表示和所有的标准实体的稀疏表示求内积就能够得到两者的相似度,也就是一个N维的向量,选择出相似度最高的topk个标准实体
bert动态选择:加载预训练好的bert模型(roberta/nezha),对实体和所有标准实体都进行编码分别得到对应的稠密表示,然后同样两者求内积得到相似度向量,也就是一个N维的向量,选择出稠密表示相似度最高的topk个标准实体,由于在训练过程中每个epoch bert的权重都会更新,所以每个epoch都会选出不一样的候选,所以是动态的。
混合:静态和动态选择出两个topk后按1:1的比例(可自定义比例,可以不是1:1)混合得到最终的topk,具体实现方式就是先选出tfidf中相似度最高的topk/2,然后用bert选出的topk对tfidf选出的topk/2进行补充,忽略掉重复的,最终得到topk个不重复的候选。对于训练集而言,在混合选择后可能标准实体没有被选出,但对于训练数据集我们是知道标准实体的,所以在混合时强制将标准实体加入。
动态候选结果展示:手术数据集(验证集/测试集)
|
epoch 0 |
epoch 1 |
epoch 2 |
epoch 3 |
epoch 4 |
··· |
稀疏表示召回率 |
92.38/92.19 |
92.38/92.19 |
92.38/92.19 |
92.38/92.19 |
92.38/92.19 |
|
稠密表示召回率 |
88.15/89.13 |
98.49/98.40 |
98.68/98.73 |
98.21/98.49 |
98.40/98.73 |
|
混合召回率 |
92.94/92.90 |
98.87/98.78 |
99.06/98.97 |
98.59/98.78 |
98.78/99.01 |
|
第二步:实体标准化
标准化的目的是对预选出的topk个进行预测,选出了topk后通过编码模块得到topk个候选实体是标准实体的概率。这是主任务,另外为了提升动态候选的召回率,我们还构建了一个辅助任务。
主任务:实体标准化,得到topk个候选实体是标准实体的概率
辅助任务:最大化标准实体在候选实体中的相似度的占比总和,这一步是为了在训练过程中提高标准实体的相似度
多任务学习探索
交互模块:在bert对pair进行编码时,每个pair都会得到一个表示,对得到的topk个表示计算self-attention,这样最终得到的表示就包含了pair表示之间的交互。模块结构图如下,图中s表示打分函数,常用的打分函数有:
- 加法:$s(x,q)=v^ttanh(Wx+Uq)$
- 点积:$s(x,q)=x^tq$
- 缩放点积:$s(x,q)=\frac{x^tq}{\sqrt{D}}$
- 双线性:$s(x,q)=x^tWq$
知识增强模块:在对标准实体进行编码时,先根据标准实体的层级表示构造图,然后使用图神经网络对其进行编码,得到对应的包含标准实体层级结构信息的表示,将它融入到实体标准化模块中。根据标准术语库的编码对疾病进行层级结构编码,示意图如下,使用图神经网络对结构进行编码,得到包含了层级结构信息的表示,然后将其融入到实体标准化模块中。
实验要点:
-
挑选候选项:采用静态构建和动态构建相结合的方式 (M与K是没有关系,候选项是可能对应的标准术语)
- 静态构建:利用tf-idf、编辑距离等计算相似度,获得前K个候选
- 基于语义计算临床试验入排条件之间的相似度(带有限定词(非…,未使用过…),范围(例如血压,年龄,实验室检查指标)等)
- 动态构建:利用BERT表示动态获得相似度最高的前M个候选
-
层级术语知识表示:通过术语层级关系知识图谱(KG)引入知识表示
-
选项交互模块:充分考虑各候选之间的关系,如相近的候选项应该不能被同时选中,同义的候选应该同时被选中
-
中英混杂及包含缩略语的术语处理:对标注术语进行略缩词、英文简写、中文首字母缩写等扩展
-
预训练模型优化:选用RoBERTa-wwm-base或nezha-base
-
探讨多模型融合对CDN的提升
实验结果
数据集 |
预选 |
标准化 |
精度 |
召回率 |
F1 |
匹配ACC |
备注 |
手术 |
静态 |
pair表示 |
92.60 |
85.32 |
88.81 |
|
|
手术 |
静态 |
pair表示+稀疏表示 |
93.04 |
86.08 |
89.42 |
|
|
手术 |
动态 |
pair表示+稀疏表示 |
94.64 |
88.95 |
91.71 |
|
共享BERT,多任务,优化dense表示用于提升预选召回率 |
手术 |
动态 |
pair表示(+交互)+稀疏表示 |
92.49 |
90.36 |
91.41 |
|
|
手术 |
动态 |
pair表示+稀疏表示 |
91.67 |
89.56 |
90.60 |
|
非共享BERT |
手术 |
动态 |
pair表示(+交互)+稀疏表示 |
92.23 |
89.89 |
91.04 |
|
非共享BERT |
手术(标准) |
动态 |
pair表示+稀疏表示 |
89.57 |
88.54 |
89.05 |
|
非共享BERT,验证集结果 |
手术(标准) |
动态 |
pair表示+稀疏表示+层级表示 |
90.39 |
88.06 |
89.21 |
|
非共享BERT,验证集结果 |
手术(标准) |
动态 |
pair表示(+交互)+稀疏表示+层级表示 |
91.41 |
86.34 |
88.80 |
|
非共享BERT,验证集结果 |
手术(标准) |
动态 |
pair表示+稀疏表示 |
91.30 |
87.20 |
89.20 |
|
共享BERT,验证集结果 |
手术(标准) |
动态 |
pair表示+稀疏表示+层级表示 |
90.93 |
89.02 |
89.96 |
|
共享BERT,验证集结果 |
手术 |
动态 |
pair表示+稀疏表示+层级表示 |
90.07 |
87.86 |
88.95 |
98.89 |
共享BERT,多任务,优化dense表示用于提升预选召回率 |
手术 |
动态 |
pair表示+稀疏表示+层级表示 |
92.99 |
89.89 |
91.41 |
99.22 |
非共享BERT |
手术 |
动态 |
pair表示+稀疏表示+层级表示 |
91.62 |
92.05 |
91.83 |
99.19 |
非共享BERT,roberta换为NEZHA |
|
|
|
|
|
|
|
|
疾病1(北京) |
静态 |
pair表示 |
86.05 |
73.36 |
79.20 |
|
|
疾病1(北京) |
动态 |
pair表示+稀疏表示 |
79.73 |
78.22 |
78.97 |
|
共享BERT,多任务,优化dense表示用于提升预选召回率 |
疾病1(北京/标准) |
动态 |
pair表示+稀疏表示+层级表示 |
78.28 |
76.87 |
77.57 |
97.93 |
共享BERT,多任务,验证集结果 |
疾病1(北京) |
动态 |
pair表示+稀疏表示+层级表示 |
81.46 |
75.89 |
78.58 |
98.05 |
共享BERT,多任务 |
|
|
|
|
|
|
|
|
疾病2(黄) |
静态 |
pair表示 |
85.81 |
73.92 |
79.42 |
|
|
疾病2(黄) |
动态 |
pair表示+稀疏表示 |
85.37 |
77.80 |
81.41 |
|
共享BERT,多任务 |
疾病2(黄/标准) |
动态 |
pair表示+稀疏表示+层级表示 |
84.59 |
80.04 |
82.25 |
98.44 |
共享BERT,多任务,验证集结果 |
疾病2(黄) |
动态 |
pair表示+稀疏表示+层级表示 |
85.26 |
77.64 |
81.27 |
98.34 |
共享BERT,多任务 |
|
|
|
|
|
|
|
|
疾病3(chip2020) |
静态 |
pair表示 |
80.99 |
62.02 |
70.25 |
|
|
疾病3(chip2020) |
动态 |
pair表示+稀疏表示 |
78.04 |
75.05 |
76.52 |
|
共享BERT,多任务 |
疾病3(chip2020/标准) |
动态 |
pair表示+稀疏表示+层级表示 |
75.21 |
72.81 |
73.99 |
96.99 |
验证集结果 |
疾病3(chip2020) |
动态 |
pair表示+稀疏表示+层级表示 |
77.25 |
73.32 |
75.23 |
96.70 |
共享BERT,多任务 |
3. 优化提升(t+15)
标准词典扩充
预训练模型优化
模型融合
最后计划跑的实验:
CLUE baseline 所有数据集
药品:非共享BERT,甲方复现训练预测过程
疾病:合并所有数据集跑共享BERT和非共享BERT,融合,预测测试集,甲方复现测试过程
4. 测评+审核(t+20)
模型初步评估:公开CDN评测验证,需优于CBLUE baseline
测试2000条数据(数据甲方提供),双方人工审核其中200条数据
泛化测试评估:site(医院)名称标准化
在公开和私有的数据集上标准化整体准确率不低于90%,部分数据集上不低于95%
5. 交付(t+25)
- 关数据集 能够覆盖相应标签标准术语的公开训练语料
- CDN模型算法及相关数据处理全部源代码
- 技术文档