一种中文医疗命名实体识别方法与流程

    专利2022-07-08  137


    本发明涉及一种医疗命名实体识别方法,属于自然语言处理中命名实体识别技术领域。



    背景技术:

    自然语言处理是近几年热门研究方向,其目的是让计算机理解人类的语言并进行有效交互。命名实体识别技术是自然语言处理中一项非常重要的技术,其目的是识别语句中包含特定意义的实体,包括人名,地名,机构名,专有名词等。具体的命名实体识别任务又可分为通用领域的命名实体识别和特定领域的命名实体识别,如金融,医疗,军事领域等,本发明提出的命名实体识别方法基于医疗领域,主要用于识别电子病历,体检报告,药方等文本中的中文医疗命名实体,具体可应用于中文医疗知识图谱构建,智能医疗聊天机器人等多个应用场景中。

    早期医疗领域命名实体识别主要采用基于词典和规则的方法,主要通过手动构建的医疗领域词典和定制的识别规则来识别命名实体。后来,基于统计学习的机器学习方法被应用于医疗命名实体识别模型中,其中运用较多的是条件随机场模型。近年来,随着硬件计算能力的大幅度提高,基于深度神经网络的方法已经被广泛地应用到医疗命名实体识别中,其中最常见的是使用双向长短期记忆网络和条件随机场的组合模型。



    技术实现要素:

    发明目的:为了克服现有技术中难以应对医疗文本中命名实体专业性较强,实体之间互相嵌套,以及一字多义问题,本发明提供一种中文医疗命名实体识别方法,通过基于注意力机制的语言预处理模型生成医疗文本中每个字的特征向量,通过基于双向门控循环网络的医疗实体识别模型生成最终的标签序列,根据标签序列识别医疗命名实体,基于注意力机制的语言预处理模型在实体识别之前预先生成增强语义的字向量,并在医疗实体识别模型中加入多头注意力层以提取医疗文本中字的多重语义,从而有效提高识别效果。医疗领域缺乏高质量的标注数据,长短期记忆网络模型参数较多,训练时间较长,因此本发明使用双向门控循环网络代替双向长短期记忆神经网络,以提高实体识别的速度。

    技术方案:为实现上述目的,本发明采用的技术方案为:

    一种中文医疗命名实体识别方法,包括基于注意力机制的语言预处理模型和医疗实体识别模型。在语言预处理模型中,引入注意力机制,从而使生成的字向量可以学习到字符间长距离依赖关系,增强字向量的语义特征,例如对于包含中文医疗信息的文本,如电子病历,药方,体检报告等,首先将文本分割为字符,然后通过基于注意力机制的语言预处理模型生成每个字符的字向量。在医疗实体识别模型中,使用双向门控循环网络代替双向长短期记忆网络以提高模型训练速度,并添加多头注意力层进一步提取字的多重语义信息,提升了医疗命名实体识别的准确率,最后使用条件随机场生成最终的标签序列,根据标签序列识别文本中的医疗命名实体。中文医疗命名实体识别方法主要应用于医疗信息抽取,在中文医疗机器人,中文医疗知识图谱等多个领域具有重要的应用价值。传统的命名实体识别方法一般基于双向长短期记忆网络和条件随机场,双向长短期记忆网络无法并行处理数据,训练速度较慢,同时其对于中文医疗文本中存在的实体专业性较强,实体相互嵌套等问题缺乏良好的应对方案,因此本发明通过使用双向门控循环网络代替双向长短期记忆网络以提高训练速度,并通过一种基于注意力机制的语言预处理模型对字符进行训练并生成字向量,增强字的语义表示,同时在医疗实体识别模型的双向门控循环网络层后添加多头注意力层,进一步挖掘医疗文本的局部特征以及字的多重语义信息,从而提高了中文医疗命名实体识别的准确率和识别效率,具体包括以下步骤:

    步骤1,将用于训练的医疗文本进行字符级切分,得到用于训练的医疗文本切分字符。将用于识别的医疗文本进行字符级切分得到用于识别的医疗文本切分字符。

    步骤2,对用于训练的医疗文本切分字符进行标注,得到用于训练的标注医疗文本,其中,医疗命名实体的开始字符标注为‘b’,医疗命名实体的非开始字符标注为‘i’,不是实体的字符标注为‘o’。

    步骤3,使用步骤2得到的用于训练的标注医疗文本对基于注意力机制的语言预处理模型进行训练,得到训练好的基于注意力机制的语言预处理模型。基于注意力机制的语言预处理模型包括依次连接的字嵌入层、位置向量嵌入层和注意力机制层。

    步骤3.1,将步骤2得到的用于训练的标注医疗文本以句为单位送入基于注意力机制的语言预处理模型的字嵌入层。字嵌入层使用跳字模型生成每一个字的字向量。跳字模型使用一个中间字预测其周围的字,对于长度为l的医疗文本,文本序列中第个字表示为,最大化给定一随机中心字生成其所有背景字的概率:

    (1)

    其中,表示从文本中的第一个字开始计算概率,表示对于每一个中心字计算所有与其距离不超过的背景字的出现概率,表示窗口大小,表示以为中心字,为窗口大小,其各个背景字的出现概率,式(1)等价于最小化第一损失函数:

    (2)

    其中,表示对数损失函数。

    假设中心字在文本中索引为,背景字在文本中索引为,第一损失函数中给定中心字生成背景字的条件概率通过归一化指数函数为:

    (3)

    其中,表示索引为的中心字向量,表示索引为的背景字向量,表示背景字向量的转置,表示两个向量的点乘,表示对文本中的每一个字符都进行点乘,表示以自然常数e为底数的指数函数。使用随机梯度下降法求解上式中的中心字向量的梯度:

    (4)

    使用式(4)迭代训练基于注意力机制的语言预处理模型直到第一损失函数值小于第一阈值,训练结束后,对于医疗文本中任意一索引为的字,均得到其作为中心字的向量

    步骤3.2,将字嵌入层生成的字向量送往位置向量嵌入层,位置向量嵌入层使用位置向量表示每个字符的位置关系,并将字向量和位置向量叠加,获取字的新特征向量。位置向量计算公式如公式(5)和公式(6)所示:

    (5)

    (6)

    其中,为二维矩阵,矩阵的列数和之前生成的字向量维度相同,的行表示每一个字,列表示每一个字在各维度的位置向量,总列数等于字向量的总维数。为位置向量的总维度,表示向量具体的维数,表示索引为的字的位置向量在偶数维度的值,使用正弦函数计算。表示索引为的字的位置向量在奇数维度的值,使用余弦函数计算。最后将位置向量和字向量相加得到字的新特征向量,如公式(7)所示:

    (7)

    其中,表示索引为的字的位置向量,表示任意一索引为的字作为中心字的字向量,表示嵌入了位置信息的新特征向量。

    步骤3.3,使用注意力机制学习字符间的长距离依赖关系,使字向量包含句中其它所有字的信息。注意力机制层的输出为最终生成字向量,进而完成基于注意力机制的语言预处理模型的训练。

    步骤4,使用步骤2得到的用于训练的标注医疗文本对医疗实体识别模型进行训练,得到训练好的医疗实体识别模型,医疗实体识别模型包括依次连接的双向门控循环网络层、多头注意力层和条件随机场层。

    步骤4.1,使用双向门控循环网络层对字向量进行双向编码,双向门控循环网络层包括一个正向门控循环网络层和一个反向门控循环网络层,正向门控循环网络层学习后文特征,反向门控循环网络层学习前文特征,从而使生成的向量更好地捕捉前后文语义信息,学习上下文关系。门控循环网络层仅由更新门和重置门组成,其中更新门决定过去传递到未来的信息量,重置门决定过去信息的被遗忘量,门控循环网络层计算如公式(10)-公式(13)所示:

    (10)

    (11)

    (12)

    (13)

    其中,为更新门在时刻的输出状态,为重置门在时刻的输出状态,为候选状态,表示时刻网络的输出状态,表示当前时刻的输入状态,表示上一时刻门控循环网络节点输出的隐藏状态,表示函数,表示激励函数为训练更新门的权重参数,为训练重置门的权重参数,为计算候选状态时所用的权重参数。表示两个向量相连。更新门用来控制当前时刻网络的输出状态中要保留多少历史状态,重置门的作用是决定了候选状态对上一时刻门控循环网络节点输出的隐藏状态的依赖程度。

    步骤4.2,使用多头注意力层进一步提取多重语义:多头注意力层实质指进行两次以上的注意力头运算,对于通过双向门控循环网络层的时刻网络的输出状态,首先通过公式(16)进行单头注意力计算:

    (16)

    其中,表示个注意力头计算的结果,表示总共有个注意力头,为生成查询向量的权重参数,为生成键向量的权重参数,为生成值向量的权重参数,维度的调节平滑项,为归一化指数函数,最后,拼接这次的计算结果并做一次线性变换,得到对于每一时刻通过双向门控循环网络层的时刻网络的输出状态的多头注意力运算结果,如公式(17)所示:

    (17)

    其中,表示多头注意力层的计算结果,为权重参数;

    步骤4.3,使用条件随机场层获取最优标签序列:对于输入句子,句子标签序列的打分为:

    (18)

    其中,表示输入句子x生成标签序列y的打分函数,为序列长度,为转移得分矩阵,表示由标签转移到标签的转移得分,表示句中起始和终止标签,表示第个字被标记为的概率。归一化得到标签序列的最大概率,如公式(19):

    (19)

    其中,表示真实的标签序列,表示所有可能标签序列的集合。

    使用最大似然估计法求解医疗实体识别模型的最小化第二损失函数,如公式(20):

    (20)

    其中,表示第二损失函数值,迭代训练医疗实体识别模型直至第二损失函数值小于第二阈值,然后,利用维特比算法求得全局最优序列,全局最优序列即为最终医疗领域命名实体识别的标注结果。

    最后,根据标签序列识别文本中的医疗命名实体。其中,如果字符标注为(b),则代表其是医疗命名实体的首字符,如果字符标注为(i),则代表其是医疗命名实体的非开始部分,如果字符标注为(o),则代表其不是医疗命名实体。

    步骤5,识别时,将用于识别的医疗文本切分字符导入到训练好的基于注意力机制的语言预处理模型中生成字向量。将得到的生成字向量导入训练好的医疗实体识别模型中识别文本中的医疗命名实体。

    优选的:步骤3.3中注意力机制计算公式如公式(8)所示:

    (8)

    其中,表示注意力分数,表示查询向量,表示键向量,表示值向量,表示键向量维数的平方根,函数为归一化指数函数。

    优选的:归一化指数函数softmax函数:

    (9)

    其中,表示数组,表示数组中的第个元素,的值即为数组中第个元素的指数与其它所有元素指数和的比值。

    优选的:步骤4.1中函数值域为(-1,1),表达式如公式(14)所示:

    (14)

    其中,表示函数的输入。

    优选的:步骤4.1中激励函数值域为(-1,1),表达式如公式(15)所示:

    (15)

    优选的:步骤4.3中利用维特比算法求得全局最优序列,如公式(21)所示:

    (21)

    其中,为集合中使得分函数取得最大值的标签序列。

    本发明相比现有技术,具有以下有益效果:

    本发明使用基于注意力机制的语言预处理模型对文本进行预处理并生成对应的字向量,使用双向门控循环网络层对字向量进行双向编码,使用多头注意力层进一步获取文本的局部特征以及实体的多重语义,最后使用条件随机场层生成最终的标签序列,根据标签序列识别文本中的医疗命名实体,解决了中文医疗命名实体识别不准确以及识别速度较慢的问题。通过基于注意力机制的语言预处理模型,对医疗文本中的每一个字生成包含字的位置特征和字符间联系的字向量,增强了字的语义表示。医疗实体识别模型中,使用双向门控循环网络代替了双向长短期记忆网络,一定程度上减小了训练的开销,提升模型训练的效率,并添加多头注意力层,进一步学习了医疗文本的局部特征以及字的多重语义,提升了医疗命名实体识别的准确率。

    附图说明

    图1为本发明具体流程示意图。

    图2为基于注意力机制的语言预处理模型框架。

    图3为医疗实体识别模型框架。

    图4为门控循环网络示意图。

    具体实施方式

    下面结合附图和具体实施例,进一步阐明本发明,应理解这些实例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。

    一种中文医疗命名实体识别方法,首先使用医疗文本在进行分割和标记处理后,对语言预处理模型进行训练,然后将待识别的医疗文本送入训练好的语言预处理模型生成增强语义的字向量,然后使用经过训练的医疗实体识别模型根据字向量生成标签序列,最后根据标签序列识别医疗命名实体,如图1所示,具体包括以下步骤:

    步骤1,将用于训练的医疗文本进行字符级切分,得到用于训练的医疗文本切分字符。如医疗文本为‘未见明显骨折’,切分后为字符‘未’,‘见’,‘明’,‘显’,‘骨’,‘折’。将用于识别的医疗文本进行字符级切分得到用于识别的医疗文本切分字符。如输入文本为‘持续发热四天’,则经过处理后的文本为‘持’,‘续’,‘发’,‘热’,‘四’,‘天’。

    步骤2,对用于训练的医疗文本切分字符进行标注,得到用于训练的标注医疗文本,其中,医疗命名实体的开始字符标注为‘b’,医疗命名实体的非开始字符标注为‘i’,不是实体的字符标注为‘o’。如对于医疗文本‘未见明显骨折’,最终的标注序列为‘未(o)’,‘见(o)’,‘明(o)’,‘显(o)’,‘骨(b)’,‘折(i)’,其中’bio’标注用于区分医疗命名实体,为后续的医疗实体识别模型训练作准备。

    步骤3,使用步骤2得到的用于训练的标注医疗文本对基于注意力机制的语言预处理模型进行训练,得到训练好的基于注意力机制的语言预处理模型。如图2所示,基于注意力机制的语言预处理模型包括依次连接的字嵌入层、位置向量嵌入层和注意力机制层,对于分割后的文本,首先通过字嵌入层使用跳字模型生成字向量,然后在位置向量嵌入层通过加入位置向量学习每个字符的位置信息,最后在注意力机制层学习每个字符和其它所有字符的联系,从而加强字的语义表示。

    步骤3.1,将步骤2得到的用于训练的标注医疗文本以句为单位送入基于注意力机制的语言预处理模型的字嵌入层。字嵌入层使用跳字模型生成每一个字的字向量。跳字模型使用一个中间字预测其周围的字,对于长度为l的医疗文本,文本序列中第个字表示为,最大化给定一随机中心字生成其所有背景字的概率:

    (1)

    其中,表示从文本中的第一个字开始计算概率,表示对于每一个中心字计算所有与其距离不超过m的背景字的出现概率,表示窗口大小,生成的背景字与中心字的距离不大于表示以为中心字,为窗口大小,其各个背景字的出现概率,式(1)等价于最小化第一损失函数:

    (2)

    其中,表示对数损失函数。

    假设中心字在文本中索引为,背景字在文本中索引为,第一损失函数中给定中心字生成背景字的条件概率通过归一化指数函数归一化为:

    (3)

    其中,表示索引为的中心字向量,表示索引为的背景字向量,表示背景字向量的转置,表示两个向量的点乘,表示对文本中的每一个字符都进行点乘,表示以自然常数e为底数的指数函数。使用随机梯度下降法求解上式中的中心字向量的梯度:

    (4)

    使用式(4)迭代训练基于注意力机制的语言预处理模型直到第一损失函数值小于第一阈值,第一阈值为事先设定好的常量,训练结束后,对于医疗文本中任意一索引为的字,均得到其作为中心字的向量,使用作为字嵌入层的最终输出向量。

    步骤3.2,将字嵌入层生成的字向量送往位置向量嵌入层,位置向量嵌入层使用位置向量表示每个字符的位置关系,并将字向量和位置向量叠加,获取字的新特征向量。位置向量计算公式如公式(5)和公式(6)所示:

    (5)

    (6)

    其中,为二维矩阵,矩阵的列数和之前生成的字向量维度相同,的行表示每一个字,列表示每一个字在各维度的位置向量,总列数等于字向量的总维数。表示字在医疗文本中的索引,为位置向量的总维度,表示向量具体的维数,表示索引为的字的位置向量在偶数维度的值,使用正弦函数计算。表示索引为的字的位置向量在奇数维度的值,使用余弦函数计算。最后将位置向量和字向量相加得到字的新特征向量,如公式(7)所示:

    (7)

    其中,表示索引为的字的位置向量,表示任意一索引为的字作为中心字的字向量,表示嵌入了位置信息的新特征向量。在字向量中嵌入位置向量的目的是为后续的注意力计算做准备。如果医疗文本中一个字和文本中另外两个内容相同但是所在位置不同的字进行注意力计算,如果没有嵌入位置向量以表示区别,则会得到相同的注意力计算结果,但事实上该字和这两个字的关联程度是不相同的,因此,必须使用位置向量表示每个字符的位置关系。

    步骤3.3,使用注意力机制学习字符间的长距离依赖关系,使字向量包含句中其它所有字的信息。字嵌入层生成的字向量使用背景字预测中心字,无法学习长距离字符的依赖关系。加入注意力机制,可以使字向量学习到句中所有其它字符的依赖关系。注意力机制具体计算公式如公式(8)所示:

    注意力机制计算公式如公式(8)所示:

    (8)

    其中,表示注意力打分函数,表示查询向量,表示键向量,表示值向量,通过字向量与对应的权重矩阵相乘获得。表示键向量维数的平方根,用来防止相乘结果过大,函数为归一化指数函数,其具体数学表达式如公式(9)所示:

    (9)

    其中,表示数组,表示数组中的第个元素,的值即为数组中第个元素的指数与其它所有元素指数和的比值。

    注意力机制层的输出即为语言预处理模型最终生成的字向量。函数的作用是对文本中所有字符打分并归一化,每个字符的分数都为正值且和为1。因此公式(8)本质上是对文本中每一个字符的值向量进行加权求和,的值即为对应值向量的权重系数。注意力机制层的输出为最终生成字向量,进而完成基于注意力机制的语言预处理模型的训练。最终生成的字向量包含了字的位置信息以及句中每一个其它字符的依赖关系,从而增强了字的语义,提高了医疗实体识别模型的准确率。

    步骤4,使用步骤2得到的用于训练的标注医疗文本对医疗实体识别模型进行训练,得到训练好的医疗实体识别模型,如图3所示,医疗实体识别模型包括依次连接的双向门控循环网络层、多头注意力层和条件随机场层。医疗文本首先通过训练好的语言预处理模型,生成对应的字向量。双向门控循环网络层由两层门控循环网络组成,对字向量进行双向编码,充分学习前后文关系。多头注意力层对于双向门控循环网络层的输出进行多次注意力运算,从而进一步学习医疗文本的局部特征以及字的多重语义,最后使用条件随机场层生成最终的标签序列,根据标签序列识别医疗命名实体。

    步骤4.1,使用双向门控循环网络层对字向量进行双向编码,以充分学习前后文关系,医疗领域命名实体构成复杂,实体的子序列也有可能是实体,如‘脾脏切除术’和‘脾脏’,同时字符前后具有较强的关联性,在使用神经网络训练时要充分考虑字上下文的关系。传统的命名实体识别模型常使用双向长短期记忆网络进行编码,但是长短期记忆网络参数较多,训练速度较慢。双向门控循环网络层包括一个正向门控循环网络层和一个反向门控循环网络层,正向门控循环网络层学习后文特征,反向门控循环网络层学习前文特征,从而使生成的向量更好地捕捉前后文语义信息,学习上下文关系。门控循环网络是长短期记忆网络的变体,仅由更新门和重置门组成,其中更新门决定过去传递到未来的信息量,重置门决定过去信息的被遗忘量,相比于长短期记忆网络,双向门控循环网络参数更少,模型精简,计算速度更快,更适合用于本发明提出的医疗实体识别模型。门控循环网络的具体结构如图4所示,图中,表示向量的加权运算,表示数与矩阵的点乘算法,具体计算结构如公式(10)-公式(13)所示:

    (10)

    (11)

    (12)

    (13)

    其中,为更新门在时刻的输出状态,为重置门在时刻的输出状态,为候选状态,表示时刻网络的输出状态,表示当前时刻的输入状态,表示上一时刻门控循环网络节点输出的隐藏状态,表示函数,表示激励函数为训练更新门的权重参数,为训练重置门的权重参数,为计算候选状态时所用的权重参数,表示两个向量相连。更新门用来控制当前时刻网络的输出状态中要保留多少历史状态,重置门的作用是决定了候选状态对上一时刻门控循环网络节点输出的隐藏状态的依赖程度。

    函数值域为(-1,1),表达式如公式(14)所示:

    (14)

    其中,表示函数的输入。

    激励函数值域为(-1,1),表达式如公式(15)所示:

    (15)

    步骤4.2,使用多头注意力层进一步提取多重语义含义:医疗文本中存在一词多义现象,因此在双向门控循环网络后添加多头注意力层,进一步学习实体的依赖关系,捕捉字的多重语义。头注意力层实质上是进行多次注意力运算,对于通过双向门控循环网络层的时刻网络的输出状态,首先通过公式(16)进行单头注意力计算:

    (16)

    其中,表示个注意力头计算的结果,表示总共有个注意力头,即共计算次,为生成查询向量的权重参数,为生成键向量的权重参数,为生成值向量的权重参数,维度的调节平滑项,防止向量乘积过大,为归一化指数函数,最后,拼接这次的计算结果并做一次线性变换,得到对于每一时刻通过双向门控循环网络层的时刻网络的输出状态的多头注意力运算结果,如公式(17)所示:

    (17)

    其中,表示多头注意力层的计算结果,表示总共有个注意力头,为权重参数。多头注意力层扩展了医疗实体识别模型专注于不同位置的能力,从而进一步提取医疗文本中字的多重语义。

    步骤4.3,使用条件随机场层获取最优标签序列:在医疗命名实体识别模型中,双向门控循环网络层只能获取包含进一步上下文信息的字向量,即使加入多头注意力层也无法考虑标签之间的依赖关系,比如(i)标签必须在(b)标签之后。因此本发明采用条件随机场层考虑标签之间的相邻关系来获取全局最优的标签序列。条件随机场模型是一种经典的判别式概率无向图模型,该模型经常被应用于序列标注任务中,对于输入句子,句子标签序列的打分为:

    (18)

    其中,表示输入句子x生成标签序列y的打分函数,为序列长度,为转移得分矩阵,表示由标签转移到标签的转移得分,表示句中起始和终止标签,,这两个标签只在计算时临时添加,表示第个字被标记为的概率。归一化得到标签序列的最大概率,如公式(19):

    (19)

    其中,表示真实的标签序列,表示所有可能标签序列的集合。

    使用最大似然估计法求解医疗实体识别模型的最小化第二损失函数,如公式(20):

    (20)

    其中,表示第二损失函数值,迭代训练医疗实体识别模型直至第二损失函数值小于第二阈值,第二阈值为事先设定好的常量,然后,利用维特比算法求得全局最优序列,全局最优序列即为最终医疗领域命名实体识别的标注结果,如公式(21)所示:

    (21)

    其中,为集合中使得分函数取得最大值的标签序列。

    最后,根据标签序列识别文本中的医疗命名实体。其中,如果字符标注为(b),则代表其是医疗命名实体的首字符,如果字符标注为(i),则代表其是医疗命名实体的非开始部分,如果字符标注为(o),则代表其不是医疗命名实体。如输入文本为‘持续发热四天’,则最终标注为‘持(o)’,‘续(o)’,‘发(b)’,‘热(i)’,‘四(o)’‘天(o)’根据标注识别出医疗命名实体‘发热’。

    步骤5,识别时,将用于识别的医疗文本切分字符导入到训练好的基于注意力机制的语言预处理模型中生成字向量。将得到的生成字向量导入训练好的医疗实体识别模型中识别文本中的医疗命名实体。

    以上所述仅是本发明的优选实施方式,应当指出:对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。


    技术特征:

    1.一种中文医疗命名实体识别方法,其特征在于,包括以下步骤:

    步骤1,将用于训练的医疗文本进行字符级切分,得到用于训练的医疗文本切分字符;将用于识别的医疗文本进行字符级切分得到用于识别的医疗文本切分字符;

    步骤2,对用于训练的医疗文本切分字符进行标注,得到用于训练的标注医疗文本,其中,医疗命名实体的开始字符标注为‘b’,医疗命名实体的非开始字符标注为‘i’,不是实体的字符标注为‘o’;

    步骤3,使用步骤2得到的用于训练的标注医疗文本对基于注意力机制的语言预处理模型进行训练,得到训练好的基于注意力机制的语言预处理模型;基于注意力机制的语言预处理模型包括依次连接的字嵌入层、位置向量嵌入层和注意力机制层;

    步骤3.1,将步骤2得到的用于训练的标注医疗文本以句为单位送入基于注意力机制的语言预处理模型的字嵌入层;字嵌入层使用跳字模型生成每一个字的字向量;跳字模型使用一个中间字预测其周围的字,对于长度为l的医疗文本,文本序列中第个字表示为,最大化给定一随机中心字生成其所有背景字的概率:

    (1)

    其中,表示从文本中的第一个字开始计算概率,表示对于每一个中心字计算所有与其距离不超过的背景字的出现概率,表示窗口大小,表示以为中心字,为窗口大小,其各个背景字的出现概率,式(1)等价于最小化第一损失函数:

    (2)

    其中,表示对数损失函数;

    假设中心字在文本中索引为,背景字在文本中索引为,第一损失函数中给定中心字生成背景字的条件概率通过归一化指数函数为:

    (3)

    其中,表示索引为的中心字向量,表示索引为的背景字向量,表示背景字向量的转置,表示两个向量的点乘,表示对文本中的每一个字符都进行点乘,表示以自然常数e为底数的指数函数;使用随机梯度下降法求解上式中的中心字向量的梯度:

    (4)

    使用式(4)迭代训练基于注意力机制的语言预处理模型直到第一损失函数值小于第一阈值,训练结束后,对于医疗文本中任意一索引为的字,均得到其作为中心字的向量

    步骤3.2,将字嵌入层生成的字向量送往位置向量嵌入层,位置向量嵌入层使用位置向量表示每个字符的位置关系,并将字向量和位置向量叠加,获取字的新特征向量;位置向量计算公式如公式(5)和公式(6)所示:

    (5)

    (6)

    其中,为二维矩阵,矩阵的列数和之前生成的字向量维度相同,的行表示每一个字,列表示每一个字在各维度的位置向量,总列数等于字向量的总维数;为位置向量的总维度,表示向量具体的维数,表示索引为的字的位置向量在偶数维度的值,使用正弦函数计算;表示索引为的字的位置向量在奇数维度的值,使用余弦函数计算;最后将位置向量和字向量相加得到字的新特征向量,如公式(7)所示:

    (7)

    其中,表示索引为的字的位置向量,表示任意一索引为的字作为中心字的字向量,表示嵌入了位置信息的新特征向量;

    步骤3.3,使用注意力机制学习字符间的长距离依赖关系,使字向量包含句中其它所有字的信息;注意力机制层的输出为最终生成字向量,进而完成基于注意力机制的语言预处理模型的训练;

    步骤4,使用步骤2得到的用于训练的标注医疗文本对医疗实体识别模型进行训练,得到训练好的医疗实体识别模型,医疗实体识别模型包括依次连接的双向门控循环网络层、多头注意力层和条件随机场层;

    步骤4.1,使用双向门控循环网络层对字向量进行双向编码,双向门控循环网络层包括一个正向门控循环网络层和一个反向门控循环网络层,正向门控循环网络层学习后文特征,反向门控循环网络层学习前文特征,从而使生成的向量更好地捕捉前后文语义信息,学习上下文关系;门控循环网络层仅由更新门和重置门组成,其中更新门决定过去传递到未来的信息量,重置门决定过去信息的被遗忘量,门控循环网络层计算如公式(10)-公式(13)所示:

    (10)

    (11)

    (12)

    (13)

    其中,为更新门在时刻的输出状态,为重置门在时刻的输出状态,为候选状态,表示时刻网络的输出状态,表示当前时刻的输入状态,表示上一时刻门控循环网络节点输出的隐藏状态,表示函数,表示激励函数为训练更新门的权重参数,为训练重置门的权重参数,为计算候选状态时所用的权重参数;表示两个向量相连;更新门用来控制当前时刻网络的输出状态中要保留多少历史状态,重置门的作用是决定了候选状态对上一时刻门控循环网络节点输出的隐藏状态的依赖程度;

    步骤4.2,使用多头注意力层进一步提取多重语义:多头注意力层实质指进行两次以上的注意力头运算,对于通过双向门控循环网络层的时刻网络的输出状态,首先通过公式(16)进行单头注意力计算:

    (16)

    其中,表示个注意力头计算的结果,表示总共有个注意力头,为生成查询向量的权重参数,为生成键向量的权重参数,为生成值向量的权重参数,维度的调节平滑项,为归一化指数函数,最后,拼接这次的计算结果并做一次线性变换,得到对于每一时刻通过双向门控循环网络层的时刻网络的输出状态的多头注意力运算结果,如公式(17)所示:

    (17)

    其中,表示多头注意力层的计算结果,为权重参数;

    步骤4.3,使用条件随机场层获取最优标签序列:对于输入句子,句子标签序列的打分为:

    (18)

    其中,表示输入句子x生成标签序列y的打分函数,为序列长度,为转移得分矩阵,表示由标签转移到标签的转移得分,表示句中起始和终止标签,表示第个字被标记为的概率;归一化得到标签序列的最大概率,如公式(19):

    (19)

    其中,表示真实的标签序列,表示所有可能标签序列的集合;

    使用最大似然估计法求解医疗实体识别模型的最小化第二损失函数,如公式(20):

    (20)

    其中,表示第二损失函数值,迭代训练医疗实体识别模型直至第二损失函数值小于第二阈值,然后,利用维特比算法求得全局最优序列,全局最优序列即为最终医疗领域命名实体识别的标注结果;

    最后,根据标签序列识别文本中的医疗命名实体;其中,如果字符标注为(b),则代表其是医疗命名实体的首字符,如果字符标注为(i),则代表其是医疗命名实体的非开始部分,如果字符标注为(o),则代表其不是医疗命名实体;

    步骤5,识别时,将用于识别的医疗文本切分字符导入到训练好的基于注意力机制的语言预处理模型中生成字向量;将得到的生成字向量导入训练好的医疗实体识别模型中识别文本中的医疗命名实体。

    2.根据权利要求1所述一种中文医疗命名实体识别方法,其特征在于:步骤3.3中注意力机制计算公式如公式(8)所示:

    (8)

    其中,表示注意力分数,表示查询向量,表示键向量,表示值向量,表示键向量维数的平方根,函数为归一化指数函数。

    3.根据权利要求2所述一种中文医疗命名实体识别方法,其特征在于:归一化指数函数softmax函数:

    (9)

    其中,表示数组,表示数组中的第个元素,的值即为数组中第个元素的指数与其它所有元素指数和的比值。

    4.根据权利要求3所述一种中文医疗命名实体识别方法,其特征在于:步骤4.1中函数值域为(-1,1),表达式如公式(14)所示:

    (14)

    其中,表示函数的输入。

    5.根据权利要求4所述一种中文医疗命名实体识别方法,其特征在于:步骤4.1中激励函数值域为(-1,1),表达式如公式(15)所示:

    (15)。

    6.根据权利要求5所述一种中文医疗命名实体识别方法,其特征在于:步骤4.3中利用维特比算法求得全局最优序列,如公式(21)所示:

    (21)

    其中,为集合中使得分函数取得最大值的标签序列。

    技术总结
    本发明公开了一种中文医疗命名实体识别方法,通过基于注意力机制的语言预处理模型生成医疗文本中每个字的特征向量,通过基于双向门控循环网络的医疗实体识别模型生成最终的标签序列,根据标签序列识别医疗命名实体,基于注意力机制的语言预处理模型在实体识别之前预先生成增强语义的字向量,并在医疗实体识别模型中加入多头注意力层以提取医疗文本中字的多重语义,本发明不仅识别效果好,而且识别速度快。

    技术研发人员:司逸晨;管有庆
    受保护的技术使用者:南京邮电大学
    技术研发日:2021.02.05
    技术公布日:2021.03.12

    转载请注明原文地址:https://wp.8miu.com/read-20009.html

    最新回复(0)