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

一种基于RoBERTa模型的长文本语义相似度计算方法与流程

2022-04-27 07:56:11 来源:中国专利 TAG:

一种基于roberta模型的长文本语义相似度计算方法
技术领域
1.本发明涉及一种基于roberta模型的长文本语义相似度计算方法,属于自然语言处理领域。


背景技术:

2.语义相似度计算是人工智能自然语言处理领域的基础任务之一,是文本查重、智能问答、搜索引擎等上层应用的基础支撑技术。语义相似度意在对于给定的两个文本,从语义的角度度量二者之间的相似性,通常会给出一个0到1之间的语义相似度分值,分值越高代表二者越相似。
3.现有的语义相似度方案有的基于字面进行计算,无法考虑语义上的相似性;有的方案基于word2vec等静态词向量计算语义相似度,无法考虑一词多义的情况;由于需要先进行分词,可能存在分词错误的情况,导致语义相似度计算的精确度较低。一个更重要的问题是,目前计算语义相似度的方法基本都是对词语或句子进行计算,很少会针对长篇文本进行计算。本发明基于上述问题进行了全面的改进,可以较准确地计算出长文本之间的相似度。


技术实现要素:

4.本发明提出一种基于roberta模型的长文本语义相似度计算方法。本发明的目的在于提供一种计算任意长度的文本之间的相似度的方法,从而可以从数据库中检索出与已知文本最相关的文档。
5.本发明技术方案如下:
6.进行数据预处理,首先对两个文本进行分词,然后过滤掉停用词,再将过滤后的词进行合并,最后将两个文本按照标点符号进行分句;
7.构建基于roberta的句子语义相似度计算的模型;
8.训练和评估基于roberta的句子语义相似度计算的模型;
9.使用基于roberta的句子语义相似度计算的模型,求解两个文本的分句计算相似度而得的相似度矩阵;
10.求出相似度矩阵每行或每列最大值构成的最大相似度向量;
11.计算最大相似度向量各元素的平均值,即为两个文本的语义相似度。
12.本发明的有益效果为:语义相似度意在对于给定的两个文本,从语义的角度度量二者之间的相似性,给出一个0到1之间的语义相似度分值,分值越高代表二者越相似。本发明针对目前此类问题的解决方案中出现的问题,如只基于字面而未语义相似性、没有考虑一词多义、分词错误、基本没有针对长篇文本进行计算相似度的方案,提出了自己的求解方案,可以较准确地计算出长文本之间的相似度。
13.附图和附表说明
14.图1为本发明的算法整体流程图;
15.图2为数据预处理的流程图;
16.图3为transformer模型的结构图;
17.图4为bert模型预训练和微调的结构图;
18.图5为基于roberta的句子语义相似度计算的模型图。
19.图6为基于roberta的句子语义相似度计算的模型评估结果。
20.图7为两个文本的相似度矩阵示意图。
具体实施方式
21.下面将会描述该算法的思路,并给出算法的具体步骤。
22.步骤一:数据预处理
23.进行数据预处理,可以有效地去除掉文本中的无关信息,提高有效信息所占的比例,从而提高句子相似度计算的准确性。
24.在本发明中,数据预处理的步骤如下:首先对两个文本进行分词,然后过滤掉停用词,再将过滤后的词进行合并,最后将两个文本按照标点符号进行分句。具体的停用词可以通过分析语料来确定。
25.步骤二:构建基于roberta的句子语义相似度计算的模型
26.2.1transformer和bert
27.在介绍roberta模型之前,需要先介绍其基础的模型transformer和bert。与基于rnn的方法相比,transformer不需要循环,而是并行处理序列中的所有单词或符号,同时利用自注意力机制将上下文与较远的单词结合起来。通过并行处理所有单词,并让每个单词在多个处理步骤中注意到句子中的其他单词。 transformer的训练速度比rnn快很多,而且处理许多自然语言处理任务的效果也比rnn好得多。transformer模型的结构图见图3。
28.bert包含了两层双向transfomer模型,仍然用多头注意力层作为其核心处理层。训练分为两个步骤:预训练(pre training)和微调(find-tuning)。预训练是为了在输入的词向量中融入上下文特征;微调是为了使bert模型能适应不同的下游任务,包括分类、问答、序列标注等。经过预训练后的bert模型,可以直接通过微调的方式用在各种具体的nlp任务中。两个步骤的结构图见图4。
29.bert模型用两个无监督子任务训练出了两个子模型,它们分别是:遮蔽语言模型(masked language model,mlm)和下一句预测(next sentence prediction, nsp)模型。mlm模型的原理是先把待预测的子词抠掉,再根据上下文中提供的其他非屏蔽子词来预测被屏蔽子词的原始值。nsp模型的原理是输入一句话,让模型预测其下一句话。
30.2.2 roberta模型
31.roberta模型是人们在对原始bert模型预训练的研究中,通过评估超参数调整和训练集大小的影响,针对其不足之处进行改进而得来的。roberta模型与bert模型一样,都属于预训练模型。不同的是,roberta模型使用了更多的训练数据、更久的训练时间和更大的训练批次,对超参数和训练集也有修改,具体包括:
32.1.动态掩码:使用动态掩码策略(dynamic masking)的预训练过程,需要依赖随机掩盖和预测被掩盖的子词。roberta模型为每个输入序列单独生成一个掩码,让训练的数据不重复。而在bert模型的mlm子模型中,只执行一次随机掩盖和替换,并在训练期间保存这
种静态掩码策略,使得每次都使用相同掩码的训练数据,从而影响了数据的多样性。
33.2.训练数据:roberta使用了160gb的训练数据,远超bert所使用的16gb 的训练数据,具体包括:书籍文本及英文维基百科的文本,即bert使用的 16gb训练集;2016年9月至2019年2月爬取的630万篇英文新闻稿的文本,共计75gb;从reddi的高赞url上爬取的网页文本,删除htmil标签后共计38gb;取自commoncrawl数据集的一个故事集合,共计31gb。
34.3.取消了bert模型中的nsp(下一个句子预测)子任务。经过roberta模型和xlnet模型的验证,nsp子任务在bert模型的预训练过程中是可以去掉的。
35.4.调整了优化器的参数。
36.5.使用了更大的字符编码(byte-pair encoding,bpe),它是“字符”级和“单词”级表示的混合体,可以处理自然语言语料库中常见的大词汇,避免训练数据出现更多的“[unk]”标识而影响预训练模型的性能。如果在bert模型的自带字典vocab.txt中找不到某个字或者英文单词,则将其用“[unk]”表示。
[0037]
2.3基于roberta的句子语义相似度计算的模型
[0038]
其原理简单来说就是将需要计算相似度的两个句子先拼接在一起,然后通过 roberta模型获取整体的编码信息,接着通过全连接层,输出相似和不相似的概率。模型结构图见图5。
[0039]
首先要将文本token化,切分成字数组,例如[如何得知关闭借呗],[想永久关闭借呗]。然后将两个切分后的句子,按照如下的方式拼接:[cls]如何得知关闭借呗[sep]想永久关闭借呗[sep]。
[0040]
拼接后的句子中,[cls]是一个特殊分隔符,表示每个样本的开头,[sep]是样本中每个句子的结束标记符。拼接后的样本长度是len(a) len(b) 3,因为加上了特殊标识符[cls]和[sep]。在模型中,会指定最大样本长度len,本次实验中指定的是30,也就是处理后的样本长度和不能超过len,即len(a) len(b) 3 《=len,超出最大长度的部分会被截取。
[0041]
然后继续对输入数据进行处理,将内容数字化。将token数组转化为token的索引数组,所有的样本会被转化为固定长度(len)的索引数组。[cls]的索引是101,[sep]的索引是102,不够最大样本长度的部分补0。接着对输入进行mask 操作,样本有效部分是1,无效部分是0,0表示在训练时不会被关注。再对两个句子进行分割,分割操作是通过一个数组来标记,属于第一个句子标记为0,属于第二个句子的标记为1,不足部分也填0。
[0042]
使用已经训练好的roberta模型对句子对进行编码时,因为roberta中双向attention机制,两个句子会相互attention,也就是通过训练会学到两个句子的相似程度。将句子对通过roberta预训练模型计算之后,获取两个句子的的最终编码。然后对其进行0.1的dropout,主要是为了防止模型过拟合,dropout 后的结果后边接一层全连接层,全连接层的输出维度为2,然后通过softmax计算,得到相似和不相似的概率。
[0043]
步骤三:训练和评估基于roberta的句子语义相似度计算的模型
[0044]
构建好模型以后,使用lcqmc数据集进行训练和评估。lcqmc(large
‑ꢀ
scale chinese question matching corpus)是一个大型中文问题匹配语料库。问题匹配是是从现有数据库中搜索与输入问题具有相似意图的问题。lcqmc更多的关注在intent matching(意图匹配)而不是paraphrase(短语)方面。
[0045]
lcqmc构建的方式是先针对不同的领域从百度问答中抽取高频的相关问题,然后
通过wasserstein distance进行初步筛选,最后人工进行标注。数据集一共有 260,068对标注结果,分为三部分,即包含238,766个问题对的训练集、包含 8,802个问题对的验证集和包含12,500个问题对的测试集。输入是两个句子,输出是0或1,其中0代表语义不相似,1代表语义相似。例如:聊天室都有哪些好的[分隔符]聊天室哪个好[分隔符]1;飞行员没钱买房怎么办?[分隔符] 父母没钱买房子[分隔符]0。
[0046]
首先使用包含238,766个问题对的训练集训练基于roberta的句子语义相似度计算的模型。接着使用包含8,802个问题对的验证集来评估模型的优劣,评估结果见图6,可以看到准确率达到了85%以上。
[0047]
步骤四:求相似度矩阵
[0048]
训练好基于roberta的句子语义相似度计算的模型以后,即可使用其求解两个文本的各分句之间相似度,从而得到相似度矩阵。
[0049]
定义文本t1包含m个句子(s
11
,s
12
,

,s
1m
),文本t2包含n个句子(s
21
,s
22
,

, s
2n
)。将这m个句子(s
11
,s
12
,

,s
1m
)与n个句子(s
21
,s
22
,

,s
2n
)分别使用步骤三得到的模型,即可得到m
×
n个相似度,构成如图7所示的相似度矩阵。
[0050]
步骤五:求最大相似度向量
[0051]
相似度矩阵每行或每列最大值,对应的是该行或该列所在句子在另一篇文本中最相似的句子。举个例子,假如sim
m1
是第一列最大值,则文本t2的句子s
21
在文本t1中最相似的句子是s
1m

[0052]
求出相似度矩阵每行或每列最大值构成的向量,即为两个文本分句之间最大相似度构成的向量。
[0053]
步骤六:求出两个长文本的语义相似度
[0054]
两个文本分句之间最大相似度构成的向量,即最大相似度向量的各元素平均值,即为两个文本的语义相似度。
[0055]
本发明未尽事宜为公知技术。
[0056]
上述实施例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人士能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所作的等效变化或修饰,都应涵盖在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

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

相关文献