评测三:从医疗文本中抽取诊疗决策树
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':''}
]