9.1 电子病例背景介绍
近年来,在电子病历文本上应用自然语言处理、信息抽取等技术服务于临床决策支持的研究倍受关注。这个过程分为两个不同的阶段:
1.自然语言处理研究主要关注病历文本的预处理,包括句子边界识别、词性标注、句法分析等;
2.信息抽取以自然语言处理研究为基础,主要关注病历文本中各类表达医疗知识的命名实体或医疗概念的识别和关系抽取。
9.2 中文电子病历命名实体和实体关系标注体系建立和命名实体分类规范
1.医生诊断的四个步骤
通过分析电子病历, 医生针对患者的诊疗活动可以概括为: 通过检查手段(做什么检查) 发现疾病的表现 (什么症状), 给出诊断结论(什么疾病), 并基于诊断结论, 给出治疗措施(如 何治疗)。医疗活动主要涉及四类重要信息: 检查、症状、疾病和治疗。
2.实体类别
通过分析电子病历,医生针对患者的诊疗活动可以概括为:通过患者自述(自诉症状)和检查结果(检查项目)发现疾病的表现(症状),给出诊断结论(疾病),并基于诊断结论,给出治疗措施(治疗方案)。这个过程可以看出,医疗活动主要涉及四类重要信息:症状、疾病、检查和治疗,涉及的具体描述如下:
1)疾病:泛指导致患者处于非健康状态的原因,比如:诊断、病史。
2)疾病诊断分类:疾病诊断相关分组,比如“高血压,极高危组”中的“极高危组”。
3)症状:泛指疾病导致的不适和显示表达的检验检查结果,分为:自诉症状和体征(异 常检验检查结果)。
4)检查:泛指为了得到更多的由疾病导致的异常表现以支持诊断而采取的检查设备、 检查程序、检查项目等。
5)治疗手段:泛指为了治愈疾病、缓解或改善症状而给予患者的药物、手术和措施等。
9.3 医疗保险命名实体识别的相关前沿技术和难点
名实体识别是任务在 1996 年由 MUC-6 会议(the sixth in a series of Message U nderstanding Conferences[8])提出。MUC-6 命名实体识别的有三个子任务组成,分别是 实体名(Entity Name):人名、地名和机构名称;时间表达式(Temporal Expressions): 时间、日期和持续时间;数字表达式(Number Expressions):金钱,百分比和衡量度。 MUC-6 主张从非机构化文本从抽取实体信息后结构化文本,自提出以来,每年都有大量的 算法被提出。
2002 年,J Su 提出用隐马尔科夫模型来做命名实体识别和基于隐马尔科夫模型的数据块标注方式[9],在 MUC-6 和 MUC-7 英文实体识别的任务上 F1 准确率分别是 96.6%和 94.1%。
2015 年,CND Santos 和 V Guimarães[10]利用单词级和字符级的词向量特征作为深度学习模型的输入特征,通过把两种特征进行串联,送入神经网络进行实体识别, 达到较好的效果。
2015 年,JPC Chiu 和 E Nichols[11]提出一种整合递归神经网络 LSTM和卷积神经网络 CNN 的命名实体识别的混合新模型,同时把自定义字典匹配模式融入模型 中,词方法在 CoNLL-2003 和 OntoNotes 公开数据集上,实体识别的 F1 值分别为 91.62% 和 86.28%,获得 2015 年报道的最好效果。
2015 年 Li L,Jin L 和 Jiang Z 等[12]提出一种拓展版的递归神经网络专门针对生物信息如基因和蛋白质的识别任务。和传统的神经网络提取 语言学特征不同,此模型采用蛋白质先前节点的预测信息,生物的主题信息和聚类信息作为 特征的输入,结果显示采用 DNN 神经网络比条件随机场分类器效果要好。
为了更好的提高化合物和药品的识别准确率, 2016 年,Lample G, Ballesteros M 和 Subramanian S 等[17]提出了用两个神经网 络的新框架进行实体识别。此框架其中一个是双向的LSTM神经网络加上条件随机场分类器,另外一个是模型是基于过渡转移方式标注实体。此方法新颖之处在于采用监督学习下的 字向量和非监督学习下的词向量作为模型的训练特征。此模型在四种语言的公开数据集命名 实体识别任务上达到了当时最好的效果。
为了应对较小标注样本无法很好的训练出较好的实体识别模型,文献[18]提出利用迁移学习的方法来解决小样本问题。具体而言,通过在大量训练样本下训练出一个模型,然后学习源实体和目标实体的关系,最后用在样本环境下训练好的模型初始化条件随机场分类器参数,在此基础上微调特定领域的实体识别模型。为了验证不同词向量特征对实体识别准确率的影响。
难点
由于基于传统正则匹配或者机器学习的方法提取的特征有限,对于大量书写用词不一的非结构化电子病历实体识别带来准确率和召回率不高的情况。电子病历具有噪音大,特殊符号,书写错误等情况存在,因此需要采用深度学习模型来对其进行实体识别。因此难点总结如下:
1、 如何生产深度学习可用的标签数据,给大量的医疗文本打上实体类别的标签
2、 传统的基于规则和机器学习算法的实体识别准确率不高,如何提升
3、 部分医疗实体名字特别长,如何获取更长的上下文依赖,让识别准确率更高
4、 类别不均衡,有些类别的词特别少,有些很多
5、 未登录词如何处理
评测
本评测采用精确率(Precision)、召回率(Recall)以及 F1-Measure 作为评价指标。
9.4 数据的机器自动化标注以及转化为深度学习网络可读取格式
利用医学字典添加进结巴字典,然后分词,代码见:
9_chapter/9.1使用jieba制作数据集/
9.5 基于深度学习医疗保险命名实体识别的算法模块设计
这个项目使用是膨胀卷积神经网络:https://blog.csdn.net/qq_35495233/article/details/86638098
训练代码见:
9_chapter/9.2使用膨胀卷积神经网络训练电子病历NER/
9.6 本地lib封装
将测试环节封装成一个类Chunking,一次初始化,加载一次,可以多次调用:
9_chapter/9.3封装成本地lib库/
python 写代码三境界: 简洁、高效、抽象
9.7 将tensorflow训练好的模型部署为云服务
9_chapter/9.4部署到云端/