基于深度学习的半监督中文命名实体识别方法与流程

文档序号:16208473发布日期:2018-12-08 07:25阅读:424来源:国知局
基于深度学习的半监督中文命名实体识别方法与流程

本发明属于人工智能领域中的信息抽取技术,特别是针对只有少量标注数据和大量未标注数据的特定领域的中文文本,能提高自动抽取出的命名实体及其类型的准确率和召回率。

背景技术

命名实体识别(namedentityrecognition,ner)任务主要是识别出文本中出现的人名、地名、机构名等专有名称并加以归类,它是信息抽取、信息检索、问答系统等多种自然语言处理任务的基础。随着不同领域对命名实体识别有了自定义的需求,对识别的准确率和召回率提出了更高的要求。比如,对于一般的专有名词,需要更细致的划分,将地名划分为国家名、省/州、城市名、街道名等。对于特定领域的命名实体识别,如医疗文本中抽取出疾病、症状、检查、治疗、身体部位等特定实体名字,只有准确而全面的抽取出医疗文本中的实体,才能更好地服务于医疗知识挖掘、医疗智能机器人、医疗临床决策支持系统等应用领域。特定领域文本的命名实体识别,由于文本中专有名词更多,标注数据一般较少,比一般的专有名词识别更难。

对于特定领域的特定需求的命名实体识别任务,目前基于深度学习的监督方法能取得最好的准确率,比如基于双向长短时记忆网络(bi-directionallongshorttermmemorynetwork,bilstm),卷积神经网络(convolutionalneuralnetwork,cnn)和条件随机场(conditionalrandomfields,crf)相结合的模型在多种实体识别任务上取得最好的表现。基于深度学习的监督方法需要大量的标注数据,一般情况下,标注数据越多,效果越好。然而,特定领域的标注数据往往并不容易获得,人工标注耗时费力,而且由于信息的快速增长更新,一些旧的标注数据也不能很好地适应新的需求。这些特定领域往往有丰富的未标注文本数据,如何利用少量的标注数据和大量未标注的数据,构造出有效的命名实体识别模型具有重要的应用意义。

一种直观的方法是基于自训练的半监督学习方法。先用有标注的样本集训练一个学习器,用该学习器去给未标注的样本打上标签,挑选出其中可信度高的标签的样本,然后将新标记的样本加入到原来的训练集中,用这个新的训练集来重新训练学习器,重复以上过程直到迭代条件终止。如何挑选出可信度高的自动标注的样本,是半监督学习方法的难点。已有的自训练方法,往往是通过学习器给未标注数据打标签时给出的概率值作为参考,大于某个阈值的就认为置信度高,反之舍弃。

现有的普遍实现都是将命名实体识别任务转换为序列标注任务。使用bio(begin,inside,outside)或bioes(begin,inside,outside,end,single)标签策略标注句子中实体的相对位置,即可识别出实体的边界;再加上实体的类型信息即可生成所有的标签,如b-person表示一个人名实体的起始词。bio分别表示实体的开始(begin)、中间(inside)位置或不是实体(outside)的标注信息;bioes策略则增加了实体结束(end)的标记信息和单个实体(single)的标注信息,这两种策略可以相互转换。基于bilstm-cnns-crf之类的深度学习模型是英文命名实体识别的最佳方法。这种方法往往用低维向量表示每个单词,单词的向量表示由预训练的词嵌入(wordembedding)和基于神经网络学习的字符表示相连接而成。词嵌入是通过使用word2vec或glove等工具对语料进行无监督训练得到的低维稠密向量,包含了单词的语义信息;通过bilstm神经网络或卷积神经网络(cnn)学习到的字符表示能有效包含英文的形态学信息,如单词的前缀或后缀。但基于bilstm-cnns-crf的深度学习模型对中文命名实体识别则面临着新的困难,一个有意义的词可能由几个字组成,对应英文一个词的概念,如果也采用相同的方法将一个词作为整体考虑,每个词的输入由词的词嵌入和基于字的表示连接而成,中文的文本就需要首先分词,这会受到当前分词器的错误的影响,造成错误传递,影响实体识别的性能。而且特定领域的不少实体词都有特殊的含义或由生僻字组成,比如,医疗文本中,治疗类别的药物名词,这些词分词出错的概率更大,也难以找到相应预训练的词嵌入表示。所以,中文特定领域的命名实体识别任务需要构建特定的神经网络模型。

利用自训练的方法提高基于深度学习的中文命名实体识别模型的性能,会遇到几个问题:(1)对于特定领域的中文命名实体识别任务,适用于英文语料的基于bilstm-cnns-crf的模型会受限于中文分词错误的影响,也不能很好地适应特定领域中文含有更多歧义词和生僻字的特点,影响模型表现;(2)深度学习模型最后一层使用条件随机场crf的方法,它将综合一个序列各个标签可能出现的概率,挑选出最优的标签序列,而给出一个序列的一个置信值;但是一般自训练的方法需要对序列中每个字都判断其标签的置信值,因此不能直接应用到crf作为输出层的实体识别模型上。如何利用深度学习的标注模型来判断其标注结果的置信度是利用无标注数据的半监督方法的关键,要求是尽量筛除学习器判断出错的部分,只选用高置信度的标注样本加入训练集来提高原模型;(3)在得到序列中每个字的置信值时,如何筛除不可信的命名实体标签,挑选出只包含高置信值实体词且句子结构完整的句子样本加入到原训练集,是半监督方法的重要一步。



技术实现要素:

本发明针对现有中文命名实体识别方法对特定领域中中文文本命名实体识别准确率不高的问题,提供一种基于深度学习的半监督中文命名实体识别方法,提高命名实体识别的准确率和召回率。

具体技术方案如下:

第一步,构建基于字符的深度学习命名实体识别模型,方法是:利用特定领域的大量文本语料训练字向量,在bilstm-crf的深度学习框架上抽取出命名实体及其类型;

第二步,设计打分器,利用有标注数据训练学习器和打分器,训练好的打分器可用于筛选出学习器给未标注数据自动标注的高可信样本;打分器是对学习器标注的结果进行二分类判断的机器学习模型,二分类即可信标签和噪音标签,其中可信标签是学习器打出的高置信度的标签;噪音标签是学习器打出的可能出错的标签;利用第一步深度学习命名实体识别模型中,bilstm学习到的每个字的最优特征经过全连接层的映射后的向量表示作为打分器输入,使用softmax函数计算每个字的预测标签的置信值,统计所有的置信值找到一个阈值,大于阈值的作为可信标签,小于阈值的作为噪音标签;

第三步,设计半监督学习框架,利用无标注数据实现半监督中文命名实体识别;利用无标注数据自动构造可信样本到训练集中,从学习器标注的结果中,利用打分器筛除掉含有命名实体噪音标签的子句,同时尽量保留连续的子句,生成新的训练数据。

作为本发明技术方案的进一步改进,所述第一步基于字符的深度学习命名实体识别模型构建过程如下:

1.1对于特定领域的中文文本命名实体识别任务,首先将该领域的语料预处理,去除特殊符号和标点,用word2vec或glove等方法训练得到每个字的分布式表达;

1.2使用深度学习框架构造基于字符的深度学习命名实体识别模型;利用有标注的数据训练模型,有标注的数据是一个个中文句子及相应的用bio或bioes标签策略标注的标签;模型结构如下:

1.2.1使用嵌入层(embedding)导入预训练的字向量,将输入的句子匹配到一个分布式向量的序列上。形式化地,用x={x1,…,xi,…,xn}表示一个输入序列,其中,xi是用d维向量表示的第i个字,表示实数,1≤i≤n,n是句子长度,i为整数;

1.2.2使用bilstm的神经网络学习输入序列的长距离语义依赖。两层lstm神经网络,通过从两个相反的方向处理输入序列x,学习到每个字上下文依赖的表示。每个lstm将前一个时间步的隐藏状态和当前时间步的输入向量一起作为输入,得到当前时间步的隐藏状态:同理反方向可得:为了获得每个字在整个句子上的特定上下文表示,将两个方向的隐藏状态表示连接起来:从而学习到输入层的最优特征表示h={h1,…,hn},其中m为lstm神经元的个数;

1.2.3使用全连接层将序列中每个字的维度映射到标签类别数的维度上,以表示每种标签类别的权重;记s是输出的标签的类别数;全连接层将1.2.2得到的最优特征表示h={h1,…,hn}通过公式z=h·u+b进行变换,其中是模型可训练的参数,“·”为矩阵乘操作符;

1.2.4使用crf层学习输出的序列标签之间的依赖,得到最后输出的序列标签。crf能考虑两个临近的标签之间的关联,并计算整个输入句子的所有可能标签序列,选出最优的预测序列。

1.3利用已知标注y={y1,…,yn}和预测结果的误差,其中,yi为字xi的标签;通过随机梯度下降和反向传播算法不断地优化神经网络的参数,损失函数的值不再下降时迭代停止,得到最优的神经网络参数。

作为本发明技术方案的进一步改进,所述第二步打分器训练具体流程如下:

2.1利用第一步构建的神经网络模型作为学习器,用有标注数据训练网络的参数,得到训练好的学习器;

2.2将学习器中全连接层输出的每个字的向量表示,和每个字的预测标签作为打分器的输入特征;根据学习器预测的结果和真实的标签对比,学习器预测正确的标签为负样本,预测错误的标签为正样本,正样本远少于负样本,得到学习器预测的结果是否正确的二分类标签,作为打分器的标注信息;

2.3利用2.2得到的有标注信息的训练数据,训练出二分类机器学习模型的打分器。

所述第三步,设计半监督学习框架,利用无标注数据实现半监督中文命名实体识别,具体流程如下:

3.1用训练好的学习器给未标注数据自动打上标签;

3.2用打分器对自动标注的标签计算置信值,同时挑选出可信样本;这里挑选新的标注样本的策略是:已知句子中每个字的标签和可信判断;如果句子中每个字的标签都是可信的,则该句子是可信的;如果句子中含有噪音标签,查找该句子中是否存在短句或子句,用逗号隔开的是子句;如果没有子句,该句子为不可信的样本,被过滤掉;如果有子句,则将含有噪音标签的子句去除,剩余连续的没有噪音标签的子句合并为一个句子样本,否则被有噪音标签子句隔开的单个子句为一个句子样本;最后过滤掉没有命名实体的可信样本;

3.3将新标注的可信样本加入原标注数据,重新训练学习器;判断模型在测试集上的表现是否提升,如果不再提升,或没有新的未标注数据,训练结束;如果有提升,用新的未标注数据继续训练模型,跳转至步骤3.1。

作为本发明技术方案的进一步改进,采用softmax函数计算步骤2.3所述打分器的置信值,具体实现如下:

2.3.1计算学习器每个预测标签的置信值;利用1.2.3中全连接层输出的矩阵z,对每个字的中间向量表示若学习器预测的标签为yi′=j,j∈[1,s],那该标签的置信值为:

2.3.2计算阈值:根据对有标注数据计算的置信值,计算出打分器roc曲线的召回率,根据任务选择适当的阈值。

与现有技术相比,本发明的有益效果是:

1.本发明第一步构建的基于字符的深度学习命名实体识别模型核心思想是利用特定领域的大量文本语料训练字向量,在bilstm-crf的深度学习框架上抽取出命名实体及其类型,这种模型可以有效避免中文分词错误的影响,进而提高命名实体的识别准确度;

2.本发明第二步设计的打分器,利用有标注数据训练学习器和打分器,训练好的打分器可用于筛选出学习器给未标注数据自动标注的高可信样本,从而减少加入到训练样本中的噪音,保证训练集标签的准确性,进而提高命名实体的识别准确度;

3.本发明第三步设计半监督学习框架,利用无标注数据实现半监督中文命名实体识别;利用无标注数据自动构造可信样本到训练集中,以此有效提高命名实体识别模型的性能;从学习器标注的结果中,筛除掉含有噪音标签的命名实体的子句,尽可能保留原句子的完整性;因此,本发明可以保证新增样本的语义完整,而且尽可能多的保留了学习器标注的高置信度的命名实体。

附图说明

图1为本发明整体流程图

图2为第一步基于字符的bilstm-crf深度学习命名实体识别模型框架图;

图3为本发明第二步利用有标注数据训练学习器和打分器的流程图;

图4为本发明第三步利用无标注数据实现半监督中文命名实体识别的流程图。

具体实施方式

为了使本申请中的技术方案被更好地理解,下面将结合本申请实施例中的附图和具体实施方式,对本申请进行清楚、详细的描述。

基于深度学习的半监督中文命名实体识别方法中,包含学习器和打分器两个功能部件。

●学习器是用于命名实体识别的监督学习模型;本发明采用基于深度学习的神经网络模型,通过构建具有多层神经网络的模型,可以学习出更有效的特征表示。

●打分器是对学习器标注的结果进行二分类(即可信标签和噪音标签)判断的机器学习模型,其中可信标签指的是学习器打出的高置信度的标签,假设跟人工标注结果一样可靠,可以用作学习器的训练样本。噪音标签是指学习器打出的可能出错的标签,这一类标注结果不能用于学习器的训练。

基于深度学习的半监督中文命名实体识别方法,包括以下步骤:

第一步,构建基于字符的深度学习命名实体识别模型。方法是:利用特定领域的大量文本语料训练字向量,在bilstm-crf的深度学习框架上抽取出命名实体及其类型。基于字符的深度学习命名实体识别模型构建过程如下:

1.1对于特定领域的中文文本命名实体识别任务,首先将该领域的语料预处理,去除特殊符号和标点,用word2vec或glove等方法训练得到每个字的分布式表达;

1.2使用深度学习框架构造基于字符的深度学习命名实体识别模型。利用有标注的数据训练模型,有标注的数据是一个个中文句子及相应的用bio或bioes标签策略标注的标签。如bio标注的医疗文本:

根据标注结果,可以容易找到命名实体及类型,右髋部是身体部位(bod),疼痛是症状和体征(sym)。模型结构如下:

1.2.1使用embedding层导入预训练的字向量,将输入的句子匹配到一个分布式向量的序列上。形式化地,用x={x1,…,xi,…,xn}表示一个一般的输入序列,其中,xi是用d维向量表示的第i个字,表示实数,n是句子长度;

1.2.2使用bilstm的神经网络学习输入序列的长距离语义依赖。两层lstm神经网络,通过从两个相反的方向处理这个句子,可以对每个字学习到上下文依赖的表示。每个lstm将前一个时间步的隐藏状态和当前时间步的输入向量一起作为输入,得到当前时间步的隐藏状态:同理反方向可得:为了获得每个字在整个句子上的特定上下文表示,将两个方向的隐藏状态表示连接起来:从而学习到输入层的最优特征表示h={h1,…,hn},其中m为lstm神经元的个数;

1.2.3使用全连接层将序列中每个字的维度映射到标签类别数的维度上,以表示每种标签类别的权重。记s是输出的标签的类别数;全连接层将1.2.2得到的最优特征表示h={h1,…,hn}通过公式z=h·u+b进行变换,其中是模型可训练的参数,“·”为矩阵乘操作符。

1.2.4使用crf层学习输出的序列标签之间的依赖,得到最后输出的序列标签。如i-person标签只应该出现在b-person标签的后面,而i-location不可能出现在b-person标签的后面。

1.3利用已知标注y={y1,…,yn}和预测结果的误差,通过随机梯度下降和反向传播算法不断地优化神经网络的参数,损失函数的值不再下降时迭代停止,得到最优的神经网络参数。

第二步,设计打分器,利用有标注数据训练学习器和打分器,筛选出学习器自动标注的高可信样本。利用第一步深度学习命名实体识别模型中,bilstm学习到的每个字的最优特征经过全连接层的映射后的向量表示作为打分器输入,使用softmax函数计算每个字自动标签的置信值,统计所有的置信值找到一个阈值,大于阈值的作为可信标签,小于阈值的作为噪音标签。通过打分器的筛选,进一步提高学习器自动标注的未标注数据的准确率,有利于在下一步半监督学习框架中取得更好的效果。具体流程如下:

2.1利用第一步构建的神经网络模型作为学习器,用有标注数据训练网络的参数,得到训练好的学习器,使用训练好的模型给未标注的数据打标签时,该命名实体识别(ner)学习器的参数就是固定的,训练好的学习器就可以自动识别出文本中的命名实体;

2.2将学习器中全连接层输出的每个字的向量表示,和每个字的预测标签作为打分器的输入特征。根据学习器预测的结果和真实的标签对比,学习器预测正确的标签为负样本,预测错误的为正样本,正样本远少于负样本,得到学习器预测的结果是否正确的二分类标签,作为打分器的标注信息;

2.3利用2.2得到的有标注信息的训练数据,训练出一个打分器。打分器可以是任一分类的机器学习模型,由于打分器面临的是正负样本不平衡的数据,且为了尽可能挑出正样本,要求打分器的召回率要高。经过实践,本发明选择了一种简单的用softmax函数计算置信值的打分器,具体实现如下:

2.3.1计算学习器每个预测标签的置信值。利用1.2.3中全连接层输出的矩阵z,对每个字的中间向量表示若学习器预测的标签为yi′=j,j∈[1,s],那该标签的置信值为:

2.3.2计算阈值。根据对有标注数据计算的置信值,再计算出打分器roc曲线(receiveroperatingcharacteristiccurve,接收者操作特征曲线)的tpr(truepositiverate,真阳性率)值,即召回率;根据任务选择适当的阈值。如,对中文医疗命名实体识别任务,当tpr值在0.9左右时的阈值,能有效过滤掉大部分噪音标签,且抽取出适量的高可信样本。

第三步,设计半监督学习框架,利用无标注数据实现半监督中文命名实体识别;利用无标注数据自动构造可信样本到训练集中,以此提高命名实体识别模型的性能。从学习器标注的结果中,利用打分器筛除掉含有命名实体噪音标签的子句,同时尽可能保留连续的子句,生成新的训练数据。具体流程如下:

3.1用训练好的学习器给未标注数据自动打上标签;

3.2用打分器对自动标注的标签计算置信值,同时挑选出可信样本。这里挑选新的标注样本的策略是:已知句子中每个字的标签和可信判断。如果句子中每个字的标签都是可信的,则该句子是可信的。如果句子中含有噪音标签,查找该句子中是否存在短句或子句,用逗号隔开的是子句;如果没有子句,该句子为不可信的样本,被过滤掉;如果有子句,则将含有噪音标签的子句去除,剩余连续的没有噪音标签的子句合并为一个句子样本,否则被有噪音标签子句隔开的单个子句为一个句子样本。最后过滤掉没有命名实体的可信样本。

3.3将新标注的可信样本加入原标注数据,重新训练学习器。判断模型在测试集上的表现是否提升,如果不再提升,或没有新的未标注数据,训练结束;如果有提升,用新的未标注数据继续训练模型,跳转至步骤3.1。

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

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1