第一赛季:实体识别
数据集论文:https://arxiv.org/pdf/2105.15033.pdf
报道显示,中国的糖尿病患者人数高达1.14亿,即便按照1个医生管理1000人的需求推算,也需要10万医生。
而如今,我国内分泌医生远远达不到10万,导致很多糖尿病患者不能享受到较好的慢病管理服务,而不同层级的医疗机构,对糖尿病慢病诊治水平参差不齐,也影响了糖尿病患者的治疗体验。
比赛:https://tianchi.aliyun.com/competition/entrance/231687/information
如果你有一本关于糖尿病治疗的厚重书籍,而你只想快速找到有关“胰岛素治疗”的部分。
没有目录或索引,这将是一项耗时且乏味的工作。
这就是命名实体识别技术的用武之地,它可以帮助你快速定位到书中提及“胰岛素治疗”的所有部分,就像是自动生成了一个非常详细的目录。
在糖尿病论文和临床指南的实际应用中,这项技术可以帮助识别并标注出各种重要信息,比如:
- 疾病名称(如2型糖尿病)
- 症状(如血糖波动)
- 治疗方法(如口服药物、胰岛素注射)
- 药物名称(如二甲双胍)
- 研究结果(如药物有效性数据)
通过这种方式,医生和研究人员可以更有效地获取信息,不仅节省时间,还可以帮助他们更好地理解疾病和治疗方法,从而提高病人的治疗效果。
举个例子,假设我们有一篇关于2型糖尿病治疗的学术论文,论文中包含了以下句子:
“在一项关于2型糖尿病的随机对照试验中,研究人员发现,与安慰剂相比,服用二甲双胍的患者在血糖控制方面表现得更好。”
在这句话中,命名实体识别(NER)的任务是识别并分类句子中的关键信息。具体来说:
- 疾病实体:“2型糖尿病”被识别为一个疾病名称。
- 药物实体:“二甲双胍”被识别为药物名称。
- 处理或干预措施:“服用二甲双胍”和“安慰剂”作为两种不同的治疗方法。
- 研究方法实体:“随机对照试验”是一种研究设计类型,也是一个重要的实体。
进行命名实体识别后,系统可以自动提取这些信息,将它们标注为以下实体类型:
- 疾病和症状:2型糖尿病
- 药物名称:二甲双胍
- 治疗方法:服用二甲双胍、安慰剂
- 研究方法:随机对照试验
输入输出
输入:一段糖尿病相关的文本
输出:每个实体和对应的类别
总共 15 个类别。
疾病实体:
- 疾病名称 (Disease): 如I型糖尿病
- 病因 (Reason): 疾病的成因,例如胰岛素抵抗
- 临床表现 (Symptom): 症状和体征,如头晕、便血
- 检查方法 (Test): 用于诊断的实验室或影像学检查,如血脂检测
- 检查指标值 (Test_Value): 具体数值,如甘油三酯>11.3 mmol/L
治疗实体:
6. 药品名称 (Drug): 如胰岛素
7. 用药频率 (Frequency): 用药次数,如一天两次
8. 用药剂量 (Amount): 例如500mg/天
9. 用药方法 (Method): 如口服,静脉注射
10. 非药治疗 (Treatment): 非药物性治疗,如按摩、针灸
11. 手术 (Operation): 如代谢手术
12. 不良反应 (SideEff): 用药后的不良反应
常规实体:
13. 部位 (Anatomy): 解剖部位和生物组织,如胰岛细胞
14. 程度 (Level): 病情严重程度或治疗效果,如病情轻微
15. 持续时间 (Duration): 症状或用药的持续时间,如头晕持续了一周
这是初赛的输入输出,还有一个复赛。
复赛是在知识图谱上做关系抽取,总共 10 类:
- 检查方法 -> 疾病 (Test_Disease)
- 临床表现 -> 疾病 (Symptom_Disease)
- 临床诊治方 -> 疾病 (Treatment_Disease)
- 药品名称 -> 疾病 (Drug_Disease)
- 解剖 -> 疾病 (Anatomy_Disease)
- 用药频率 -> 药品名称 (Frequency_Drug)
- 用药时间 -> 药品名称 (Duration_Drug)
- 用药剂量 -> 药品名称 (Amount_Drug)
- 用药方法 -> 药品名称 (Method_Drug)
- 不良反应 -> 药品名称 (SideEff_Drug)
具体数据集介绍和下载:https://tianchi.aliyun.com/dataset/88836
文件中包含的数据展示了一个典型的医学文档结构,具体针对糖尿病(diabetes)的相关信息,包括疾病描述、相关药物、治疗方法等。
总体结构
- doc_id: 文档的唯一标识符,如 “1”。
- paragraphs: 文档中包含的段落数组,每个段落都有其独特的内容和结构。
段落和句子
每个段落包括:
- paragraph_id: 段落的唯一标识符。
- paragraph: 段落的文本内容。
- sentences: 段落中的句子数组,每个句子具体包含:
- sentence_id: 句子的唯一标识符。
- sentence: 句子的文本内容。
- start_idx 和 end_idx: 句子在段落中的起始和结束索引。
- entities: 句子中标注的实体数组,每个实体包括:
- entity_id: 实体的唯一标识符。
- entity: 实体的文本。
- entity_type: 实体的类型,如疾病(Disease)、药物(Drug)、检查项目(Test_Items)等。
- start_idx 和 end_idx: 实体在句子中的起始和结束索引。
- relations: 句子中实体间的关系数组,包括:
- relation_type: 关系的类型,如药物和疾病之间的关系(Drug_Disease)、疾病和检查项目之间的关系(Test_Items_Disease)等。
- relation_id: 关系的唯一标识符。
- head_entity_id 和 tail_entity_id: 关系中头实体和尾实体的标识符。
实体和关系示例
- 疾病(Disease): “糖尿病”,标注为与药物和检查项目等相关的实体。
- 药物(Drug): 如 “胰岛素促泌剂”,与疾病“糖尿病”有直接关联。
- 关系(Relation): 如药物与疾病之间的关系,标识药物是如何作用于疾病的。
这个文档格式怎么用?
要有效地使用这种结构化的医学文档数据,主要取决于您的应用目的。以下是几种常见的应用场景及相应的使用方法:
1. 自然语言处理(NLP)模型训练
如果您的目标是训练自然语言处理模型,如实体识别(NER)或关系抽取(RE)模型,这种结构化数据是非常宝贵的资源。以下是如何进行的步骤:
- 数据预处理:将JSON格式的数据解析为训练算法可以接受的格式(例如,转换为CSV或特定库所需的格式)。
- 特征提取:从文本中提取相关的特征,包括词汇特征、句法特征和语义特征。
- 模型选择和训练:选择合适的机器学习模型(如CRF、LSTM、Transformers等),并使用标注的实体和关系作为训练标签来训练模型。
- 评估和优化:使用测试数据集评估模型性能,并根据需要调整和优化模型参数。
2. 医学知识图谱构建
若您的目标是构建医学知识图谱,可以利用实体和关系数据来创建图谱节点和边:
- 实体作为节点:每个唯一的实体(如疾病、药物、检查项目)可以作为图谱中的一个节点。
- 关系作为边:实体之间的关系用来定义节点之间的链接(边),这样可以形成一个网络,其中包含了各种医学概念和它们之间的联系。
- 图谱查询和分析:构建完知识图谱后,可以使用图查询语言(如SPARQL、Cypher)来探索图谱,发现新的洞见或验证医学假设。
3. 临床决策支持
使用这些数据可以辅助临床决策系统,通过以下方式:
- 规则引擎:基于实体和关系建立临床决策规则,如基于特定症状和检查结果推荐治疗方案。
- 风险评估:分析病人信息与类似病例对比,评估患者的健康风险和可能的并发症。
- 患者教育:利用数据向患者提供关于疾病、治疗方法和预防措施的教育信息。
这个比赛的用法是, 医学知识图谱构建。
算法设计
NER是自然语言处理领域的一个核心任务,目标是识别文本中的实体,如人名、地名、组织名等,并将其归类为预定的类别(上述的疾病实体、治疗实体、常规实体)。
BiLSTM-CRF 论文
论文:https://arxiv.org/pdf/1508.01991.pdf
解读:Bi-LSTM-CRF:其结合了 BI-LSTM 的上下文捕获能力和 CRF 的标签关系建模
BI-LSTM-CRF模型的独特优势在于它结合了双向LSTM的能力来捕获长距离的双向上下文依赖性,并通过CRF层来精确地建模标签之间的约束关系,从而在复杂的序列标注任务中提供了显著的性能提升。
例如,在一个医疗健康记录的命名实体识别任务中,BI-LSTM-CRF模型能够利用前文提到的症状信息和后文提到的治疗措施来确定某个术语是特定疾病的名称。
同时,CRF层能够确保识别出的实体标签在整个序列中保持一致性,例如不会将疾病的部分名称错误地标记为药物。
这种双向上下文理解与强大的标签序列建模,使得BI-LSTM-CRF在提取和分类文本中的专业术语方面比单纯的LSTM或CRF模型表现更加出色。
BiLSTM-CRF 应用
使用BiLSTM联合CRF模型,对单词序列进行实体识别:
从底部开始,每个单词
w
i
w_{i}
wi 输入到 BiLSTM 中预测。
预测的概率类别,在图中用黄色方框表示,取最大值即预测类别。
BiLSTM层之上是CRF层,CRF层能够利用上下文信息来提高预测的准确性。
在图中,每个单词的实体类别被CRF层评估,以得出最终的实体识别结果。
最顶层的红框内,展示了每个单词最可能的实体类别及其置信度分数,例如,0.9表示很高的置信度,该词是一个人名的开始(B-Person)。
BiLSTM-CRF VS 大模型
BiLSTM-CRF模型相对于传统的方法有如下优点:
- 双向上下文理解:BiLSTM通过考虑前向和后向上下文信息,能更好地理解语言中词汇的双向依赖性,从而提高实体的识别准确性。
- 序列标注能力:CRF在BiLSTM的基础上进一步提升了模型的序列标注能力。它不仅考虑了单个标签的分数,还考虑了标签之间的转换概率,这有助于模型学习到更复杂的依赖关系,例如B-标签后通常跟随I-标签。
相比之下,大模型如BERT、GPT-4、RoBERTa等,是基于Transformer架构的预训练语言模型(PLMs)。
这些大模型在处理NER任务时的不同点包括:
- 上下文感知:这些大模型经过大规模数据集预训练,对语境有更深的理解,因此在理解复杂的语言结构和隐含意义方面更加出色。
- 无需特征工程:传统的模型,如BiLSTM-CRF,可能需要精心设计的特征来识别实体,而PLMs可以直接从原始文本中学习到这些特征。
- 迁移学习:预训练模型可以很容易地适应新任务(通过微调),因为它们已经在广泛的语言上下文上接受了预训练。
- 计算成本:大模型需要更多的计算资源来进行预训练和微调,而相对较小的模型如BiLSTM-CRF在资源有限的情况下可能更易于部署和使用。
大模型往往在准确性和理解能力上优于传统模型,但也需要更多的计算资源。
然而,BiLSTM-CRF等模型在数据集较小、计算资源有限或需要快速原型开发时仍然非常有用。
这个过程是为了实现医疗知识图谱项目中的实体识别功能。
第二赛季:构建糖尿病知识图谱
构建糖尿病的全面知识图谱,有助于形成糖尿病预测、干预、监控、教育等闭环管理,能最大程度还原专家在治疗糖尿病时的用药思路,辅助基层临床医生做出更科学的决策,提升用药技能,将进一步提升就诊效率、降低就医门槛。
同时,对于糖尿病医学科研也有重大意义。
在医疗知识图谱中,实体识别是一个关键的步骤,用于从文本中自动识别出有意义的信息,如疾病、症状、治疗方法等实体。
这些实体和它们之间的关系构成了知识图谱的基本元素。
通过对医疗文本进行实体识别,可以抽取和整理出结构化的医学知识,从而支持更高级的医疗应用,比如智能问诊、病例分析等。
在这个过程中,首先选择了一个相对更优质的医疗数据集 ChineseBLUE/cMedQANER
来训练命名实体识别模型。
这是因为高质量的数据集可以提供更准确的训练基础,有利于提高实体识别的准确性。
接下来,通过修改配置文件、数据处理脚本等步骤,适配新的数据集格式和内容,以确保模型能够有效地学习到从文本中识别医疗实体的能力。
实体识别模型训练完成后,将模型封装成一个包,方便在知识图谱项目的其他部分调用。
例如,当处理用户的医疗咨询问题时,可以利用这个实体识别模型来分析问题文本,识别出里面提到的医疗实体,然后根据这些实体和知识图谱中的信息进行匹配,找到最合适的答案或建议给用户。