基于注意力机制和语言模型学习的中文命名实体识别方法与流程

文档序号:17478082发布日期:2019-04-20 06:15阅读:842来源:国知局
基于注意力机制和语言模型学习的中文命名实体识别方法与流程

本发明属于实体识别技术领域,具体涉及一种基于注意力机制和语言模型学习的中文命名实体识别方法。



背景技术:

中文命名实体识别问题是自然语言处理领域最常见的问题之一,其主要任务是给非结构化的文本中的字或词打上标签,便于提取文本中的有效信息。

中文命名体识别任务是对中文文本数据中的实体进行识别,提取文本中的有效信息,具体的,识别的对象是中文文本数据,如一句话或一段文章;识别的要求是标记出这段文字中的实体名称,如人名、地名、机构名、称谓等等。

目前进行中文命名实体识别的方法主要分为三类:

1.基于规则的无监督方法:

主要是根据待识别的命名实体在语言学上的表现形式,人为设置一些规则去匹配句子的句法结构,标记处命名实体。基于规则的方法多采用语言学专家手工构造规则模板,选用特征包括统计信息、标点符号、关键字、指示词和方向词、位置词(如尾字)、中心词等方法,以模式和字符串相匹配为主要手段,这类系统大多依赖于知识库和词典的建立。这类方法的效果很大程度上依赖于设定规则的语言学专家的水平,而且对于不同的领域需要设置不同的规则去适应,所以比较消耗时间和人力。

2.基于概率统计的方法:

统计机器学习方法将命名实体识别当作序列标注任务来看,通过大规模的语料学习来获得语言模型,从而实现对句子各个位置的标注。这类方法常用的模型有:生成式模型隐马尔科夫模型(hmm)和判别式模型条件随机场(crf)等。

3.基于神经网络的方法:

随着神经网络的快速发展,特别是循环神经网络的发展,对处理序列任务带来的了重大性能提高,加上词向量的发展,使神经网络处理文本数据成为一种途径。加上神经网络强大的特征提取能力,不要多余的人工特征就能达到很好的性能。在处理序列标注问题比较突出的就是lstm+crf模型,其在英文命名实体识别中取得了很好的效果,但是由于中文语言特性的关系,这套模型在中文命名实体识别任务中表现的没有那么出色。所以中文基于字还是基于词或者基于字和词混合特征的研究一直在进行,而且有论文指出基于字特征的命名实体识别任务的表现效果要好于基于词特征的效果,而且基于字特征的方法对于未登录词的表现要好于基于词特征的方法。

现有技术缺陷:

1.基于规则的无监督方法需要语言学专家来设置规则,而且对于不同的领域,甚至不同的文本语言风格都需要设置不同的规则,可扩展行很低。而且设置的规则如果严格的话,对于有效信息的遗漏很大。如果太宽松的话,识别的效果很差。

2.基于概率统计的方法主要由大规模的语料库学习来获得语言模型,主要模型有隐马尔科夫模型、最大熵模型和条件随机场,这类方法很依赖于语料库的质量,而且在某些样本上表现很差,导致泛化不够,召回率偏低,表现效果不是很好。

3.目前主流的神经网络方法是利用循环神经网络(rnn)或者其他循环神经网络的变种,如lstm、gru等,将命名实体识别问题转换为序列标注问题。这类问题有先经过分词后再进行序列标注,但是这种方法的效果很大程度上受到分词效果的影响,而且对于未登录词的表现效果不是很好;还有研究为单纯提高神经网络模型性能,人工增加各种特征(如词性特征、语法特征等)进神经网络的输入,这类方法虽然说对效果有一定的提高,但是人工增加的特征,增加了人的工作量,使方法复杂化,这也不符合神经网络自动提取特征的本质特点。



技术实现要素:

本发明的发明目的是:为了克服现有中文命名实体识别方法存在的缺陷,提高识别的效果,本发明提出了一种基于注意力机制和语言模型学习的中文命名实体识别方法。

本发明的技术方案是:一种基于注意力机制和语言模型学习的中文命名实体识别方法,包括以下步骤:

a、获取已标注标签的中文命名实体识别的数据集,构建基于字的字典;

b、对步骤a构建的基于字的字典中每个元素对应的id号进行向量转换处理;

c、将步骤b转换后的字向量通过restrictedself-attention层进行组合,获取每个中心字在附近窗口范围内与其他字向量的加权组合的字向量,挖掘中心字在附近窗口范围内的潜在的词信息;

d、将步骤c获取的字向量通过第一层bi-lstm进行处理,得到两个方向的每个时间步的隐藏层输出,将得到的输出进行拼接组合,并利用每个时间步的隐藏层输出训练语言模型;

e、将步骤d得到的拼接结果通过第二层bi-lstm进行处理,得到二次拼接组合的输出,并采用条件随机场方法进行标签预测训练;

f、将已标注标签的中文命名实体识别的数据集进行随机排列处理,并采用adam优化方法循环步骤a-e对神经网络进行多轮训练;

g、利用神经网络对待识别的文本数据进行处理,完成中文命名实体识别。

进一步地,所述步骤a获取已标注标签的中文命名实体识别的数据集,构建基于字的字典,具体为

对已标注标签的中文命名实体识别的数据集中的每一个字和符号分配一个id号,并在句子的开头和结尾分别添加标识。

进一步地,所述步骤a还包括构建标签序列;所述标签序列包括正向语言模型标签、反向语言模型标签和每个字对应命名体类别的标签。

进一步地,所述步骤c将步骤b转换后的字向量通过restrictedself-attention层进行组合,获取字组合成的词信息,具体为

设定窗口大小,将中心字的窗口大小区域内的每个字与中心字进行相关性比较,计算每个字与中心字的相关性值;然后根据区域内每个字和中心字的相关性进行加权组合,计算中心字向量,获取由字组合成的潜在词信息。

进一步地,所述计算每个字与中心字的相关性值的公式为具体为f(xi,q)=ωtσ(w(1)xi+w(2)q)

其中,q表示中心字,xi表示中心字附近window-size窗口大小的第i个字,w(1)表示xi需要经过的全连接层对应权值矩阵,w(2)表示q需要经过的全连接层对应权值矩阵,wt表示相关性向量。

进一步地,所述计算中心字向量的公式为具体为

p(z|x,q)=softmax(a)

其中,a表示每一个xi和q计算的相关性值拼接之后的向量,p(z|x,q)表示所有对应xi和q的相关性值经过softmax函数后的输出值,p(z=i|x,q)表示xi和q的相关性值在整个序列上的权重值,z表示中心字附近window-size窗口内所有xi关于q的权重值集合,x表示包含xi的序列,s表示加权组合的计算值。

进一步地,所述步骤d中将步骤c获取的字向量通过第一层bi-lstm进行处理,得到两个方向的每个时间步的隐藏层输出,将得到的输出进行拼接组合的计算模型为

其中,表示正向lstm的t时刻的隐藏层输出,表示反向lstm的t时刻的隐藏层输出,dt表示的拼接结果,表示正向隐藏层输出经过激活函数tanh的结果,表示反向隐藏层输出经过激活函数tanh的结果,表示经过的全连接层对应权值矩阵,表示经过的全连接层对应权值矩阵。

进一步地,所述步骤d中利用每个时间步的隐藏层输出训练语言模型的计算模型为

其中,表示在t时刻用来预测下一个时刻的字的概率向量,表示在t时刻用来预测下一个时刻的字的概率向量,表示经过的全连接层对应权值矩阵,表示经过的全连接层对应权值矩阵,表示正向lstm训练语言模型的损失函数,表示反向lstm训练语言模型的损失函数,t表示序列的总的时间步。

进一步地,所述步骤d还包括分别通过计算预测的字id和真实前后字id之间的交叉熵,并利用步骤a构建的正向lstm标签和反向lstm标签计算损失,对语言模型进行优化。

进一步地,所述步骤e中采用条件随机场方法进行标签预测训练具体为

利用步骤d得到的输出,输入到第二层bi-lstm,再得到第二层bi-lstm拼接后的输出,然后在一个条件随机场里面计算标签序列的最大似然估计,并利用步骤a构建的每个字对应命名体类别的标签计算条件随机场的损失,最后将条件随机场的损失加上第二层bi-lstm的语言模型的损失得到的整个神经网络的损失。

本发明的有益效果是:本发明通过构建基于字的字典,分别通过restrictedself-attention层、第一层bi-lstm和第二层bi-lstm进行处理,并在第一层bi-lstm进行语言模型学习,最后通过条件随机场方法进行标签预测训练;本发明只基于字的特征,不需要进行分词和其他的词性、句法等人工特征,提高了方法的健壮性和鲁棒性;而且本发明对未登录词表现良好,且性能优良,可以很好的提高下游任务的性能。

附图说明

图1为本发明的中文命名实体识别方法的流程示意图;

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

如图1所示,为本发明的中文命名实体识别方法的流程示意图。一种基于注意力机制和语言模型学习的中文命名实体识别方法,包括以下步骤:

a、获取已标注标签的中文命名实体识别的数据集,构建基于字的字典;

b、对步骤a构建的基于字的字典中每个元素对应的id号进行向量转换处理;

c、将步骤b转换后的字向量通过restrictedself-attention层进行组合,获取每个中心字在附近窗口范围内与其他字向量的加权组合的字向量,挖掘中心字在附近窗口范围内的潜在的词信息;

d、将步骤c获取的字向量通过第一层bi-lstm进行处理,得到两个方向的每个时间步的隐藏层输出,将得到的输出进行拼接组合,并利用每个时间步的隐藏层输出训练语言模型;

e、将步骤d得到的拼接结果通过第二层bi-lstm进行处理,得到二次拼接组合的输出,并采用条件随机场方法进行标签预测训练;

f、将已标注标签的中文命名实体识别的数据集进行随机排列处理,并采用adam优化方法循环步骤a-e对神经网络进行多轮训练;

g、利用神经网络对待识别的文本数据进行处理,完成中文命名实体识别。

本发明结合注意力机制(restrictedself-attention)技术,并分析当前主流lstm+crf模型的缺点,设计了两层双向lstm+crf结构,并在第一层双向lstm的输出加入语言模型学习,提高了模型的表达能力。

上述步骤a-c为中文命名实体识别的第一阶段,即将中文文本数据转换为可以处理的数字向量,再使用restrictedself-attention技术发掘潜在的词信息;上述步骤d为中文命名实体识别的第二阶段,即通过第一层bi-lstm进行处理,并学习语言模型;上述步骤e-g为中文命名实体识别的第三阶段,即通过第二层bi-lstm+crf进行预测。

在本发明的一个可选实施例中,上述步骤a获取已标注标签的中文命名实体识别的数据集,构建基于字的字典,具体为:对已标注标签的中文命名实体识别的数据集中的每一个字和符号分配一个id号,并在句子的开头和结尾分别添加标识。

上述基于字的字典包括数据集中的所有字和符号,并添加标识符<unk>、<pad>、和代表句子开始结尾的<s>、</s>等标识,对字典中的每个元素可以分配一个id号;为便于后续批量化处理,本发明设定<pad>的id为0,其他元素就按顺序分配id,从而可以得到关于数据集的字典,字典中的每个元素都有与之一一对应的id编号。利用制作好的字典可以将中文文本数据转化为可以给神经网络输入的数字信息。例如一句中文文本,“我爱北京天安门。”,一查找字典中每个字及符号对应的id编号,“我”的id是1,“爱“的id是4,“北”的id是16,…,“。”对应的id是10,转换后的id序列[1,4,16,45,46,153,86,10]。

如果使用批量训练的方法,输入的维度为[batch_size*max_len],这里batch_size表示批量输入的样本数,max_len表示批量样本中最长的一个样本长度,其他不足最长的样本用‘0’来补齐。比如一个批量batch的样本数目是2,按照最长的序列来补齐。

“我是中国人。”

“我很自豪。”

转换后的批量id为两维的矩阵[[1,8,87,89,62,10],[1,54,465,875,10,0]],将不足最长的句子序列用o来补齐。

上述步骤a还包括构建标签序列;所述标签序列包括正向语言模型标签、反向语言模型标签和每个字对应命名体类别的标签。

上述正向lstm标签用于正向语言模型学习,构建正向lstm标签的方法为删除一个序列样本(如:一句话)的第一个id,在序列最后用表示结尾“<\s>”对应的id,例如,“我爱北京天安门。”,去掉第一个字“我”,在序列最后补上“<\s>”,这里“<\s>”在字典中对应的id为“489”,转换后的id标签为[4,16,45,46,153,86,10,489]。

上述反向lstm标签的构建方法为去掉序列的最后一个字,并给序列开头补上“<s>”,例如“我爱北京天安门。”,去掉“。”,给开头补上“<s>”,“<s>”对应的id为789,转换后的结果[789,1,4,16,45,46,153,86]。

上述每个字对应命名体类别的标签是已经标注好的数据集的原始信息,本发明将各个标签转换为指定的数字类别。例如:原始标注数据集中的"b-per",表示人名的开头,"i-per",表示人名的中间字,"e-per",表示人名结尾字,可以将它们建立一一对应关系,"b-per"对应数字1,"i-per"对应数字2,"e-per"对应数字3,从而将原始数据集中的字符串类型的标签转换为可以处理数字信息。

在本发明的一个可选实施例中,上述步骤b对步骤a构建的基于字的字典中每个元素对应的id号进行向量转换处理,具体为通过谷歌word2vec工具将每个id转换为一个向量,表示为[batch_size*max_len*emb_size],其中emb_size表示设定的向量维度。

在本发明的一个可选实施例中,上述步骤c将步骤b转换后的字向量通过restrictedself-attention层进行组合,获取字组合成的词信息,具体为设定窗口大小,将中心字的窗口大小区域内的每个字与中心字进行相关性比较,计算每个字与中心字的相关性值;然后根据区域内每个字和中心字的相关性进行加权组合,计算中心字向量,获取由字组合成的潜在词信息。

本发明将步骤b转换的字向量经过restrictedself-attention层,让神经网络学习潜在的通过字组合的词信息。这里restricted表示限制窗口(window_size)大小,即不会在整个句子序列上做self-attention,只有在自身字的附近的一个固定窗口大小的区域进行self-attention处理。

本发明计算每个字与中心字的相关性值的公式为具体为f(xi,q)=wtσ(w(1)xi+w(2)q)

其中,q表示中心字,xi是中心字附近window-size窗口大小的第i个字,总共有window_size个字,即i从1到window-size。用附近的每个字和中心字去做相关性比较,实现方式是将中心字经过线性变换后和经过线性变换后的附近的一个字进行向量相加。再经过σ激活函数,σ激活函数可以是sigmoid函数或者tanh函数,再乘以wt;wt是一个emb_size维的向量,所以乘积是一个值,而这个值就是附近的x_i这个字和中心字q的相关性;w(1)表示xi需要经过的全连接层对应权值矩阵,w(2)表示q需要经过的全连接层对应权值矩阵。

本发明将附近窗口的所有字都和中心字做相关性比较,得到每个附近字和中心字的相关性得分f(xi,q),并将他们所有拼接起来,通过一个softmax激活函数将各自的相关性得分转换为相应的概率,将转换后的概率和对应的中心字向量相乘,再将结果相加,得到中心字的向量表示,这种通过字向量的权重相乘的组合形式可以让神经网络发现通过字组合成的潜在的词信息。

计算中心字向量的公式为具体为

p(z|x,q)=softmax(a)

其中,a表示每一个xi和q计算的相关性值拼接之后的向量,即为列表;p(z|x,q)表示所有对应xi和q的相关性值经过softmax函数后的输出值,softmax函数可以将对应的序列的每个值转换为每个值相应的权重,整个序列的所有xi的权重之和等于1,(p(z=i|x,q)表示xi和q的相关性值在整个序列上的权重值,z表示中心字附近window-size窗口内所有xi关于q的权重值集合,x表示包含xi的n个字的序列,x={x1,x2,x3,…xi,…xn},s表示加权组合的计算值,即将每个xi对应的权重和xi进行乘积,然后把所有的加和起来的值。

本发明基于字进行中文命名实体识别,对处理未登录词有很好的效果,并且采用self-attention技术,发掘了潜在的通过字组合成的词信息,提高了模型的表达能力,而且本发明使用中心字附近限制窗口大小的方法,没有在整个序列上做self-attention,从而提高预测的精度。因为大部分中心字的信息只与附近窗口大小的字的信息有关,而且本发明使用的attention技术可以在窗口大小内上神经网络自动发掘和中心字有关的字的权重,和中心字相关性高的权重值大,和中心字相关性低的权重值低。

在本发明的一个可选实施例中,上述步骤d将步骤c获取的字向量通过第一层bi-lstm进行处理,得到两个方向的每个时间步的隐藏层输出,将得到的输出进行拼接组合,并利用每个时间步的隐藏层输出训练语言模型。

对于一句话,“我爱你”,经过第一层bi-lstm后的隐藏层输出可以预测这个字的前后字,这样可以让bi-lstm的隐层的输出更加符合文本语言模型。具体计算模型为

其中,表示正向lstm的t时刻的隐藏层输出,表示反向lstm的t时刻的隐藏层输出,xt表示t时刻的输入,即一个字向量;dt表示的拼接结果,,即将正向lstm和反向lstm的t时刻隐藏层的输出拼接起来的结果,dt的维度为的维度和,表示正向隐藏层输出经过激活函数tanh的结果,即正向隐藏层输出乘以一个权值矩阵后的结果再经过一个tanh的激活函数的最后结果,表示反向隐藏层输出经过激活函数tanh的结果,即反向隐藏层输出乘以一个权值矩阵后的结果再经过一个tanh的激活函数的最后结果,表示经过的全连接层对应权值矩阵,表示经过的全连接层对应权值矩阵。为bi-lstm隐层的输出经过线性变化后,再经过tanh激活函数的输出,这样可以直接用来预测下前后的字信息。利用每个时间步的隐藏层输出训练语言模型的计算模型为

其中,表示在t时刻用来预测下一个时刻的字的概率向量,向量中每个元素都是一个概率,整个向量的所有元素概率和为1,表示在t时刻用来预测下一个时刻的字的概率向量,向量中每个元素都是一个概率,整个向量的所有元素概率和为1,表示经过的全连接层对应权值矩阵,表示经过的全连接层对应权值矩阵,表示正向lstm训练语言模型的损失函数,使用极大似然估计方式,表示反向lstm训练语言模型的损失函数,使用极大似然估计方式,t表示序列的总的时间步,即序列的长度。

计算的值,这两个值越小说明学习的语言模型越好,分别通过计算预测的字id和真实前后字id之间的交叉熵,并利用步骤a构建的正向lstm标签和反向lstm标签计算损失,对语言模型进行优化。

在本发明的一个可选实施例中,上述步骤e将步骤d得到的词向量通过第二层bi-lstm进行处理,具体为将第一层bi-lstm的输出作为第二层bi-lstm的输入,采用与第一层bi-lstm相同的计算图模型进行处理,但第二层bi-lstm不进行语言模型的学习,而是将隐藏层输出拼接之后直接用条件随机场的方法进行标签预测训练,具体为利用步骤d得到的输出,输入到第二层bi-lstm,再得到第二层bi-lstm拼接后的输出,然后在一个条件随机场里面计算标签序列的最大似然估计,并利用步骤a构建的每个字对应命名体类别的标签计算条件随机场的损失,最后将条件随机场的损失加上第二层bi-lstm的语言模型的损失得到的整个神经网络的损失。

本发明在第一层bi-lstm后使用了语言模型的学习,在神经网络最终的损失计算中不光加上了标签预测的损失,还加上了语言模型的损失,形成一个多任务学习,这样就可以使得第一层bi-lstm产生的输出更加符合语言特性,让第二层bi-lstm接受的输入具有序列化,从而提高了识别效果。

在本发明的一个可选实施例中,上述步骤f将已标注标签的中文命名实体识别的数据集进行随机排列处理,并采用adam优化方法循环步骤a-e对神经网络进行多轮训练,一轮表示在整个数据集上训练一次,从而不断降低整个神经网络的损失,优化参数。

在本发明的一个可选实施例中,上述步骤g在神经网络训练完成后,利用神经网络对待识别的文本数据进行处理,神经网络会返回条件随机场生成的转移概率矩阵和生成logit值。其中生成logit值的方法为第二层bi-lstm双向输出拼接之后,维度为[batch_size*max_len*hidden_size],其中hidden_size为定义lstm是设定的超参数,再将其进行全连接层,将最后一维hidden_size转化为最终需要预测的标签类别的数目target_num,最终的logit维度为[batch_size*max_len*target_num],得到移概率矩阵和logit值即可通过维特比算法进行解码,标记出每个字的最终类别。

本发明采用谷歌开源且预训练好的word2vec将中文文本的字转换为向量输入,通过restrictedself-attention将输入的字符信息进行组合,让神经网络发现通过字组合成的潜在的词信息,然后通过第一层的bi-lstm,得到的两个单向的输出进行拼接组合,这里本发明添加了一个额外的学习任务,即通过第一层bi-lstm的输入学习一个语言模型,使得第一层的输出更加符合语言的特点,再将第一层bi-lstm拼接后的输出当做第二层bi-lstm的输入,然后得到两个方向的lstm输出再拼接,再经过一个全连接层,通过条件随机场crf的方法进行预测标签。

本发明针对当前中文命名实体识别方法存在的问题,并结合神经网络技术,通过只构建基于字的特征输入的方法,直接识别出中文文本中的实体名;这种方法只基于字的特征,不需要进行分词和其他的词性、句法等人工特征,这样便于方法的健壮性和鲁棒性;而且本发明对未登录词表现良好,且性能优良,可以很好的提高,下游任务(如:信息检索和关键字识别)的性能。

本领域的普通技术人员将会意识到,这里所述的实施例是为了帮助读者理解本发明的原理,应被理解为本发明的保护范围并不局限于这样的特别陈述和实施例。本领域的普通技术人员可以根据本发明公开的这些技术启示做出各种不脱离本发明实质的其它各种具体变形和组合,这些变形和组合仍然在本发明的保护范围内。

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