评测三:从医疗文本中抽取诊疗决策树
Task3: Extracting Medical Decision Tree from Medical Text
1. 任务简介
作为辅助诊疗系统、医疗教学等智慧医疗系统的核心,诊疗决策树的获取往往依赖医学专家的手工构建,需要大量的领域知识且费时费力,因此,探索如何从诊疗决策知识源(临床诊疗指南、医学教科书)中自动抽取诊疗决策树(后称Text2DT)是很有意义的。临床诊疗可以看作是一个根据不同的条件进行判断,然后做出不同决策的过程。这种临床诊疗过程可以被建模为临床诊疗决策树,临床诊疗决策树是一棵由条件节点和决策节点组成的树型结构,条件节点表示需要做出的条件判断,决策节点表示需要做出的诊疗决策。
2. 任务详情
Text2DT的任务目标是从给定的医疗文本抽取出诊疗决策树。诊疗决策树表示简化的决策过程,即根据条件判断的不同结果做出下一个条件判断或决策。一旦做出决策,诊疗过程终止。因此,我们将诊疗决策树定义为由条件节点和决策节点组成的二叉树(见下图1)。本任务既要求模型能够将文本中的核心实体和关系挖掘出来,也需要将这些信息进行串联,形成一个完整的决策流程。
3. 数据说明
本次标注数据全部来源于对公开的诊疗指南与医学教科书的标注,训练数据:300;验证数据:100;测试数据:100。
医疗文本样例:
亚急性甲状腺炎患者:轻型患者仅需应用非甾体抗炎药,如阿司匹林、布洛芬等;中型和重型患者可给予泼尼松每日20~40mg分3次口服。
对应的诊疗决策树:

图1. 关于亚急性甲状腺炎患者用药的诊疗流程
如图1所示,在诊疗决策二叉树中,非叶子节点是条件节点,叶子节点是决策节点。对于条件节点,当条件判断结果为“是”时,将转到左侧子节点进行下一个判断或决策,当条件判断结果为“否”时,将转到右侧子节点进行下一个判断或决策。每个节点可以被表示为N={c/d,l(tri1,......,trin)},其中c/d表示该节点是一个条件/决策节点;tri1,......,trin表示n个三元组,即条件/决策节点的内容;l表示多个三元组之间的逻辑关系(or、and,当只有一个三元组是逻辑关系为空)。注意,如果某一个条件判断的结果为“是”或“否”后的下一步条件判断或决策没有被文本的语义所表达,则添加一个空节点,表示下一步的条件判断与决策未知(即每个条件节点都有左侧和右侧两个子节点,如果某一侧的节点不存在于文本语义中,则在这一侧添加一个空节点)。因此,每颗决策二叉树可以由节点的前序序列所表示。
测试数据样例:
输入(医疗文本):亚急性甲状腺炎患者:轻型患者仅需应用非甾体抗炎药,如阿司匹林、布洛芬等;中型和重型患者可给予泼尼松每日20~40mg分3次口服。
输出(决策二叉树的前序序列,代表了决策二叉树):
[
{'role':'c','triples':[['亚急性甲状腺患者','临床表现','轻型']],'logical_rel':'null'},
{'role':'d','triples':[['亚急性甲状腺患者','治疗药物','非甾体抗炎药'],['亚急性甲状腺患者','治疗药物','阿司匹林'],['亚急性甲状腺患者','治疗药物','布洛芬']],'logical_rel':'or'},
{'role':'c','triples':[['亚急性甲状腺患者','临床表现','中型'],['亚急性甲状腺患者','临床表现','重型']],'logical_rel':'or'},
{'role': 'd', 'triples': [['亚急性甲状腺患者', '治疗药物', '泼尼松'], ['泼尼松', '用法用量', '每日20~40mg分3次口服']], 'logical_rel':
'and'},
{'role': '','triples':'','logical_rel':''}
]
4. 评估方法
1.三元组抽取的F1分数。
2.决策树的准确率:抽取的决策树被认为是正确的当这棵树与ground truth完全一致(树结构、三元组、逻辑关系)。
3.决策路径的F1分数。我们把从根节点到叶子节点到路径称为一条决策路径,表示根据条件判断做出一次决策的过程。决策路径的F1分数作为一个比决策树的准确率更加宽松的评价指标。例如,如图2所示,这颗树共有2条决策路径。
图2. 关于亚急性甲状腺炎患者用药的诊疗决策路径
4.决策树的编辑距离:与字符串的编辑距离类似,诊疗决策树中的编辑距离是从一棵树转换到另一棵树所需的最小树编辑操作数。树编辑操作包括:插入和删除节点,更改节点的角色;插入、删除三元组;以及修改三元组之间的逻辑关系。编辑距离能够衡量两棵树的相似度,作为一个比决策树的准确率更加宽松的评价指标。下面两颗树的编辑距离为5(即将第一棵树变为第二棵树需要进行:1、添加三元组(患者,临床表现,重型);2、添加逻辑关系or;3将逻辑关系or修改为and;4、将三元组(患者,治疗药物,布洛芬)删除;5、添加三元组(患者,治疗药物,泼尼松))。
图3. 编辑距离示意图
(红色的标注表示需要进行的树编辑操作)
假设两个标注为:
A1:
[
{'role': 'c', 'triples': [t1],'logical_rel': l1},
{'role': 'd', 'triples': [t2],'logical_rel': l2},
{'role': 'c', 'triples': [t3],'logical_rel': l3},
{'role': 'd', 'triples': [t4],'logical_rel': l4},
{'role': 'd', 'triples': [t5,t6],'logical_rel': l5}
]
A2:
[
{'role': 'c', 'triples': [t7],'logical_rel': l6},
{'role': 'd', 'triples': [t8],'logical_rel': l7},
{'role': 'd', 'triples': [t9],'logical_rel': l10}
]
假设选手给出的两个标注为:
P1对应A1:
[
{'role': 'c', 'triples': [t1],'logical_rel': l1},
{'role': 'd', 'triples': [t2],'logical_rel': l2},
{'role': 'c', 'triples': [t3],'logical_rel': l3},
{'role': 'd', 'triples': [t4],'logical_rel': l11},
{'role': 'd', 'triples': [t5,t10, t11],'logical_rel': l12}
]
P1对应A2:
[
{'role': 'c', 'triples': [t7],'logical_rel': l6},
{'role': 'd', 'triples': [t8],'logical_rel': l7},
{'role': 'd', 'triples': [t9],'logical_rel': l10}
]
三元组抽取的F1: 2*(8/9)*(8/10)/((8/9)+(8/10))
决策树的准确率: 1/2
决策路径的F1: 2*(3/5)*(3/5)/((3/5)+(3/5))
编辑距离:: (5+0)/2
评测代码会随训练与验证数据一起放出。

图2. 关于亚急性甲状腺炎患者用药的诊疗决策路径
.jpg)
.jpg)