一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

NLP中基于K-best算法和N-gram模型的BERT模型强化方法与流程

2023-02-02 02:13:59 来源:中国专利 TAG:

nlp中基于k-best算法和n-gram模型的bert模型强化方法
技术领域
1.本发明涉及自然语言处理领域,具体涉及一种自然语言处理中基于k-best和n-gram的bert模型强化方法。


背景技术:

2.随着自然语言处理nlp领域的不断发展,人们从传统的机器学习方法不断地在向深度学习方法探索。
3.近期谷歌提出的bert(bidirectional encoder representation from transformers)预训练模型更是在自然语言处理领域的11个任务上大幅刷新了准确率的精度,成为了自然语言处理领域里程碑式的模型。
4.bert模型的预训练通常将文本作为与小文本单元相对应的标记序列来处理,例如英文单词和中文字符。但是,它忽略了较大的文本粒度所携带的信息,因此编码器无法轻松适应某些字符组合。这会导致重要语义信息的丢失,这对于中文尤其成问题,因为中文没有明确的单词边界。
5.有内学者提出了一种多粒度bert模型(on sample based explanation methods for nlp:efficiency,faithfulness,and semantic evaluation),以无监督的方式学习有效的多字符语言单元的表示形式,并且还通过对n-gram模型(n元模型)进行预训练作为对自我注意矩阵的隐式正则化,显示出了强大的可解释能力。尽管有效,但是这种多粒度bert模型存在两个问题:1)它依赖于n-gram模型的枚举,这对于数量较大的枚举数量,可能消耗资源较多;2)它没有利用知识一词。
6.所以,bert模型对单词的学习和理解能力还有不足,需要对bert模型进行强化。


技术实现要素:

7.针对现有技术所存在的上述缺点,本发明提供了一种nlp中基于k-best算法和n-gram模型的bert模型强化方法。
8.本方法针对待匹配相似度的数据集:通过数据清洗预处理,去除标题、无关符号、空白行等,提升了数据的有效程度;采用三元语法输入代替字符输入,提升语句评估的合理性;采用pkuseg分词工具,提升了分词的准确率;同时,在分词中采用k-bset维特比算法,在提升分词有效率的基础上,使bert模型对于有意义的分词结果赋予更多的注意力,从而加强模型对正确分词的理解能力,具有广泛的应用前景。
9.为实现本发明的目的,本发明提供了如下技术方案:
10.一种nlp中基于k-best算法和n-gram模型的bert模型强化方法,其特征是包括以下步骤:
11.步骤1)获取语料库中的文本用于训练bert模型,对文本行预处理,得到新文本;
12.步骤2)把步骤1)得到的新文本按照单字、双字、三字输入拼接得到三元语法输入;
13.步骤3)用分词工具,基于k-best维特比算法获取k个分词序列,进行mask掩码微
调;最终得到微调后的n-gram;
14.步骤4)将微调后的n-gram输入bert模型中,进行文本相似度匹配;
15.所述步骤1)的步骤包括:
16.步骤101)对语料进行清洗;
17.步骤102)把语料的原始文本段落拆分,再分别将相邻两个句子拼接成一个句子组,最终得到新文本;同一句子组中,在第一个句子之前添加开始标识符“[cls]”;分别在每个句子之后添加结束符“[sep]”;
[0018]
步骤103)将新文本切分成一个字符串input1;
[0019]
所述步骤2)中,创建三元语法输入,步骤包括:
[0020]
步骤201)对原字符串中的字符都左移一个单元,删除开始标识符[cls],且末尾添加0,得到新的字符串,记为方法一;
[0021]
按照方法一,对步骤103)所得字符串input1处理,得到字符串input2;定义字符串input1为uni-gram;
[0022]
步骤202)将字符串input1和字符串input2相应位置字符进行拼接,第二个新字符串bi-gram;相应位置是指两个字符串中顺序相同的字符;
[0023]
步骤203)对字符串input2按照方法一进行处理,得到字符串input3;
[0024]
将字符串input1、input2和input3中的相应位置字符进行拼接,得到第三个新字符串tri-gram;相应位置是指三个字符串中顺序相同的字符;
[0025]
步骤204)将字符串uni-gram、bi-gram和tri-gram从前到后,依次拼接得到三元语法输入;
[0026]
所述步骤3)中,通过分词工具和k-best维特比算法进行微调,步骤包括:
[0027]
步骤301)使用pkuseg分词工具,采用k最佳顺序解码即k-best维特比算法来扩展pkuseg:前向传递计算并存储维特比前向分数,这是从开始到当前节点的最佳分数,表示为其中d
t
是直到位置t的序列前缀的分数,前向传递计算并存储维特比前向分数,这是从开始到当前节点的最佳分数;j表示t-1位置的最优节点,dt-1(j,l)表示到t-1位置最优路线,e(i,j)表示t-1位置到目前的t位置最短路径。
[0028]
步骤302)对步骤102)中生成的句子组,使用扩展的pkuseg分词工具进行分词,方法为:
[0029][0030]
其中,node
t
(i,k)表示在位置t-1存储最佳的前k个节点,rank
t
(i,k)表示存储在到t-1的第k条路的序列;回溯时,两个变量node
t
(i,k)和rank
t
(i,k)一起回溯,一旦具有最佳k个节点,传递结束,即得到k个最佳分词序列,在该最佳分词序列中的词即为有效词;
[0031]
步骤303)按照步骤302)得到的最佳分词序列,对步骤204)中的三元语法输入中的单词进行比较,用不同向量分别作为有效词和无效词的掩码;
[0032]
将无效的三元语法输入嵌入归零,同时保留有效的三元语法输入;
[0033]
步骤304)将各个单词进行编码,得到各个单词对应的向量,将各个单词对应的向量乘以对应的掩码,最终得到微调后的n-gram。
[0034]
本方法中,n-gram模型采用三元模型。根据口语汉字特点:最多三个字,如星期天。本方法中的三元语法输入是把一个字、两个字和三个字拼接起来。
[0035]
有益效果
[0036]
采用本发明提供的技术方案,与已知的公有技术相比,具有如下有益效果:
[0037]
本发明针对待匹配相似度的数据集:通过数据清洗预处理,能够有效的去除标题、无关符号、空白行,有效提升了数据的有效程度;采用三元语法输入代替字符输入,能够有效的提升语句评估的合理性;采用pkuseg分词工具,极大地提升了分词的准确率;并在分词中采用k-best维特比算法,能够在提升分词有效率的基础上,使得模型对于有意义的分词结果赋予更多的注意力,从而加强模型对正确分词的理解能力。通过以上技术手段,提高了自然语言处理nlp的效率。
附图说明
[0038]
图1为本发明的bert模型强化方法的流程图;
[0039]
图2为三元语法创建过程示意图;
[0040]
图3为分词掩码的具体过程示意图;
[0041]
图4为对比实验中,k-best维特比算法示意图;
[0042]
图5为t=4,y=4的网格结构的推入操作示例;
[0043]
图6是不使用最佳节点的自注意力可视化示意图;
[0044]
图7是使用k个最佳节点的自注意力可视化示意图;
[0045]
图8是使用k-best维特比的准确率提升示意图。
具体实施方式
[0046]
为使本发明实施例的目的、技术方案和优点更加清楚,下面将对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0047]
本发明的一种nlp中基于k-best算法和n-gram模型的bert模型强化方法,步骤包括:1)获取语料库进行预处理,对每个训练样本进行文本切分;2)按照单字、双字、三字输入拼接形成三元语法输入;3)使用分词工具,基于k-best维特比算法获取k个分词序列,进行mask微调;4)将微调后的n-gram输入到模型中,进行文本相似度匹配。下面结合实施例对本发明作进一步的描述。
[0048]
参照图1,一种nlp中基于k-best算法和n-gram模型的bert模型强化方法,包括以下步骤:
[0049]
步骤1、获取语料库进行预处理,对每个训练样本进行文本切分。
[0050]
对语料库进行预处理,包括以下步骤:
[0051]
步骤11)对数据集中的数据进行清洗,去除标题、无关符号、空白行;
[0052]
步骤12)将原始段落拆分,将相邻两句话拼接成一组;其中,任一句子超过128字符阈值就截断该句,不足的进行补零操作;
[0053]
步骤13)将组成的新文本切分成一个字符串序列input1。
[0054]
在步骤12)第一组之前添加开始标识符[cls],每句之后添加结束符[sep]。
[0055]
在本步骤中,通过数据清洗预处理,能够有效的去除标题、无关符号、空白行,有效提升了数据的有效程度。
[0056]
步骤2、按照单字、双字、三字输入拼接形成三元语法输入。
[0057]
如图2,创建三元语法输入,包括以下步骤:
[0058]
步骤21)将步骤13)中的input1左移一个单元,删除[cls]且末尾添加0,得到input2;
[0059]
步骤22)将input1和input2相应位置字符进行拼接,得到一个新的字符串,即bi-gram;
[0060]
步骤23)将input2重复步骤21)的操作,得到input3,将input1、input2、input3相应位置字符进行拼接,得到tri-gram;
[0061]
步骤24)将input1、bi-gram、tri-gram按顺序前后拼接得到三元语法输入。
[0062]
在本步骤中,采用三元语法输入代替字符输入,能够有效的提升语句评估的合理性。
[0063]
步骤3、用分词工具,基于k-best维特比算法获取k个分词序列,进行mask微调。
[0064]
如图3,通过分词工具和k-best维特比算法进行微调,包括以下步骤:
[0065]
步骤31)使用pkuseg分词工具,使用k最佳顺序解码即k-best维特比来扩展pkuseg,其中k取3;
[0066]
步骤32)对步骤12)中生成的句子组使用pkuseg分词,得到k个最佳分词序列,在该序列中的即为有效词;
[0067]
步骤33)按照分词序列,对步骤24)中的三元语法输入中的单词进行比较,如果是有效词用向量作为掩码,如果不是有效词就用作为它的掩码,将无效的n元语法嵌入归零,同时保留有效的n元语法;
[0068]
步骤34)将各个单词进行word2vec编码得到各个单词对应的向量,将各个单词的向量乘以对应的掩码。
[0069]
理想情况下,使用0.0而不是0.1来掩盖无效的单词,希望将影响降为0,但删除无效的n-gram单词意味着删除一些有助于模型学习的信息,因此,通过使用0.1使模型易于微调。
[0070]
在本步骤中,采用pkuseg分词工具,极大的提升了分词的准确率,并在分词中采用k-bset维特比算法,能够在提升分词有效率的基础上,使得模型对于有意义的分词结果赋予更多的注意力,从而加强模型对正确分词的理解能力。
[0071]
实验说明:
[0072]
参考图的k-best维特比算法:最初,位于位置t-1的l个节点被推送到议程中(line 2),l个节点中的每一个节点ni,i=0,...,l-1代表一个句子。也就是说,节点ni代表了从头到尾的最佳顺序。l个序列中的最佳序列是全局最佳序列。然而,l个序列中的第i个序列(i=2,...,k)最佳并不一定是全局中的第i个最佳序列。将每个节点的优先级设置为由该节点得出的序列的分数。该算法然后转到k的循环(line5)。在每个循环中,最佳节点从议程中弹出,并存储在集合r中(line 6-7)。该算法通过双嵌套循环将替代的候选节点(或序列)添加到议程中(line 8-17)。这个想法是,当弹出一个最佳节点(或序列)时,我们必须将比刚
弹出的节点稍差的所有节点(序列)推入议程。
[0073]
图5显示了t=4,y=4的网格结构的推入操作示例。t、y分别代表推入的深度,也可以理解为t表示位置,y表示序列个数。假设弹出了一个最佳节点2b(在图中为灰色方框,白色字体b表示,代表位置2处的节点b,其中一个序列为0a-1d-2b-3c)。根据k-best维特比算法中的双重嵌套for循环,1a、1b、1c和0b、0c、0d的新节点将会被推入议程。每个被推入的节点代表一个序列。例如节点1b代表一个由三个部分组成的序列:从开始到1b(0c

1b),2b以及2b的前向连接(在这种情况下为3c)的这样一个维特比序列。所有这些推送的节点(序列)都将用作下一个议程弹出操作的候选对象。
[0074]
得到k个最佳序列,存储作为一个筛选集。
[0075]
图6,将切分好的三元语法输入直接放入模型中,图7,使用本发明的方法,两个图进行比较明显发现对有效词的注意力高。
[0076]
具体的,如图7,使用pkuseg扩展后的k-best维特比算法来筛选三元语法输入,得到k个最佳序列,如图中{苏打水好喝吗,苏打水有什么好处}可以筛选出{苏打,苏打水,打水,好喝,什么,有什么,好处},在图中可见,除了对自身的注意力最高,这些有效词的注意力明显高于其他。
[0077]
将切分好的的三元语法输入筛选出有效的词语输入bert模型中,比较不筛选的三元语法输入。如图8,下方曲线为不筛选的结果,上方曲线为筛选后的结果,明显发现本发明的方法能极大提升准确率。
[0078]
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不会使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献