首页 / 专利库 / 人工智能 / 人工神经网络 / 前馈神经网络 / 一种中医药专利文献命名实体自动识别的方法

一种中医药专利文献命名实体自动识别的方法

阅读:148发布:2020-05-17

专利汇可以提供一种中医药专利文献命名实体自动识别的方法专利检索,专利查询,专利分析的服务。并且一种中医药 专利 文献 命名实体 自动识别的方法,涉及 自然语言处理 领域,可用于中医药专利文献 信息检索 以及中医药知识图谱的构建。其特征是基于字n元组建立定界模 块 和分类模块,先对定界模块和分类模块进行训练,然后使用训练好的定界模块和分类模块对中医药专利文献进行命名实体的自动识别。本 发明 具有如下优点:(1)无需分词,直接基于中文的字序列,进行中医药命名实体识别;(2)没有使用传统的序列标注技术,从而避免了非法的标记序列的产生。,下面是一种中医药专利文献命名实体自动识别的方法专利的具体信息内容。

1.一种中医药专利文献命名实体自动识别的方法,其特征是基于字n元组建立定界模和分类模块,先对定界模块和分类模块进行训练,然后使用训练好的定界模块和分类模块对中医药专利文献进行命名实体的自动识别。
2.根据权利要求1所述一种中医药专利文献命名实体自动识别的方法,其特征是定界模块的训练包括下述步骤:
步骤1:使用[-0.5,05]的正态分布,随机初始化语料中的所有汉字的字嵌入向量,每个字对应一个字嵌入向量,语料中所有的字嵌入向量构成了一个字嵌入矩阵;随机初始化所有待训练的模块参数;
步骤2:对于句子的每个字,在字嵌入矩阵中,查找出这个字对应的字嵌入向量,把这个字对应的字嵌入向量作为模块的输入,计算句子中所有的字n元组的BiLSTM向量;
步骤3:使用前馈神经网络计算出每个字n元组的得分;
步骤4:通过viterbi动态规划算法,计算出句子的得分最大的字n元组序列;
步骤5:采用汉明距离函数,记作Δ,作为一个句子的两个不同字n元组序列之间的距离计算方法;计算出模块预测出的最大得分的字n元组序列T’和人工标注的真实的命名实体标记对应的字n元组序列T*之间的距离;
步骤6:计算定界模块预测结果的损失hinge-loss:
hinge-loss = max{0, ScoreT’ - ScoreT* + Δ(T’,T*)}
上式中各个符号的含义为:max表示对花括号中的元素求最大值;T’为模块计算出的最大得分的字n元组序列,ScoreT’为模块计算出的T’对应的最大得分;T*为人工标注的真实的命名实体标记对应的字n元组序列,ScoreT*为模块计算出的T*的得分;Δ即为计算两个字n元组序列的汉明距离函数;
步骤7:利用梯度下降法更新字嵌入矩阵以及模块参数。
3.根据权利要求1所述一种中医药专利文献命名实体自动识别的方法,其特征是分类模块训练方法是使用最大得分的字n元组序列以及序列中每个字n元组的BiLSTM向量作为输入,训练一个单层的前馈神经网络的分类器。
4.根据权利要求1所述一种中医药专利文献命名实体自动识别的方法,其特征是使用定界模块,计算出句子的得分最大的字n元组序列;
使用分类模块,把定界模块中得到的句子的最大得分的字n元组序列以及其中每个字n元组对应的BiLSTM向量表示作为输入,判断出其中的每个字n元组是否是命名实体。
5.根据权利要求1所述一种中医药专利文献命名实体自动识别的方法,其特征是所述定界模块是确定整个句子的命名实体或非命名实体的边界,即把句子分解成若干个连续的字n元组。
6.根据权利要求1所述一种中医药专利文献命名实体自动识别的方法,其特征是所述分类模块是对每个分解后的若干连续的字n元组,确定每个字n元组是不是一个中医药命实体。

说明书全文

一种中医药专利文献命名实体自动识别的方法

技术领域

[0001] 本发明涉及自然语言处理领域,具体涉及一种中医药专利文献命名实体自动识别的方法。

背景技术

[0002] 现有的中文命名实体自动识别方法一般基于以下两种技术,(1)基于中文的词进行命名实体识别,这种方法需要事先对中文文本进行分词。(2)基于传统的序列标注技术,该方法在每个词上标注BIO标记,然后将BIO标记转换成命名实体标记。基于着这两种技术的命名实体识别方法都存在着一些缺点,具体说明如下。
[0003] 首先,基于分词的命名实体识别方法有以下一些缺点:(1)中文的分词工具本身存在不准确性和错误,这些分词的错误会极大影响命名实体识别的结果。虽然目前中文的分词已经达到了很高的准确率,但是仍然存在一些错误(特别是在一些有歧义的情况下),这些错误会使得后面的命名实体识别不能正确利用词的信息,从而导致命名实体的识别错误。(2)中文分词工具大多数都是针对通用领域的,对于大多数的专业领域,比如说中医药领域,中文分词的效果不是很好。有很多专业名词在自动分词工具中是识别不出来的,这些自动分词工具会将这些专业名词进行错误的切分,从而不能为命名实体识别提供正确的词,造成命名实体识别的错误。
[0004] 其次,基于序列标注技术的命名实体识别方法,是在每个词上标注BIO标记,然后将BIO标记转换成命名实体标记。BIO三种标记的含义为,B(begin)表示一个命名实体的第一个字,I(inside)表示命名实体的第二个以及后面的字,O(outside)表示该字不是命名实体,这样B以及后面连续的若干个I就表示了一个命名实体。这种在单个词上进行标记的方法,可能会产生一些非法标记序列的情况,这时还需要利用一些规则进行进一步处理。合法序列的情况是,I前面一定有B。但是在单个词上标注BIO的方法,可能会使得I前面没有B而是一个O,这就是非法的标注序列,这时还需要通过一定的规则,对标注的结果进行进一步修正,比如把第一个在O后面的I改成B。例如B I I B I O I I是不合法的标记序列,因为倒数第二个I之前是一个O,需要改成B I I B I O BI。

发明内容

[0005] 针对传统命名实体识别所存在的以上所述的一些问题:1、需要先进行分词,而分词的错误会扩展到命名实体识别中,使得分词出错的部分的命名实体不能被正确识别;2、基于传统的序列标注技术会产生非法的标记序列。本发明在一定程度上进行了克服和解决。
[0006] 本发明的技术方案:一种中医药专利文献命名实体自动识别的方法,其特征是基于字n元组建立定界模和分类模块,先对定界模块和分类模块进行训练,然后使用训练好的定界模块和分类模块对中医药专利文献进行命名实体的自动识别。
[0007] 所述定界模块:确定整个句子的命名实体或非命名实体的边界,即先把句子分解成若干个连续的字n元组。
[0008] 所述分类模块:对每个分解后的若干连续的字n元组,确定每个字n元组是不是一个中医药命实体。
[0009] 需要先对这两个模块进行训练,然后再使用训练好的两个模块进行命名实体的自动识别。
[0010] 第一步,训练过程。把每个字表示成一个字嵌入向量,字的初始嵌入向量和模块中参数的初始值是随机给定的,在训练过程中使用梯度下降法对字嵌入向量和模块参数进行更新,得到字嵌入向量的局部最优值和模块参数的局部最优值,从而确定了模块的参数值。本发明的详细训练过程见图1。
[0011] 第二步,使用过程。首先用定界模块得到最大得分的字n元组序列,然后利用分类模块确定每个字n元组的类别。本发明使用过程见图2。
[0012] 1.定界模块和分类模块的训练过程
[0013] 1.1定界模块的训练过程
[0014] 步骤1:使用[-0.5,05]的正态分布,随机初始化语料中的所有汉字的字嵌入向量,每个字对应一个字嵌入向量,语料中所有的字嵌入向量构成了一个字嵌入矩阵;随机初始化所有待训练的模块参数;
[0015] 步骤2:对于句子的每个字,在字嵌入矩阵中,查找出这个字对应的字嵌入向量,把这个字对应的字嵌入向量作为模块的输入,计算句子中所有的字n元组的BiLSTM向量;
[0016] 步骤3:使用前馈神经网络计算出每个字n元组的得分;
[0017] 步骤4:通过viterbi动态规划算法,计算出句子的得分最大的字n元组序列;
[0018] 步骤5:采用汉明距离函数,记作Δ,作为一个句子的两个不同字n元组序列之间的距离计算方法;计算出模块预测出的最大得分的字n元组序列T’和人工标注的真实的命名实体标记对应的字n元组序列T*之间的距离;
[0019] 步骤6:计算定界模块预测结果的损失hinge-loss:
[0020] hinge-loss=max{0,ScoreT’-ScoreT*+Δ(T’,T*)}
[0021] 上式中各个符号的含义为:max表示对花括号中的元素求最大值;T’为模块计算出的最大得分的字n元组序列,ScoreT’为模块计算出的T’对应的最大得分;T*为人工标注的真实的命名实体标记对应的字n元组序列,ScoreT*为模块计算出的T*的得分;Δ即为计算两个字n元组序列的汉明距离函数。
[0022] 步骤7:利用梯度下降法更新字嵌入矩阵以及模块参数;
[0023] 1.2分类模块训练过程
[0024] 分类任务相对比较简单。使用定界模块所得到的最大得分的字n元组序列以及序列中每个字n元组的BiLSTM向量作为输入,训练一个单层的前馈神经网络的分类器。在训练过程中使用负对数似然损失函数,利用梯度下降法更新分类器的权重参数。
[0025] 2.定界模块和分类模块的使用过程
[0026] 经过上面的训练之后,得到了定界模块和分类模块的参数的局部最优值和字嵌入矩阵的最优值,并且把这些值固定下来。对于新给的一个句子,使用训练好的定界模块和分类模块对其进行命名实体的自动识别。
[0027] 命名实体的自动识别的过程如下:
[0028] 步骤1:使用定界模块,计算出句子的得分最大的字n元组序列。
[0029] (1)通过字嵌入矩阵获得其对应的字嵌入向量。
[0030] (2)计算句子的所有的字n元组的BiLSTM向量表示。
[0031] (3)计算每个字n元组对应的得分。
[0032] (4)计算出该句子的最大得分的字n元组序列。
[0033] 步骤2:使用分类模块,把上面定界模块中得到的句子的最大得分的字n元组序列以及其中每个字n元组对应的BiLSTM向量表示作为输入,判断出其中的每个字n元组是否是命名实体。
[0034] (1)判断字n元组序列中的每个字n元组的是否是命名实体。
[0035] (2)输出最终的命名实体识别结果。
[0036] 3.求解最大得分的字n元组序列的viterbi动态规划算法
[0037] 该算法的流程图见图3所示。对于一个句子,已知其所有字n元组的得分,如果不需要考虑字n元组之间的得分影响,即各个字n元组的得分是独立,那么可以使用高效的viterbi动态规划算法算法求出使句子获得最大的得分的字n元组序列。
[0038] 图3中所用的符号说明如下。含有N个字的句子sen=c1c2…ci…cN,ci表示句子中的第i个字。计算出的所有的字n元组的得分{s1,1,s2,1,…,sN,1,s1,2,…,si,m,…,sN-1,2,s1,N},si,m表示句子中第i个字开始的长度为m的字n元组。Seqi表示从第1个字开始到第i个字的序列的得分最大的字n元组序列,Scorei表示字n元组序列Seqi对应的得分。SeqN表示整个句子的得分最大的字N元组序列。“[]”表示空列表(列表的索引从0开始),“Min_Value”表示当前计算机系统中的所能表示的最小值,“+”作用于列表,表示对列表进行连接操作。Seqs和Scores分别记录了从第一个字到第i个字的最大得分的字n元组序列,以及该序列对应的得分。句子的前若干个连续的字组成的序列,称为这个句子的一个子序列。句子的前i个连续的字组成的序列,即c1c2…ci,称为这个句子的第i个子序列,记作seni。Seqs和Scores都是长度为N+1的列表,分别记录了句子的所有子序列的的最大得分的字n元组序列,以及这个字n元组序列对应的得分。比如Scores[i]存放seni的字n元组序列的最大得分,Seqs[i]存放seni的最大得分对应的字n元组序列。为了在循环计算时的方便和统一,Scores[0]设置为0,Seqs[0]设置为空序列[]。Max_Seq和Max_Score分别存放当前正在计算的子序列的最大得分的字n元组序列以及该最大得分;cur_score存放当前正在计算的子序列的字n元组序列的得分。最后的Seqs[N]和Scores[N],即是整个句子对应的最大得分的字n元组序列和该序列的得分。
[0039] 算法描述如下:
[0040] 步骤1:设置Seqs=[[]]、设置Scores=[0]、设置i=1;
[0041] 步骤2:如果i等于N,转到步骤8;
[0042] 否则设置Max_Seq=[]、设置Max_Score=Min_Value、设置j=1;
[0043] 步骤3:如果j等于i,转到步骤6;
[0044] 否则计算cur_score=Scores[j-1]+sj,i-j+1;
[0045] 步骤4:如果cur_score大于Max_Score,
[0046] 设置Max_Score=cur_score、设置Max_Seq=Seqs[j]+[Gj,i-j+1];
[0047] 步骤5:设置j增加1,转到步骤3;
[0048] 步骤6:设置Seqs[i]=Max_Seq、设置Scores[i]=Max_Score;
[0049] 步骤7:设置i增加1,转到步骤2;
[0050] 步骤8:输出Seqs[N]和Scores[N];
[0051] 步骤9:算法结束。
[0052] 本发明具有下述优点:
[0053] (1)直接在中文的字上进行命名实体识别,无需分词,因而可以避免分词本身的错误给命名实体识别所带来的错误,更加适合自动分词正确率不高的一些专业领域(比如中医药专利领域)的命名实体识别。
[0054] (2)基于字n元组序列进行命名实体识别,命名实体的识别都是在字n元组序列上进行的,从而避免了传统序列标记技术中存在的非法标记的问题。
[0055] (3)本发明的方法中,计算的效率比较高。因为对于长度为N的句子,所有需要计算2
的字n元组的个数为O(N),求解句子的最大得分的字n元组序列的viterbi动态规划算法的复杂度也是O(N2)的加法运算,所以本方法的计算效率比较高。复杂度具体分析如下。
[0056] 句子中连续的n个字构成一个字n元组(n-gram),如果一个句子长度为N(即句子中含有N个字),则所有可能的字n元组有 个,所以我们的算法中需要计算的字n元组的个数是O(N2)阶的。
[0057] 使用的viterbi动态规划算法是针对求解句子的最大得分的字n元组序列的一个变化版本的viterbi算法。对于长度为N的句子,外面的大循环为N次,大循环的循环变量最大时取到N,每次计算一个子序列的最大得分。对于每次大循环,内部的小循环的循环次数不超过大循环的循环变量,所以计算次数也不超过N,内部循环的主要计算是执行一次加法运算。因此viterbi动态规划算法的复杂度是O(N2)的加法运算。附图说明
[0058] 图1是本发明的定界模块训练过程的详细流程图。
[0059] 图2是本发明的命名识别自动识别过程流程图。
[0060] 图3是本发明的viterbi动态规划算法流程图。
[0061] 图4是本发明的训练过程实施图。

具体实施方式

[0062] 1、在定界模块中,把句子分解成若干个连续的字n元组
[0063] 给定例句:“一种鱼腥草和万寿果套种立体栽培的方法”。经过定界模块处理之后,句子被分割为如下的形式:“一种|鱼腥草|和|万寿果|套种立体栽培|的方法”。其中的符号“|”,表示两个字n元组的分割边界,把句子变成了6个字n元组的序列,每个n元组可能是一个命名实体也可能不是一个命名实体,这样就以字n元组的方式确定了句子中命名实体或者非命名实体的边界。
[0064] 2、在分类模块中,对字n元组进行分类
[0065] 经过定界模块处理之后,把得到的6个字n元组的序列“一种|鱼腥草|和|万寿果|套种立体栽培|的方法”作为分类模块的输入,对其中每个字n元组进行分类,比如最后得到的分类结果是“鱼腥草”,“万寿果”,“套种立体栽培”是命名实体,而“一种”,“和”,“的方法”这三个n元组不是命名实体。这样就通过对字n元组进行分类,识别出了句子的命名实体。
[0066] 3、本发明的定界模块的详细训练过程,见图1
[0067] 步骤1:随机初始化字嵌入向量和模块参数;
[0068] 步骤2:设置最大迭代次数C和训练集的句子NUM;
[0069] 步骤3;设置循环变量i=1;
[0070] 步骤4:判断i是否小于等于C?如果是,则转到步骤5;否则转到步骤15;
[0071] 步骤5:设置循环变量j=1;
[0072] 步骤6:判断j是否小于等于NUM?如果是,则转到步骤7;否则转到步骤14;
[0073] 步骤7:计算所有字n元组的BiLSTM向量表示;
[0074] 步骤8:计算字n元组的得分;
[0075] 步骤9:计算得分最大的字n元组序列;
[0076] 步骤10:计算最大得分的字n元组序列和真实命名标记字n元组序列的汉明距离;
[0077] 步骤11:计算该次预测的误差;
[0078] 步骤12:用梯度下降法更新模块参数以及字嵌入向量;
[0079] 步骤13:循环变量j增加1;转到步骤6;
[0080] 步骤14:循环变量i增加1;转到步骤4;
[0081] 步骤15:结束。
[0082] 其中步骤1为初始化;步骤2、3、4、5、6和7均为循环迭代部分,对模块参数进行梯度下降训练。对于训练语料库中的每个句子,步骤2、3、4、5、6和7循环执行一次;当对整个训练语料的所有句子都执行一遍步骤2、3、4、5、6和7时,称为一个epoch(即训练了一代),epoch值设置为10。
[0083] 4、本发明的定界模块和分类模块的训练过程的实施,见图4
[0084] 定界模块:从底层的输入句子开始,然后是字嵌入向量层、BiLSTM层、前馈神经网络层和viterbi解码层,最后得到最大得分字n元组序列。在训练阶段,计算出模块给出最大得分字n元组序列和实际命名实体标注的字n元组序列之间的定界损失,然后沿着细箭头反向传播到每一层网络,从而更新每一层网络的参数和字嵌入向量。粗箭头表示前向计算过程,细箭头表示损失的反向传播过程。
[0085] 分类模块:以定界模块最后得到的最大得分的字n元组序列为输入,对字n元组序列中的每个字n元组类别,从而获得整个句子的命名实体标记。与定界模块表示一样,粗箭头表示前向计算过程,细箭头表示损失的反向传播过程。分类模块的损失只用来更新字n元组分类层的参数,不继续向后传播到定界模块中。5、定界模块训练过程以及内部一些计算的详细解释
[0086] 步骤1:使用[-0.5,05]的正态分布,随机初始化语料中的所有汉字的字嵌入向量,每个字对应一个字嵌入向量,语料中所有的字嵌入向量构成了一个字嵌入矩阵;随机初始化所有待训练的模块参数;
[0087] 步骤2:对于句子的每个字,在字嵌入矩阵中,查找出这个字对应的字嵌入向量,把这个字对应的字嵌入向量作为模块的输入,计算句子中所有的字n元组的BiLSTM向量;
[0088] 以句子的字嵌入向量作为输入,使用目前最常用的双向长短时记忆网络(即Bi-directional Long Short-Term Memory networks,简写BiLSTM)对句子进行处理,对于每个字分别得到正向LSTM(即Long Short-Term Memory networks的简写)和反向LSTM的输出。对于句子中的第i个字,使用记号ci表示这个字,把这个字对应的正向LSTM输出记为fi,把这个字对应的反向LSTM的输出记为bi。在fi和bi中,分别携带了ci在这个句子中前面或者后面的上下文的信息。然后把fi和bi进行连接,得到ci在BiLSTM网络的输出向量,记为hi。
[0089] 单个字构成的字n元组称为字1元组;两个字构成的字n元组,称为字2元组,后面的字n元组以此类推。在句子中,把字n元组的表示记为gi,n,表示从句子的第i个字(包含第i个字)开始的字n元组。通过每个字的表示,可以计算出字n元组的表示。
[0090] 对于字1元组,它的向量表示gi,1和字ci的BiLSTM网络输出向量hi相等。对于两个字以上的字n元组的情况,比如这个字n元组对应于句子中的cici+1…ci+n-1,我们把构成该字n元组的n个字的BiLSTM网络输出向量:hi,hi+1,…,hi+n-1进行按位累加,得到这个字n元组的表示gi,n。这样可以计算出所有的字n元组的BiLSTM的向量表示。
[0091] 步骤3:使用前馈神经网络计算出每个字n元组的得分;
[0092] 步骤4:通过viterbi动态规划算法,计算出句子的得分最大的字n元组序列;
[0093] 该算法的流程图见图3所示。对于一个句子,已知其所有字n元组的得分,如果不需要考虑字n元组之间的得分影响,即各个字n元组的得分是独立,那么可以使用高效的viterbi动态规划算法算法求出使句子获得最大的得分的字n元组序列。
[0094] 图3中所用的符号说明如下。含有N个字的句子sen=c1c2…ci…cN,ci表示句子中的第i个字。计算出的所有的字n元组的得分{s1,1,s2,1,…,sN,1,s1,2,…,si,m,…,sN-1,2,s1,N},si,m表示句子中第i个字开始的长度为m的字n元组。Seqi表示从第1个字开始到第i个字的序列的得分最大的字n元组序列,Scorei表示字n元组序列Seqi对应的得分。SeqN表示整个句子的得分最大的字N元组序列。“[]”表示空列表(列表的索引从0开始),“Min_Value”表示当前计算机系统中的所能表示的最小值,“+”作用于列表,表示对列表进行连接操作。Seqs和Scores分别记录了从第一个字到第i个字的最大得分的字n元组序列,以及该序列对应的得分。句子的前若干个连续的字组成的序列,称为这个句子的一个子序列。句子的前i个连续的字组成的序列,即c1c2…ci,称为这个句子的第i个子序列,记作seni。Seqs和Scores都是长度为N+1的列表,分别记录了句子的所有子序列的的最大得分的字n元组序列,以及这个字n元组序列对应的得分。比如Scores[i]存放seni的字n元组序列的最大得分,Seqs[i]存放seni的最大得分对应的字n元组序列。为了在循环计算时的方便和统一,Scores[0]设置为0,Seqs[0]设置为空序列[]。Max_Seq和Max_Score分别存放当前正在计算的子序列的最大得分的字n元组序列以及该最大得分;cur_score存放当前正在计算的子序列的字n元组序列的得分。最后的Seqs[N]和Scores[N],即是整个句子对应的最大得分的字n元组序列和该序列的得分。
[0095] 算法描述如下:
[0096] 步骤A:设置Seqs=[[]]、设置Scores=[0]、设置i=1;
[0097] 步骤B:如果i等于N,转到步骤H;否则设置Max_Seq=[]、设置Max_Score=Min_Value、设置j=1;
[0098] 步骤C:如果j等于i,转到步骤F;否则计算cur_score=Scores[j-1]+sj,i-j+1;
[0099] 步骤D:如果cur_score大于Max_Score,设置Max_Score=cur_score、设置Max_Seq=Seqs[j]+[Gj,i-j+1];
[0100] 步骤E:设置j增加1,转到步骤C;
[0101] 步骤F:设置Seqs[i]=Max_Seq、设置Scores[i]=Max_Score;
[0102] 步骤G:设置i增加1,转到步骤B;
[0103] 步骤H:输出Seqs[N]和Scores[N];
[0104] 步骤I:算法结束。
[0105] 步骤5:采用汉明距离作为一个句子的两个不同字n元组序列之间的距离计算方法;计算出模块预测出的最大得分的字n元组序列T’和实际的字n元组序列T*的距离;汉明距离的计算方式举例如下。
[0106] 给定句子:一种鱼腥草和万寿果套种立体栽培的方法。假设该句子有以下两个不同的字n元组序列。
[0107] 字n元组序列1:一种|鱼腥草|和|万寿果|套种立体栽培|的方法。
[0108] 字n元组序列2:一种|鱼腥|草和|万寿果套|种立体|栽培的方法。
[0109] 把一个字n元组序列2转换成另一个字n元组序列1,需要依次从左往右转换“草”,“套”,“栽”和”培”总共4个字,所以字n元组序列1和字n元组序列2之间的汉明距离Δ是4。
[0110] 步骤6:计算定界模块预测结果的损失hinge-loss:
[0111] hinge-loss=max{0,ScoreT’-ScoreT*+Δ(T’,T*)}
[0112] 上式中各个符号的含义为:max表示对花括号中的元素求最大值;T’为模块计算出的最大得分的字n元组序列,ScoreT’为模块计算出的T’对应的最大得分;T*为人工标注的真实的命名实体标记对应的字n元组序列,ScoreT*为模块计算出的T*的得分;Δ即为计算两个字n元组序列的汉明距离函数。
[0113] 步骤7:利用梯度下降法更新字嵌入矩阵以及模块参数。
[0114] 6、分类模块训练过程
[0115] 分类任务相对比较简单。使用定界模块所得到的最大得分的字n元组序列以及序列中每个字n元组的BiLSTM向量作为输入,训练一个单层的前馈神经网络的分类器。在训练过程中使用负对数似然损失函数,利用梯度下降法更新分类器的权重参数。
[0116] 7、定界模块和分类模块的使用过程
[0117] 经过上面的训练之后,得到了两个模块的参数的局部最优值和字嵌入矩阵的最优值,并且把这些值固定下来。对于新给的一个句子,使用训练好的模块对其进行命名实体的自动识别。
[0118] 图2所示,命名实体的自动识别的过程如下:
[0119] 步骤1:使用定界模块,计算出句子的得分最大的字n元组序列。
[0120] (1)通过字嵌入矩阵获得其对应的字嵌入向量。
[0121] (2)计算句子的所有的字n元组的BiLSTM向量表示。
[0122] (3)计算每个字n元组对应的得分。
[0123] (4)计算出该句子的最大得分的字n元组序列。
[0124] 步骤2:使用分类模块,把上面定界模块中得到的句子的最大得分的字n元组序列以及其中每个字n元组对应的BiLSTM向量表示作为输入,判断出其中的每个字n元组是否是命名实体。
[0125] (1)判断字n元组序列中的每个字n元组的是否是命名实体。
[0126] (2)输出最终的命名实体识别结果。
[0127] 8、计算出句子的得分最大的字n元组序列的viterbi动态规划算法
[0128] 该算法的流程图见图3所示。对于一个句子,已知其所有字n元组的得分,如果不需要考虑字n元组之间的得分影响,即各个字n元组的得分是独立,那么可以使用高效的viterbi动态规划算法算法求出使句子获得最大的得分的字n元组序列。
[0129] 图3中所用的符号说明如下。含有N个字的句子sen=c1c2…ci…cN,ci表示句子中的第i个字。计算出的所有的字n元组的得分{s1,1,s2,1,…,sN,1,s1,2,…,si,m,…,sN-1,2,s1,N},si,m表示句子中第i个字开始的长度为m的字n元组。Seqi表示从第1个字开始到第i个字的序列的得分最大的字n元组序列,Scorei表示字n元组序列Seqi对应的得分。SeqN表示整个句子的得分最大的字N元组序列。“[]”表示空列表(列表的索引从0开始),“Min_Value”表示当前计算机系统中的所能表示的最小值,“+”作用于列表,表示对列表进行连接操作。Seqs和Scores分别记录了从第一个字到第i个字的最大得分的字n元组序列,以及该序列对应的得分。句子的前若干个连续的字组成的序列,称为这个句子的一个子序列。句子的前i个连续的字组成的序列,即c1c2…ci,称为这个句子的第i个子序列,记作seni。Seqs和Scores都是长度为N+1的列表,分别记录了句子的所有子序列的的最大得分的字n元组序列,以及这个字n元组序列对应的得分。比如Scores[i]存放seni的字n元组序列的最大得分,Seqs[i]存放seni的最大得分对应的字n元组序列。为了在循环计算时的方便和统一,Scores[0]设置为0,Seqs[0]设置为空序列[]。Max_Seq和Max_Score分别存放当前正在计算的子序列的最大得分的字n元组序列以及该最大得分;cur_score存放当前正在计算的子序列的字n元组序列的得分。最后的Seqs[N]和Scores[N],即是整个句子对应的最大得分的字n元组序列和该序列的得分。
[0130] 算法描述如下:
[0131] 步骤1:设置Seqs=[[]]、设置Scores=[0]、设置i=1;
[0132] 步骤2:如果i等于N,转到步骤8;
[0133] 否则设置Max_Seq=[]、设置Max_Score=Min_Value、设置j=1;
[0134] 步骤3:如果j等于i,转到步骤6;
[0135] 否则计算cur_score=Scores[j-1]+sj,i-j+1;
[0136] 步骤4:如果cur_score大于Max_Score,
[0137] 设置Max_Score=cur_score、设置Max_Seq=Seqs[j]+[Gj,i-j+1];
[0138] 步骤5:设置j增加1,转到步骤3;
[0139] 步骤6:设置Seqs[i]=Max_Seq、设置Scores[i]=Max_Score;
[0140] 步骤7:设置i增加1,转到步骤2;
[0141] 步骤8:输出Seqs[N]和Scores[N];
[0142] 步骤9:算法结束。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈