一种基于Bert的动态阈值调整的智能问答系统

文档序号:28621127发布日期:2022-01-22 13:25阅读:221来源:国知局
一种基于Bert的动态阈值调整的智能问答系统
一种基于bert的动态阈值调整的智能问答系统
技术领域
1.本发明涉及人工智能和自然语言处理领域,特别涉及一种基于bert的动态阈值调整的智能问答系统。


背景技术:

2.随着互联网的飞速发展,很多传统的业务也开始往互联网转型,比如线上购物,线上购票等,这就催生了对线上客服的大量需求。据统计,我国目前开展智能客服相关行业的企业接近400家,服务用户过亿。智能客服的关键技术是智能问答,是信息检索的一种高级形式,它能用准确、简洁的自然语言回答用户用自然语言提出的问题。在智能客服领域,目前智能问答常用的技术是基于知识库的问句匹配,传统的方法是基于分析建模、向量化的方法,这种方法的缺陷是需要较多的先验知识,准确度不高。而目前最新的基于transformer技术的预训练模型,通过有标签的数据训练后,在已经训练过的标准问题上可以达到较高的准确率,缺陷是无法匹配识别未训练的标准问题。
3.本发明针对两种方法的缺点,提出了一种基于bert的动态阈值调整的智能问答系统。


技术实现要素:

4.本发明的目的在于提供一种基于bert的动态阈值调整的智能问答系统,以解决上述背景技术中提出的问题。
5.为实现上述目的,本发明提供如下技术方案:一种基于bert的动态阈值调整的智能问答系统,一种基于bert的动态阈值调整的智能问答系统,其特征在于方法步骤如下:
6.s101:获取用户问题q;
7.s102:将用户问题q通过基于关键字向量化的问句匹配方法,得到kw个相似的标准问题;
8.s103:将用户问题q通过bert预训练模型,得到kr个相似的标准问题;
9.s104:按照一定的规则挑选出两个方法得到的标准问题作为匹配的标准问题集;
10.s105:将标准问题集通过动态阈值调整模块得到最终的结果。
11.优选的,所述s103包括关键字向量化的问句匹配方法,其包括以下步骤:
12.步骤一:将知识库的标准问题抽取关键字,然后通过预训练的词向量模型得到向量表达;
13.步骤二:对待匹配的问题抽取k个关键字,通过预训练的词向量模型得到向量表达;
14.步骤三:与知识库的标准问题通过余弦相似度计算关键字之间的相似程度;
15.步骤四:选择与待匹配问题相似度最高的标准问题作为匹配的问句。
16.优选的,步骤s103包括基于bert预训练模型的问句匹配方法,包含步骤如下:
17.步骤一:将问句放入意图识别bert模型中,预期其所属的类别;
18.步骤二:将该类别中的所有问句提取出来,分别于待检索的问句通过匹配bert模型计算相似度;
19.步骤三:将结果按照相似度进行排序。
20.优选的,步骤s104中提出了融合基于关键字向量化的问句匹配得到的结果和基于bert预训练模型的结果的方法,包含步骤如下:
21.步骤一:当关键字向量化的问句匹配方法匹配到的标准问句,通过知识库查询后是还未经过bert训练的标准问句,
22.步骤二:相似度高于阈值,则返回关键字向量化匹配的标准问句,否则返回基于bert的问句匹配方法匹配的问句。
23.优选的,所述步骤s105中提出了动态阈值调整策略,设置阈值h1和阈值h2,当以上方法计算的相似度大于阈值h1,则返回最相似的问句,当相似度在h1与h2之间,则返回相似度在这之间的最多5个匹配的问句,当低于h2,则没有匹配的问句。
24.优选的,所述种基于bert预训练模型的问句匹配方法还包括意图识别和文本匹配:
25.意图识别:标准问答库中每个问题,每个问题都有一个类别,即意图标签,首先训练进行问题的意图识别的bert模型,其能预测输入问题所属的类别。
26.文本匹配:在每一个类别中,采用1个正例,9个负例的方式构建文本匹配的训练集,训练进行文本匹配的bert模型。
27.优选的,所述bert预训练模型在预训练阶段,有两个子任务分别是遮盖语言模型任务和后句预测任务。
28.本发明的技术效果和优点:结合标准问答对知识库的管理,提出了一个动态阈值调整的问题匹配方法,可以匹配识别未训练的标准问题,进一步提高问题回答的准确率。
附图说明
29.图1是本发明一种基于bert的动态阈值调整的智能问答系统的整体流程图;
30.图2是本发明一种基于bert的动态阈值调整的智能问答系统的基于关键字向量化的问句匹配方法的流程图;
31.图3是一种基于bert的动态阈值调整的智能问答系统的基于bert预训练模型的流程图。
具体实施方式
32.下面将对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
33.1.建立知识库,管理已有问题和新问题该问答系统的工作流程是:已有一个存储了当干标准问题对的知识库,对于一个查询问题q,在知识库中采用某种算法寻找与该问题最相近的标准问题,然后将其答案作为查询问题q的答案返回,因此,先人工构建一批领域内的高质量的问答对作为供检索的标准问答对,存储到知识库中,知识库是一个用于管理
标准问答对的数据库。
34.2.本方法使用skip-gram方法训练的神经网络模型进行词向量的提取,skip-gram模型的输入是一个单词wi,他的输出是wi的上下文w
0,i
,

,w
0,c
,上下文的窗口大小为c,比如句子“i drive my car to the store”,如果把“car”作为训练输入数据,单词组{i,drive,my,to,the,store}就是输出,所有的单词都采用one-hot编码,使用神经网络预测对输入单词的附近词语进行预测,通过神经网络的反向传播进行训练。然后取神经网络的中间隐藏层作为单词的词向量表示,使用该种方法得到的词向量表达蕴含了丰富的语义信息,可以用于求相似度、语义推导等下游自然语言处理任务,本方法采用的词向量提取网络将每个词语生成一个200维的词向量;
35.对于词向量,采用计算余弦距离的方法计算其相似度:
[0036][0037]
式中,a和b是两个n维向量,a=[a1,a2···an
],b=[b1,b2···bn
],则s就是向量a和b之间的余弦相似度。
[0038]
因此,基于关键字匹配的问句算法如下:
[0039]
输入:
[0040]
问句q1,q2,预训练的词向量模型m,相似度阈值h
[0041]
输出:
[0042]
q1,q2之间的相似度度量值s
[0043]
1)加载词向量模型,初始化相似度s;
[0044]
2)对问句q1提取k个关键字[w1,w2···
wk],问句q2提取k个关键字[w
′1,w
′2···w′k];
[0045]
3)当i∈[1,k]时,循环执行以下步骤:
[0046]
4)当j∈[1,k]时,循环执行以下步骤:
[0047]
5)将wi和w
′j通过词向量模型m得到词向量表达vi,vj;
[0048]
6)通过余弦相似度得到vi和vj的相似度f;
[0049]
7)如果f>阈值h,则相似度s
+
=1
[0050]
8)结束循环;
[0051]
9)结束循环
[0052]
10)返回相似度s
[0053]
3.标注数据在bert上进行fine-tuning
[0054]
综述:
[0055]
bert是一种基于transformer的语言模型。语言模型可以对一段文本的概率进行评估,对信息检索,机器翻译,语音识别等任务有着重要的作用。互联网上有着海量的文本资源,这些文本资源暗含了大量的语义信息,当是让模型去学习这些文本资源,学会其语义信息,就可以很好的支援下游的各种自然语言处理任务。传统的语言模型是基于长短期记忆神经网络(lstm)的语言模型,lstm网络是一种循环神经网络,与普通的神经网络相比,其
在同一层的神经网络之间用隐藏状态进行信息的传递。这种特质使得lstm适用于文本这类序列问题的处理。虽然lstm网络在自然语言处理中发挥了巨大的作用,但是信息过多就会造成模型非复杂,目前计算机的计算能力是完全不够的。全连接网络虽然是一种非常直接的建模远距离依赖的模型,但是无法处理变长的输入序列,不同的输入长度,其连接权重的大小也是不同的,就此问题研究者提出了attention机制“动态”的生成不同连接的权重,然而lstm网络的更新过程是线性的,必须等上一个神经元计算完后将隐藏状态传递到下一个神经元才能继续计算,这限制了神经网络的计算更新速度,所以使用出现了使用自注意力机制的transformer模型,该模型打破了对内部隐藏状态的依赖,同时能记忆了上下文的数据,能够快速的并行计算,transformer架构的自注意力机制可以对整个输入序列建立依赖关系,注意力函数将编码器的输入向量转化为三组向量q、k、v,即查询(query)和键值对(key-value)向量。它的计算使用点乘注意力,其计算公式为:
[0056][0057]
式中dk为缩放因子,用于加快计算速度。
[0058]
而bert模型采用了transformer的双向编码器用于语言建模,而通常的语言模型只考虑了单个方向上的语义关系,但是双向的语言模型比单向的更能捕获更深层的语义含义。
[0059]
bert使用句子对作为输入,例如对于输入句子对w1和w2,经过处理后用于bert模型的输入是:[cls]w1[sep]w2[sep],[cls]是分类任务的特殊标记符,[sep]用于标识两个句子的分割和输入对句子的结尾。
[0060]
在预训练阶段,有两个子任务分别是遮盖语言模型任务和后句预测任务,前者随机给输入序列中的单词以15%的概率替换掉,模型的任务就是预测出被替换的单词。后者是句子级别的替换,有50%的概率将第二个句子替换为其他的语句,然后模型预测第二个句子是否被替换,通过这种方式,bert模型可以使用互联网上海量的文本数据进行预训练,然后学会深刻的理解语言的语义知识。
[0061]
bert模型的微调(fine-tune)可以用于文本分类任务、单句子分类任务、句子相似度匹配等任务,微调是指针对特定的任务场景,比如本发明的文本相似度匹配,先构建一个人工标注的文本匹配的训练数据集,然后用已经预训练好的模型在训练集上继续训练,由于预训练的模型已经学会了丰富的语义知识,所以在相对较少的训练集上训练就能达到较好的效果。
[0062]
针对本发明的文本匹配任务,首先构造了一个训练集,该训练集中是客户所提的问题和该问题对应的标准问题,然后使用该训练集在预训练的bert模型上fine-tune,fine-tune时,如果直接将所有的标准问题作为标签进行训练,由于标准问题比较多,这样会导致正负样本不匹配。当有k个标准问题,则只有一个正例,因为每个问题只会有一个相似的标准问题,所以剩下的k-1个都是负例,数据集正负样本严重不平衡,很难有效得学习到正例语义匹配的信息。
[0063]
标准问答库中的问题,都会属于某个类别,而该类别其实就是该问题的意图,比如在航空客服领域,某些问题是属于退票这个意图的,某些问题是属于订票相关的意图。该意
图本身蕴含着一定的语义信息,以往的方法直接将标准问题作为类别,没有利用上类别中的语义信息。其次,标注数据的类别数量多加大了不均衡分类的难度,尤其是对样本较少的类别。因此本发明提出了两端式bert作为改进。
[0064]
于是该bert模型的训练包括两个阶段:
[0065]
1)意图识别bert
[0066]
将标准问答库中每个问题的类别作为标签,训练意图识别的bert模型。问题的类别一般远少于标准问题的数量。
[0067]
2)文本匹配bert
[0068]
训练文本匹配的bert模型,将用户的问题与系统的标准问题进行匹配,输出与每个标准问题的相似度,训练时,将训练集中每个用户问题对应的标准问题作为正例,标准问题所在的类别中的其余问题作为负例。
[0069]
同样,对于用户的问题,使用bert模型去计算其相似的标准问题也分为两个阶段:
[0070]
1)意图识别通过意图识别bert预测该问题所属的类别c
[0071]
2)文本匹配将类别c下的所有标准问题与用户问题通过文本匹配bert计算相似度,按照相似度由高到底输出结果。
[0072]
4.结合关键字匹配与bert的问句匹配系统;
[0073]
通过在标注数据训练后的bert模型在相似度计算上可以得到很高的准确度。但是其缺陷是只能对已经训练过的标注问答对进行匹配。这就意味着如果用户往知识库中新增了一个问答对q或者知识库中的某些问答对还没有标注数据进行训练,那么即使我们将问题q输入bert中进行检索匹配,也不会匹配到问题q自身。针对该问题,提出了关键字匹配与bert的混合系统,该系统能充分利用bert的高准确率和关键字匹配不需要预训练的优点。
[0074]
为了区分已经通过bert训练过的标注问句和未经bert训练的问句,在知识库中给标准问句添加一个标识位来进行区分,对于待匹配的问句q,通过关键字匹配方法检索出kr个标准问句,再通过bert模型检索出kb个标准问句,该匹配系统返回的结果是两个方法匹配的问句综合出来的k个标准问句,且该k个问句按照一定的相似度度量从高到低进行排序。
[0075]
由于关键字匹配方法的准确率相较于bert模型较低,所以设置kr等于1或者2,只取关键字匹配方法得出的前一两个匹配的结果。如果关键字匹配出的kr个问句中包含有未经bert训练的问句,则认为问句q有很大可能与未训练过的问句是相似的,是想要的结果,于是将其加入最终的匹配问答集中。匹配问答集中剩下的答案由bert模型的结果组成。
[0076]
结合关键字匹配与bert的问句匹配算法如下:
[0077]
问句q,知识库databse,基于关键字的问题匹配算法algo1,参数kr,基于bert模型的匹配算法algo2,参数kb[0078]
输出:问答集a:知识库中k个最相似的问题
[0079]
1)加载模型,初始化参数;
[0080]
2)输入问句q;
[0081]
3)经过alog1得到kr个相似的问题
[0082]
4)经过alog2得到kb个相似的问题
[0083]
5)当时,循环执行以下步骤
[0084]
6)如果q

是未经过bert训练的问句
[0085]
7)结束循环
[0086]
8)当时,循环执行以下步骤
[0087]
9)如果包含的问题数小于k,
[0088]
10)将q

加入问卷答集a中
[0089]
11)结束循环
[0090]
12)将其加入到问卷集a中。
[0091]
5.经过实验与实际的应用,发现如何给用户返回他所询问的问题q的答案是一个值得商榷点。大部分的问答系统返回的是最相似的问题的答案给用户,然后当用户的问题并没有表达很明确的时候,目前的匹配算法很难精确的匹配出最相似的,用户想要的答案,但是用户想要的答案也许存在于最相似的前k个问题中。针对上述问题,本发明提出了一种动态阈值调整的方法,该方法可以灵活的根据用户的问题和匹配的结果返回不定数量的答案,最大的提高模型的准确度和用户的满意度。
[0092]
经过在测试数据上的不断实验,设定了复杂的规则来判断返回问题还是答案和返回结果的数量,测试发现相似度》0.6时的问题有很大概率就是用户想要的问题,此时直接返回该问题的答案给用户。当相似度在0.3到0.6之间时,在这个区间的问题有可能是用户想要的问题,此时选择返回在这个区间的问题给用户,让用户去选择哪个问题是他想要的问题,因为问题通常都是简短的,而答案通常会比较长,当直接返回多个问题的答案,会让用户难以快速找到自己想要的答案,所以这里选择返回多个问题而不是答案。如果没有问题的相似度》0.3,则认为没有查找到相似的问题,不返回结果。
[0093]
动态阈值调整的规则如下:
[0094]
如果相似度最高的问题的相似度》0.6
[0095]
返回该问题的答案
[0096]
如果不存在相似度》0.6的问题
[0097]
返回相似度在0.3《《0.6这个区间的所有
[0098]
问题如果不存在相似度》0.3的问题
[0099]
不返回结果。
[0100]
其具体方法步骤如下:
[0101]
s101:获取用户问题q;
[0102]
s102:将用户问题q通过基于关键字向量化的问句匹配方法,得到kw个相似的标准问题;
[0103]
s103:将用户问题q通过bert预训练模型,得到kr个相似的标准问题;
[0104]
s104:按照一定的规则挑选出两个方法得到的标准问题作为匹配的标准问题集;
[0105]
s105:将标准问题集通过动态阈值调整模块得到最终的结果。
[0106]
进一步地,所述s103包括关键字向量化的问句匹配方法,其包括以下步骤:
[0107]
步骤一:将知识库的标准问题抽取关键字,然后通过预训练的词向量模型得到向量表达;
[0108]
步骤二:对待匹配的问题抽取k个关键字,通过预训练的词向量模型得到向量表达;
[0109]
步骤三:与知识库的标准问题通过余弦相似度计算关键字之间的相似程度;
[0110]
步骤四:选择与待匹配问题相似度最高的标准问题作为匹配的问句。
[0111]
优选的,步骤s103包括基于bert预训练模型的问句匹配方法,包含步骤如下:
[0112]
步骤一:将问句放入意图识别bert模型中,预期其所属的类别;
[0113]
步骤二:将该类别中的所有问句提取出来,分别于待检索的问句通过匹配bert模型计算相似度;
[0114]
步骤三:将结果按照相似度进行排序。
[0115]
其中,步骤s104中提出了融合基于关键字向量化的问句匹配得到的结果和基于bert预训练模型的结果的方法,包含步骤如下:
[0116]
步骤一:当关键字向量化的问句匹配方法匹配到的标准问句,通过知识库查询后是还未经过bert训练的标准问句,
[0117]
步骤二:相似度高于阈值,则返回关键字向量化匹配的标准问句,否则返回基于bert的问句匹配方法匹配的问句。
[0118]
更进一步地,所述步骤s105中提出了动态阈值调整策略,设置阈值h1和阈值h2,当以上方法计算的相似度大于阈值h1,则返回最相似的问句,当相似度在h1与h2之间,则返回相似度在这之间的最多5个匹配的问句,当低于h2,则没有匹配的问句。
[0119]
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1