/imcs21-cblue

This is the repo of the medical dialogue dataset 'imcs21' in CBLUE@Tianchi

Primary LanguagePython

IMCS21-CBLUE

这是 CBLUE@Tianchi 中医疗对话数据集 IMCS21 的仓库,本仓库包含:

  • 背景介绍
  • CBLUE 评测任务介绍
  • 基线模型代码
  • 数据集介绍
  • 多级数据注释
  • 数据格式

更新

IMCS21 数据集已更新,添加了 4 种疾病,覆盖了 10 种️疾病,共 4,116 条样本。新版本评测仓库更新了每个任务的评价脚本,同时也更新了基线代码。欢迎大家来 CBLUE 打榜!

注意:对 IMCS21 新版数据集的详细介绍请参考我们的论文 A Benchmark for Automatic Medical Consultation System: Frameworks, Tasks and Datasets,以及对应的代码仓库 https://github.com/lemuria-wchen/imcs21

背景介绍

随着"互联网+医疗"的迅速发展,在线问诊平台逐渐兴起,在线问诊是指医生通过对话和患者进行病情的交流、 疾病的诊断并且提供相关的医疗建议。在政策和疫情的影响之下,在线问诊需求增长迅速。然而医生资源是稀缺的,由此促使了自动化医疗问诊的发展,以人机对话来辅助问诊过程。为了促进智能医疗咨询系统(Intelligent Medical Consultation System, IMCS),我们构建了 IMCS21 数据集,该数据集收集了真实的在线医患对话,并进行了多层次(Multi-Level)的人工标注,包含命名实体对话意图症状标签医疗报告等,我们将该数据集接入 CBLUE 评测平台,希望可以共同促进智能医疗、医学语言理解等领域的发展。

CBLUE 评测任务

IMCS21 目前在 CBLUE 评测平台上接入了四个任务,分别为:命名实体识别、症状识别、医疗报告生成和对话意图识别。

任务编号 任务名称 简称 任务描述 链接
任务一 命名实体识别 IMCS-NER 从医患对话文本中识别出五类重要的医疗相关实体。 https://github.com/lemuria-wchen/imcs21-cblue/tree/main/task1
任务二 症状识别 IMCS-SR 根据医患对话文本,识别出病人具有的症状信息(包含归一化标签和类别标签)。 https://github.com/lemuria-wchen/imcs21-cblue/tree/main/task2
任务三 医疗报告生成 IMCS-MRG 依据病人自述和医患对话,输出具有规定格式的医疗报告。 https://github.com/lemuria-wchen/imcs21-cblue/tree/main/task3
任务四 对话意图识别 IMCS-DAC 从话语中识别医生或者患者的意图(共 16 种)。 https://github.com/lemuria-wchen/imcs21-cblue/tree/main/task4

数据集介绍

IMCS21 包含 4,116 组细粒度标注的医患对话案例样本,覆盖 10 种儿科疾病,详细统计数据如下表所示。

统计指标 Statistical Metrics Value
总疾病数 # of Diseases 10
总对话数 # of Total Dialogs 4,116
总句子数 # of Total Sentences 164,731
平均每个对话包含的句子数 # of Avg. Sentences / Per Dialog 40
平均每个对话包含的字符数 # of Avg. Words / Per Dialog 523
平均每个对话包含的字符数(包含患者自我报告) # of Avg. Words / Per Dialog (Contains Self-Report) 580
疾病名称 样本数
小儿支气管炎 543
小儿发热 542
小儿腹泻 534
上呼吸道感染 486
小儿消化不良 475
小儿感冒 472
小儿咳嗽 344
新生儿黄疸 294
小儿便秘 221
小儿支气管肺炎 205

多级数据注释

命名实体

医疗命名实体广泛存在于医患对话中,它们是理解对话意图的关键因素,也是构建智能医疗对话系统的基础任务。

IMCS21 中标注了对话中医疗相关的命名实体,共包含 5 类命名实体,标注方式采用 BIO 三位 字符级标注 ,其中 B-X 代表实体 X 的开头,I-X 代表实体的结尾,O 代表不属于任何类型,命名实体的预定义类别定义如下。

实体类别 Entity Category 类别详情
症状 Symptom 病人因患病而表现出来的异常状况,如 发热、呼吸困难、鼻塞 等。
药品名 Drug 具体的药物名称,如 妈咪爱、蒙脱石散、蒲地蓝 等。
药物类别 Drug_Category 根据药物功能进行划分的药物种类,如 消炎药、感冒药、益生菌 等。
检查 Medical_Examination 医学检验,如 血常规、x光片、CRP分析 等。
操作 Operation 相关的医疗操作,如 输液、雾化、接种疫苗 等。

对话意图

IMCS21 中标注了医患对话行为,共包含 16 类对话意图,标注方式采用 句子级 标注,对话意图的预定义类别定义如下。

对话意图类别 Dialogue Intent Category Dominant
提问-症状 Request-Symptom 医生
告知-症状 Inform-Symptom 病人
提问-病因 Request-Etiology 医生
告知-病因 Inform-Etiology 病人
提问-基本信息 Request-Basic_Information 医生
告知-基本信息 Inform-Basic_Information 病人
提问-已有检查和治疗 Request-Existing_Examination_and_Treatment 医生
告知-已有检查和治疗 Inform-Existing_Examination_and_Treatment 病人
提问-用药建议 Request-Drug_Recommendation 病人
告知-用药建议 Inform-Drug_Recommendation 医生
提问-就医建议 Request-Medical_Advice 病人
告知-就医建议 Inform-Medical_Advice 医生
提问-注意事项 Request-Precautions 病人
告知-注意事项 Inform-Precautions 医生
诊断 Diagnose 医生
其他 Other 医生 / 病人

症状标签

症状是医患对话中主要讨论的话题之一,病人的症状信息也是对话策略和疾病诊断的关键特征。使用 BIO 标签可以找出症状实体所在的位置,然而在实际应用中,还存在两个问题:1) 症状实体未归一化,相同的症状可能有多种表达方式,如 发烧、热、发热 都表示 发热 这一症状;2) 症状与患者的关系未知,显然病人并非一定患有所有出现在对话中的症状。

IMCS21 对症状实体进行了进一步的 实体级 标注,我们标注了每个症状实体的 归一化标签类别标签,这两种标签的详情如下。

症状标签 Symptom Labels Details
归一化标签 symptom_norm BIO 标签中提取的 1,900 多个症状中标准化得到 331 个标准化症状名称。
类别标签 symptom_type "0" 代表确定病人没有患有该症状,"1" 代表确定病人患有该症状,"2" 代表无法根据上下文确定病人是否患有该症状。

医疗报告

医疗报告是医生对病人健康状况的总结,是医疗诊断过程的重要环节。

IMCS21 标注了医疗报告。标注方式采用 对话级标注,标注者阅读完整医患对话,并按照规定格式为患者填写对应的医疗报告,每个对话均包含 2 份医疗报告作为参考。医疗报告的预定义格式如下。

字段 Fields Details
主诉 Chief Complaint 病人自诉(Self-report)的总结。
现病史 Present Disease 对话中病人涉及到的现病史的总结。
辅助检查 Auxiliary 对话中病人涉及过的医疗检查的总结。
即往史 Past History 对话中医生对病人的过去病史的总结。
诊断 Diagnosis 对话中医生对病人的诊断结果的总结。
建议 Suggestions 对话中医生对病人的建议的总结。

数据格式

训练集

文件名为为 train.json,共 2,472 条样本,其格式如下。

{
  "example_id1":{	                # 样本id
      "diagnosis":	                # 患者疾病类别
      "self-report":	            # 自诉,病人对自己病情的陈述及对医生的提问
      "dialogue":[	                # 对话内容
        {
          "sentence_id":	        # 对话轮次的序号
          "speaker":		        # 医生或者患者
          "sentence":		        # 当前对话文本内容
          "dialogue_act":	        # 话语行为
          "BIO_label":	            # BIO实体标签(以“空格”连接)
          "symptom_norm":	        # 归一化的症状(与BIO中的症状出现的顺序对应)
          "symptom_type":	        # 症状类别(与BIO中的症状出现的顺序对应)
        },
        {	
          "sentence_id":
          "speaker":
          "sentence":
          "dialogue_act":
          "BIO_label":
          "symptom_norm":	
          "symptom_type":
        },
        ...
      ]
      "report":[                   # 两份医疗报告
      {
        "主诉": 
        "现病史":
        "辅助检查": 
        "既往史": 
        "诊断": 
        "建议": 
      }, 
      {
        "主诉": 
        "现病史":  
        "辅助检查": 
        "既往史": 
        "诊断": 
        "建议": 
      },       
      ]     
      "explicit_info":{
          "Symptom": 	            # 患者自我报告中的症状,列表格式,值为症状的归一化标签
      }         
      "implicit_info":{
          "Symptom": 	            # 基于整组对话推断得到的症状标签,字典格式,键为症状的归一化标签,值为症状的类别标签
      } 
  }
  "example_id2":{
      ...
  }
  ...
}

验证集

文件名为为 dev.json,共 833 条样本,其格式同训练集。

测试集输入(仅包含原始医患对话)

文件名为为 test_input.json,共 811 条样本,其格式如下。

{
  "example_id1":{	                # 样本id
      "self-report":	            # 自诉,病人对自己病情的陈述及对医生的提问
      "dialogue":[	                # 对话内容
        {
          "sentence_id":	        # 对话轮次的序号
          "speaker":		        # 医生或者患者
          "sentence":		        # 当前对话文本内容
        },
        {	
          "sentence_id":
          "speaker":
          "sentence":
        },
        ...
      ]
  }
  "example_id2":{
      ...
  }
  ...
}

验证集完整

文件名为为 test.json,共 811 条样本,其格式同训练集与验证集。

归一化的症状词典(optional)

文件名为为 symptom_norm.csv,归一化后的症状词典,本仓库部分基线代码依赖该文件,其格式如下。

norm
咳嗽
发热
感冒
...

引用

如果您扩展或使用这项工作,请引用介绍它的论文

@article{chen2022benchmark,
  title={A Benchmark for Automatic Medical Consultation System: Frameworks, Tasks and Datasets},
  author={Chen, Wei and Li, Zhiwei and Fang, Hongyi and Yao, Qianyuan and Zhong, Cheng and Hao, Jianye and Zhang, Qi and Huang, Xuanjing and Wei, Zhongyu and others},
  journal={arXiv preprint arXiv:2204.08997},
  year={2022}
}