一种基于医学领域实体的病历结构化解析方法转让专利

申请号 : CN201910208301.6

文献号 : CN110032648A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 毛葛永孟海忠吴边尹伟东任宇翔陈啸冬曹晓光

申请人 : 微医云(杭州)控股有限公司

摘要 :

本发明公开了一种基于医学领域实体的病历结构化解析方法,该方法包括:1)对于常见的病历文本构建医学实体和属性类别表,以及相应的关系映射;2)采用Bert_BiLSTM_CRF模型对病历文本中的医学实体进行识别;3)按照语义切分病历文本形成一个个事件;4)重新组合事件;5)构建属性识别模型,抽取切分后的事件中的属性;6)利用知识图谱将同一个句子中的事件的医学实体进行连接,获取实体间的关系;7)对于不同类别的病历文本段定制不同的属性识别模型,最后按照文本顺序堆积结构化解析的结果,形成最终的病历结构化解析文本。

权利要求 :

1.一种基于医学领域实体的病历结构化解析方法,其特征在于,包括如下步骤:

1)对于常见的病历文本构建医学实体和属性类别表,以及相应的关系映射;

2)首先引用google的Bert预训练模型,将病历文本作为转化为输入向量,添加BiLSTM_CRF模型对病历文本中的医学实体进行识别,并标记句子中实体的位置;

3)按照语义切分病历文本形成一个个事件,事件作为结构化解析的最小单元;按照句法中断句标点切分句子,记录事件所属的句子;

4)重新组合事件,进行如下判断:如果事件作为起始句,但不包含实体,则将该事件添加到下一个事件中组合为新的事件;如果事件不是起始句且不包含实体,则将事件添加到上一个事件中组合成为新的事件;

5)构建属性识别模型,抽取切分后的事件中的属性,以事件中医学实体为中心,按照实体和属性的关系映射表,形成有效的实体和属性的关系对,基于医学逻辑剔除不符合医学逻辑的实体和属性关系对;

6)利用知识图谱将同一个句子中的事件的医学实体进行连接,获取实体间的关系,充分结构化解析病历文本。

7)对于不同类别的病历文本段定制不同的属性识别模型,最后按照文本顺序堆积结构化解析的结果,形成最终的病历结构化解析文本。

说明书 :

一种基于医学领域实体的病历结构化解析方法

技术领域

[0001] 本申请涉及一种基于医学领域实体的病历结构化解析方法。

背景技术

[0002] 医学领域实体具有其特殊性,主要包括症状、疾病、药物、治疗、体征、检查检验等类。
[0003] 文本结构化主要是利用算法进行信息关系抽取,将非结构化或者半结构化的文本数据转化为计算机可以自动分析、处理的格式。
[0004] 在病历结构化,由于病历文本书写的特异性,利用传统的信息关系抽取发法或者句法分析模型,难以获得较好的结构化结果。病历文本的结构化常见方法是识别病历中的医学实体,并对医学实体进行关系映射,而且由于实体其关系的复杂性,一般做法是识别实体和描述的key-values对或者识别给定的实体类的关系。
[0005] 医学领域的病历结构化主要有以下流程:
[0006] 第一,具有丰富医学的医学领域相关从业人员来规划了医学领域的实体类别和实体关系的类别。
[0007] 第二,根据不同的病历文本选取不同的实体类别和实体关系类别。
[0008] 第三,构建命名实体识别模型,识别医学实体。
[0009] 第四:基于位置或者语义形成实体对,构建实体关系识别模型。
[0010] 第五:结构化展示、存储。
[0011] 现有病历结构化方法主要存在以下问题:
[0012] 不同文本中关系的设定差别较大,需要根据特定的需求设定特定的模板;单纯实体表示的含义不够,一些修饰词会在很大程度上影响实体关系的判别。
[0013] 常用的实体识别模型如CRF模型需要人工提取足够的特征,才能够获取较好的结果,而人工提取特征的成本较大;深度学习模型RNN系列的序列模型+CRF模型中首先需要对输入文本进行向量化表示,而对于字或者词的向量表示常用的算法word2vec、glove训练的深度(网络的层数)较少,都难以利用上下文的丰富信息,且不能解决词的歧义问题。
[0014] 不同文本中关系的设定差别较大,需要根据特定的需求设定特定的模板;单纯实体表示的含义不够,病历中不同的实体有不同的属性,这些属性在一定程度上影响实体的意义,如描述否定的属性、程度的属性,在很大程度上超过了实体词本身涵盖的意思,影响实体关系的识别结果。

发明内容

[0015] 本发明的目的是针对现有病历文本结构化解析的不足,提供一种基于医学领域实体的病历结构化解析方法。
[0016] 由于结构化作为文本分析的底层服务,所以信息解析的越充分则后续利用越方便,这里将病历文本进行实体抽取,分句,切割事件,形成最小语意块。在语意块中提取实体和属性的关系对,并基于医学逻辑判断关系对是否合法;而后利用信息准确且丰富的知识图谱将句子中的实体关系进行连接,最后利用实体识别模型发现新类型文本中的新词,优化结构化解析结果。
[0017] 本发明的目的是通过以下的技术方案来实现:一种基于医学领域实体的病历结构化解析方法,在利用文本信息、领域知识、知识图谱的情况下充分结构化解析文本,该方法包括如下步骤:
[0018] 1)对于常见的病历文本构建医学实体和属性类别表,以及相应的关系映射。不同的实体差别较大,可以有多种属性识别模型;同一属性在不同实体中表现不同,映射关系会有一定的改变。如在症状中程度属性,在体征中可能为值属性。
[0019] 2)首先引用google的Bert预训练模型,将病历文本作为转化为输入向量,添加BiLSTM_CRF模型对病历文本中的医学实体进行识别,并标记句子中实体的位置。该步骤步骤利用了Bert_BiLSTM_CRF模型,这里采用了google的Bert预训练模型,并在其上封装BiLSTM_CRF模型,采用Bert模型丰富了字和词的语义内容,一定程度上避免了词的歧义性问题,利用Bert预训练模型的输出作为BiLSTM_CRF的输入,构建Bert_BiLSTM_CRF模型,在实体识别中获得较基于词向量+字向量的BiLSTM_CRF模型更好的识别结果。
[0020] 3)按照语义切分病历文本形成一个个事件,事件作为结构化解析的最小单元。按照句法中断句标点切分句子,记录事件所属的句子。
[0021] 4)重新组合事件,进行如下判断,如果事件作为起始句,但不包含实体,则将该事件的添加到下一个事件中组合为新的事件;如果事件不是起始句且不包含实体,则将事件添加到上一个事件中组合成为新的事件。该步骤对按照语言习惯(标点符号切分的事件)按照实体存在与否,重新合并相邻的事件,形成新的事件,并在组合中按照正向最大匹配的原则,一直组合到满足结束条件的事件。
[0022] 5)构建属性识别模型,抽取切分后的事件中的属性,以事件中医学实体为中心,按照实体和属性的关系映射表,形成有效的实体和属性的关系对,基于医学逻辑剔除不符合医学逻辑的实体和属性关系对。
[0023] 6)利用知识图谱将同一个句子中的事件的医学实体进行连接,获取实体间的关系,充分结构化解析病历文本。该步骤基于知识图谱的逻辑推理能力有效挖掘句子中跨事件的实体关系。
[0024] 7)对于不同类别的病历文本段定制不同的属性识别模型,最后按照文本顺序堆积结构化解析的结果,形成最终的病历结构化解析文本。
[0025] 本发明的有益效果是:本发明在病历文本的结构化解析中,①提出了相对完整的实体和属性类型和映射框架;②在实体识别中利用新的模型Bert_BiLSTM_CRF模型,基于Bert预训练的BiLSTM_CRF获得了较BiLSTM_CRF更好的识别结果;③在事件中,利用句子语义信息切分事件,将实体和属性约束在同一个事件中,有效提高实体和属性对的准确率;④利用知识图谱完善句子中实体与实体之间的关系,在医学领域的知识图谱是具备准确知识和逻辑推理能力的知识库,能够确保实体间关系的准确性。按照该框架能够对病历文本进行较为充分和相对准确的结构化解析。

附图说明

[0026] 图1是本申请一种基于医学领域实体的病历结构化解析方法的整体实现框架图;
[0027] 图2是本申请Bert_BiLSTM_CRF模型的实现框架图。

具体实施方式

[0028] 下面结合附图和实施例对本发明作进一步的详细说明。
[0029] 图1是本申请一种基于医学领域实体的病历结构化解析方法的整体实现框架图,该方法包括如下步骤:
[0030] 第一步:医学研究人员选定医学领域的实体。医学领域的实体主要包括:疾病、症状、药物、检查、体征、治疗六类,表1是本申请定义的病历结构化的实体属性对应的框架;
[0031] 表1:
[0032]
[0033] 第二步:建实体与属性的映射关系表;其中属性也是经过具有医学经验的从业者结合业务需求设定的,主要包括:部位、发生时间、持续时间、频率、大小、数量、程度、诱因、加重因素、减轻因素、性质、颜色、气味、状态、分期/型、剂量、药效、给药方式、治疗效果、检查描述值等类。具体映射关系见图2。
[0034] 第三步:构建Bert_BiLSTM_CRF模型识别病历文本中医学实体,这里主要分为6类,疾病、症状、药物、检查、体征、治疗。Bert_BiLSTM_CRF,可以分为三部分,Bert作为预训练的输入层,BiLSTM作为训练中间层,CRF作为顶层输出层。具体如下:
[0035] 这里先介绍Bert预训练模型,google的Bert通过深度双向Transformer编码器表征训练出来,该方法将来自左右的上下文信息加入到每一层中,训练出来的Bert模型稍作添加就能迁移到其他任务中,目前在11项自然语言处理领域的任务和比赛中取得了最好的结果。这里引入的Bert_BiLSTM_CRF模型是在bert-base-chinese的基础上添加BiLSTM_CRF,即输入文本,对文本格式进行预处理,添加段落开始和结束标志,以及段落id,将文本按照字分割,将字映射为对应的id号,转化为向量形式,记录文本中字的位置,并将位置转化为向量形式,同时将段落转化为向量形式,将文本字级别的向量、位置向量、段落向量输入深度双向Transformer模型,将该模型的输出节点向量作为BiLSTM_CRF的输入向量,最后经过BiLSTM_CRF的模型预测每一个字的类别,将分类按照词的组合形式组合起来,即为实体识别的结果。
[0036] 简单介绍Bert模型,Bert的全称是Bidirectional Encoder Representations from Transformers(基于Transformer的双向编码器表征),其中双向表示模型在处理某一个词时,它能同时利用前面的词和后面的词两部分信息。这种双向的来源在于Bert与传统语言模型不同,它不是在给定所有前面词的条件下预测最可能的当前词,而是随机遮掩一些词,并利用所有没被遮掩的词进行预测。BERT可以视为结合了OpenAI的GPT和ELMo优势的新模型。其中ELMo使用两条独立训练的LSTM获取双向信息,而GPT使用新型的Transformer和经典语言模型只能获取单向信息。Bert的主要目标是在GPT的基础上对预训练任务做一些改进,以同时利用Transformer深度模型与双向信息的优势。
[0037] 输入表征:模型的输入有A句和B句两个自然句,我们首先需要将每个字及特殊符号都转化为词嵌入向量。两个句子中间加入特殊符[SEP]用于分割两个句子,句子最后也加入[SEP]。且在A/B句最前面的特殊符[CLS],该特殊符可以视为汇集了整个输入序列的表征。最后的位置编码是Transformer架构本身决定的,因为基于完全注意力的方法并不能像CNN或RNN那样编码词与词之间的位置关系,但是正因为这种属性才能无视距离长短建模两个词之间的关系。因此为了令Transformer感知词与词之间的位置关系,我们需要使用位置编码给每个词加上位置信息。
[0038] Bert最核心的就是预训练过程,简单而言,模型会从数据集抽取两句话,其中B句有50%的概率是A句的下一句,然后将这两句话转化为前面所示的输入表征。现在我们随机遮掩(Mask掉)输入序列中15%的词,并要求Transformer预测这些被遮掩的词,以及B句是A句下一句的概率这两个任务。在实体识别领域中,保留Bert模型转化后的Tokens,将其作为序列识别模型的输入,即可在Bert模型的基础上完成迁移学习,实现实体识别的目的。
[0039] 这里选取的Bert的中文预训练模型bert_base_chinese,模型有12层,768个隐状态节点,12个self-Attention的‘头’(Head)。具体的注意力机制(Attention)简单来说就是给定一个查找(query)和一个键值表(key-value pairs),将query映射到正确的输入的过程。此处的query、key、value和最终的输出都是向量。输出往往是一个加权求和的形式,而权重则由query、key和value决定,self-Attention中query、key、value均等于输入序列x,其中Head的个数h表示利用h个线性变换分别将d维的key、value和query映射成dk维、dk维和dv维,然后再代入注意力机制,产生总共h×dv维输出,然后拼起来,再用一个线性变换得到最终的输出。具体公式如下:
[0040] head=Attention(QW,KW,VW)
[0041] MultiHead(Q,K,V)=Concat(head1,head2,...,headn)W
[0042] 其中W代表权重矩阵,n表示Head的个数。
[0043] BILSTM+CRF模型:是目前主流的实体识别模型,BiLSTM能够获取序列左右语序中上下文信息,对输入的字给以预测的标签的概率,在其上添加CRF层,能够将整个文本序列中预测出来标签概率按照约束形成一个相对最准确符合语言学描述的预测路径。而这条路径就是我们实体识别模型预测结果,从这条路径中提取需要的目标实体类别。
[0044] 简单介绍一下BiLSTM+CRF模型,该模型分为两大部分:第一部分为双向的长短记忆模型(BiLSTM),第二部分是CRF层。BiLSTM考虑的是输入序列中每一个单元X的上下文信息,添加CRF可以考虑标签(tag)之间的依赖关系信息。
[0045] 第一部分:BiLSTM可以参照LSTM,输入序列经过遗忘门、输入门、输出门,输出隐状态向量;双向LSTM即不仅考虑序列的正向影响,也考虑序列的后向影响,前向的LSTM与后向的LSTM结合成BiLSTM。比如,我们对“我爱中国”这句话进行编码,前向的LSTML依次输入“我”,“爱”,“中”,“国”得到四个向量{hL0,hL1,hL2,hL3},后向的LSTMR依次输入“国”,“中”,“爱”,“我”得到四个向量{hR0,hR1,hR2,hR3},最后将前向和后向的隐向量进行拼接得到{[hL0,hR3],[hL1,hR2],[hL2,hR1],[hL3,hR0]},即{h0,h1,h2,h3},连接转化后标签序列,训练模型。
[0046] LSTM简单介绍:LSTM的关键就是细胞状态,细胞状态类似于传送带,直接在整个链上运行,只有一些少量的线性交互,信息在上面流传保持不变会很容易。LSTM有通过“门”的结构来去除或者增加信息到细胞状态的能力。门是一种让信息选择式通过的方法。他们包含一个sigmoid神经网络层和一个pointwise乘法操作Sigmoid层输出0到1之间的数值,描述每个部分有多少量可以通过。0代表“不许任何量通过”,1就指“允许任意量通过”。LSTM拥有三个门,来保护和控制细胞状态,即遗忘门、输入门、输出门。LSTM中的第一步是决定我们会从细胞状态中丢弃什么信息,这个决定通过一个称为遗忘门层完成;下一步是确定什么样的新信息被存放在细胞状态中,这里包含两个部分:第一,sigmoid层称“输入门层”决定什么值我们将要更新。然后,一个tanh层创建一个新的候选值向量;再下一步,用这两个信息来产生对状态的更新;最后我们需要确定输出什么值,这个输出将会基于我们的细胞状态,首先运行一个sigmoid层来确定细胞状态的哪个部分将输出出去,而后把细胞状态通过tanh进行处理(得到一个在-1到1之间的值)并将它和sigmoid门的输出相乘,最终我们仅仅会输出我们确定输出的那部分。具体公式如下:
[0047]
[0048] CRF模型:这里CRF采用BMIOS标记方法,一个字对应一个标签,其中B表示词的起始,M表示字在词的中间,I表示字为词的结尾,S表示单个字符成一个独立的词,O表示非目标实体的其他字。CRF在计算中有发射概率矩阵和转移概率矩阵两部分,在BILSTM+CRF中BiLSTM层的输出是每个词的所有标签的各自得分,相当于每个词映射到标签的发射概率值,CRF中的转移概率矩阵A,Ai,j代表tagi转移到tagj的转移概率。对于输入序列X对应的输出tag序列y,定义分数为score,其中每一个score对应一个完整的路径。利用维特比算法进行预测,求解最优路径,最优的路径即输出序列的最后预测结果。
[0049] 第四步:按照语义切分病历文本形成一个个事件,一个事件代表一件相对完整的语义内容。
[0050] 首先是基于文本的形式按照常见的中文和英文标点符号进行首次切分,经过中文标点符号的句子作为最小的实践。
[0051] 其次,导入各类实体的字典,由于时间模式具有特殊性,将时间识别模型镶嵌入分词模型中,在分词的时候识别时间和各类实体。对最小事件进行切分,保留事件和实体以及事件所属句子标识。
[0052] 事件切分后,按照以下几个标准组合形成新的事件:
[0053] 首先:判断切分事件的标点符号,如果为句号,则代表句子的结束,下一个事件作为新的句子的起始,记录句子标识。如果为其他标识语义停顿的标点符号,记为一个个事件并将句子的标识添加到事件上。
[0054] 然后判断是否需要组合事件,如果句子中首个事件不包含实体则往下添加下一个事件作为一个完整的事件,按照前向最大匹配的原则,直到下一个事件中存在实体为止。如果在其他位置的事件,下一个事件中不包含实体则将下一个事件加入到该事件形成新的事件,迭代进行,直到下一个事件中存在实体为止。如此进行下去,将所有的句子按照这种原则切分一个个事件。将事件作为实体和属性对应的文本范围。
[0055] 第五步:抽取事件中的属性,形成实体和属性对。
[0056] 属性识别:状态,即有、无和不确定的情况。病例中,经常出现否认XX疾病,无XX症状等,状态在病历解析中尤为重要。这里主要利用经验经病历文本中书写方式中常见的否定词放入字典,利用分词模型进行分词后,利用贪婪匹配的原则,逐一对应到同一事件的实体(具有状态属性的实体:疾病和症状)上。
[0057] 属性识别:发生时间和持续时间。在上面的事件切分的时候,将时间识别模嵌入到分词模型中去,因此在前面(第三步中)就识别出识别出事件中的时间,这里需要判断时间是发生时间还是持续时间,约定发生时间就是一个时间点,持续时间是一个时间段。基于时间段和时间点的区别可以将二者以规则的模式区分开来。由于在时间模型中,未能识别一些医院的特定时间如:出院时、入院时等词,这里额外添加正则规则对这列词进行识别。
[0058] 属性识别:部位。一方面基于领域字典在分词时获取部位,另一方利用正则规则扩充部位,将相邻的部位组合,将部位附近的方位词与部位组合在一起生成新的部位。
[0059] 属性识别:频率。一方面基于领域字典在分词时获取部分频率,另一方利用实体中常见的常见的情况构建正则规则识别频率,不同的实体下频率的表达方式也有较大的差别,如症状一般是X次这类,而在药物中一般是X次/天等。
[0060] 属性识别:大小和数量。基于模式匹配识别大小和数量属性,其中在大小中,可分为两类,一为形容物体大小的形容词,二为数值+计量单位。识别计量单位,来锁定属性所在位置,基于模式匹配抽取属性。这里区分单位类别如果单位为容量和质量则记为数量属性,否则记为大小属性。而且大小中需要识别单位,由于词库中添加的单位一般为单一的单位,中间不包含/或者*等符号链接的组合单位,因此在识别大小属性前,需要添加规则识别这部分组合单位。
[0061] 属性识别:诱因、加重因素和减轻因素。基于正则规则和词性识别诱因,诱因一般出现在症状和疾病实体文本附近,而当诱因后有症状的变化的情况,如果是导致症状或者疾病恶化则为加重因素,如果是导致症状或疾病减轻则为减轻因素。
[0062] 属性识别:用药方式和剂量,参照大量的药品说明书和病例中提取正则规则,基于规则抽取这类属性。
[0063] 属性识别:程度、颜色、性质、气温。基于字典的词分割,选取对应的词性作为属性。
[0064] 不同的实体存在不同的属性,对事件中心的实体进行判别,基于实体属性对照表,形成候选实体属性对。
[0065] 在实体中也会存在属性,如在症状和疾病中常存在部位属性以及性质属性,对这两种实体再次提取属性和部位。
[0066] 第六步:添加逻辑判断剔除不符合医学逻辑的关系对。
[0067] 在匹配的实体和属性对中,一个事件内的属性会匹配到事件内所有的实体上,为了进一步减少错误实体属性对,这里做了如下处理:当属性为性质、颜色、尺寸、数量时,默认只对应一个实体,取和这类属性的位置距离最近的实体,作为有效的实体属性对,其余实体和该类属性对剔除;如果一个事件中多个时间属性,导致每一个实体可能对应多个时间属性,部分时间不能对应在实体上,可能是属性对应的时间,这里需要对时间进行匹配,如果是加重减轻等属性的时间,则在这类实体属性对上剔除这部分时间;按照医学逻辑进行剔除,如果是含血、呕吐、结节、肿块等症状的实体才可能存在数量,发热、胸口痛等大部分实体不存在这类属性,因此添加判断,如果非含血、呕吐、结节、肿块等症状则剔除存在的数量属性。
[0068] 第七步:应用知识图谱将句子中实体与实体间进行连接。
[0069] 利用构建好的知识图谱,获取实体间的对应关系,知识图谱中包含实体的同义词、简写等而且有确定的医学关系,利用图谱获取句子中实体关系间的对应。
[0070] 第八步:基于病历不同的文本段构建定制的识别模型,文本类支持扩展。
[0071] 对主诉、现病史、既往史、个人史、家族史、体格检查、诊断等文本类型的结果分别进行结构化,然后对总体的结果按照顺序进行排列,形成文本总的结构化解析。其中对体格检查文本段进行特殊处理,当输入文本为体格检查时,将文本中识别为症状的实体类型转变为体征,在一定程度上消除体征和症状词相似度较高的情况。
[0072] 本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。