一种基于预训练的搜索问答系统的制作方法

文档序号:20684504发布日期:2020-05-08 18:42阅读:131来源:国知局
一种基于预训练的搜索问答系统的制作方法

本发明涉及一种基于预训练的搜索问答系统,是一种基于预训练获得语言模型和现有的问答数据库,并对客户问题进行交互的系统,属于自然语言处理和机器学习领域。



背景技术:

搜索问答系统,是指系统接受到用户问题,在问答知识库中进行相似问题搜索并排序,向用户展示一个相似问题列表,并让用户进行选择,以最大可能的解决用户问题。目前各类知识库问答系统、智能客服助手、自助机等终端设备中都采用此种问答模式。区别于传统的对话系统,对话系统的重点在于交互,而搜索问答系统的重点在于提高更加准确的相似问题列表,其没有对话系统那么多的上下文状态需要维护,也不完全需要精确的问答响应。在终端设备中,语音识别准确率、客户口语化问题仍然是制约对话系统发展的关键原因。搜索问答系统可通过推荐相似问题列表这种简单高效的方式来缓解这个问题,但是也仍然面临着前5推荐准确率较低的问题。影响前5推荐准确率低的因素主要有三个,分别是口语泛化、噪音影响和固定问题需要准确答案。

搜索问答系统往往针对一个行业具有大量的数据量,且用户的问答形式更加多种多样。用户的问题可能来自终端语音识别设备采集(噪音干扰),或行业网站问询等,具有更加普遍的口语化。以税务行业为例,“缴税”,用户更可能会说“交多少钱”。事实上,行业客户往往只提供问答对,即一个标准问题对应一个标准答案,并没有标准问题的泛化,当系统接收到用户问题时,只能依次与问答知识库中的问题进行匹配。因此,搜索问答系统也面临这大量的口语泛化问题。

搜索问答系统是推荐相似问题列表,而系统不可能对任何问题都做出响应。一种解决办法是设定用户问题与问答知识库中问题相似度的最低阈值,低于这个阈值便不做出响应。但是,由于不同问题与知识库中问题的相似度差距较大,很难选择一个合适的阈值来避免噪音问题。

另外,搜索问答系统仍可能会面临一些定制问答,即用户系统输入固定问题可以准确给出固定答案,而不是返回相似问题列表,比如终端设备页面的跳转指令、用户的一些常用宣传、操作指令等,搜索问答系统仍然需要具有定制qa问答功能。



技术实现要素:

本发明要解决的技术问题是提供一种基于预训练的搜索问答系统,可以有效解决知识泛化迁移、噪音判断和qa定制的问题,在改善用户体验的同时,极大的提高问答效率。

为了解决所述技术问题,本发明采用的技术方案是:一种基于预训练的搜索问答系统,包括噪音判断模块、qa问答模块、知识匹配模块和响应输出模块;噪音判断模块通过行业词库和排除词库对用户问题是否属于噪音进行判断,当用户问题包含有行业词且不包含排除词时,被认定为非噪音,进入qa问答模块进行解析,否则被认定为噪音,响应输出模块返回热门推荐问题或者无响应;

qa问答模块包括规则录入单元和规则解析单元,规则解析单元对规则录入单元录入的用户问题进行解析,并判断解析出的用户问题是否必须要准确返回答案,如果是,则响应输出模块输出该问题对应的标准答案,如果否,则将解析出的问题送入知识匹配模块;

知识匹配模块对问题与问答库中的知识进行索引并作出相似度排序,知识索引包括倒排索引和annoy索引两种方式,annoy索引基于语义模型,语义模型是在预训练模型的基础之上,通过训练数据生成、fine-tuning得到,语义模型最后一层和倒数第二层的输出作为问题向量进行annoy索引,相似度计算与排序时,综合考虑向量相似度、问题问答频次和文本对齐比率;

响应输出模块用于输出响应,响应包括相似问题列表、准确答案、无答案、推荐热门问题四种类型。

进一步的,噪音判断模块的排除词库通过人工筛选和后期日志维护得出,得出噪音判断模块行业词库的过程为:a1)、首先统计训练数据,训练数据来源包括问答知识库和通过网络资源爬取的其他行业数据问题;a2)、使用结巴分词的精确模式进行分词,基于行业问答知识库计算词频tf,基于所有的数据计算词的逆文档频率idf,基于词频tf、逆文档频率idf计算词权重w,词频tf、逆文档频率idf、词权重w的计算公式分别为:

w=tf*idf;

a3)、根据步骤b计算的词权重选取适当数量的词作为行业词,或者通过设置最低阈值来选取行业词,对行业词中的可拆分短语进行拆分或者将行业词添加到结巴分词的自定义分词中,并提高其权重,确保行业词可被正确分出;

a4)、由专业人员提供若干口语化的简称或其他非常规行业词,形成最终的行业词库。

进一步的,qa问答模块的规则录入单元支持输入逻辑表达式、括号、逻辑嵌套、数字解析和实体录入,规则解析单元针对录入的逻辑表示式,首先将问题与规则表达式进行匹配,形成一个只包括1和0的逻辑表达式,然后通过规则解析算法对逻辑表达式进行计算并输出是否匹配。

进一步的,通过规则解析算法对逻辑表达式进行计算的过程为:将逻辑表达式压入数字栈和运算符栈中进行递归计算,运算优先级为:括号>与操作>或操作,运算规则为:1&1=1;

1&0=0&1=0;1|0=0|1=1;1|1=1;0|0=0,其中&表示与操作,|表示或操作,逻辑表达式中,用&替换与操作符号and,用|替换或操作符号or。

进一步的,知识匹配模块中的倒排索引是针对问答知识库中的问题经过结巴分词、去停电词之后得到;知识匹配模块中的annoy索引是通过对问答知识库中的知识向量构建多颗高维近邻搜索树来得到,问答知识库中的知识向量通过语义模型得到,语义模型是在预训练模型的基础之上,通过训练数据生成、fine-tuning得到。

进一步的,从预训练模型得到语义模型的具体过程为:b1)、在预训练模型的输出层后增加全连接层和softmax层,构建知识向量时,分别使用预训练模型最后一层和倒数第二层的输出作为问题向量;b2)、通过文本增强构建训练数据;b3)、基于文本增强对经过步骤b1处理的预训练模型进行fine-tuning,从而得到语义模型。

进一步的,步骤b2中通过文本增强构建训练数据的过程为:c1)、根据行业用户提供构建问答知识库并对其进行补充,补充来源包括行业网站中爬取的常见问答和人工提供;c2)、同义词提取,包括行业词库提取和同义词组抽取;爬取问答知识库和网络数据,经过tf-idf权重计算和人工筛选后构建行业关键词,然后使用腾讯词向量进行关键词的同义词抽取,抽取规则为不包括该关键词的前10位同义词,相似度使用余弦相似度,经过人工筛选、去重之后得到最终的同义词组;c3)、通过同义词替换构建问答知识库中问题的相似问题;c4)、回译,通过翻译开放平台对问答知识库中的问题进行英文翻译之后再翻译为中文,并经过人工筛选标注;c5)、通过文本增强后得到同义的问答对,通过没有答案的问题、问题随机组合、非同义词替换得到非同义的问答对,由此构建出训练数据和验证集。

进一步的,所述预训练模型为中文预训练roberta或xlnet模型。

进一步的,计算问题相似度的公式为:

其中,qu,qk分别为用户问题和知识库中被索引查询到的问题,s(qu,qk)表示用户问题与知识库中被索引查询到的问题的相似度,vu,vk分别为用户问题输入到语义模型中输出的问题向量和通过索引查询到的问题向量,cos(vu,vk)表示vu,vk两个向量的余弦相似度,γ1、γ2、μ为系数,其中γ1∈(0,0.1),γ2∈(0,0.1),μ∈(0,1);c(qk)为经日志统计得到的问题qk的询问次数;max(c(qk))为问题最大被询问次数。

进一步的,如果用户问题判定为噪音,输出响应模块根据问答频次返回热门推荐问题或者无响应,如果用户问题经qa模块解析之后符合必须要准确返回答案的规则,输出响应模块输出该问题对应的标准答案,如果用户问题非噪音其不符合qa匹配规则,则通过知识匹配模块返回相似问题列表供用户选择;另外系统维护一个相似问题列表状态,用户通过点击或者位置指令来进行问答。

本发明的有益效果:本发明为基于预训练的搜索问答系统,通过使用预训练模型微调解决知识泛化迁移,使用统计学习解决噪音判断,使用规则解析算法解决qa定制的问题,在改善用户体验的同时,极大的提高问答效率。

附图说明

图1为搜索问答系统的架构图;

图2为知识索引获取流程图;

图3为语义模型获取流程图;

图4为训练数据生成流程图。

具体实施方式

下面结合附图和具体实施例对本发明作进一步的说明。

图1为整个搜索问答系统的架构图,包括噪音判断模块、qa问答模块、知识匹配模块和响应输出模块,当系统接收到用户问题时,首先判断是否为噪音,如果是非噪音,则进行qa问答匹配,如果仍没有响应,则对知识库中的问题进行索引匹配,经相似度排序之后选出前5相似问题并返给响应模块,最终由响应给出问答响应。

本实施例中,噪音判断模块通过行业词库和排除词库对用户问题是否属于噪音进行判断,当用户问题包含有行业词也不包含排除词时,被认定为非噪音,进入qa问答模块进行解析,否则被认定为噪音,响应输出模块返回热门推荐问题或者无响应。

噪音判断模块的排除词库根据行业经验人工构建,统一过滤一些敏感信息、语音识别错误信息等非常规问题。排除词库并在后续的使用或日志统计等过程中不断进行丰富。

得出噪音判断模块行业词库的过程为:

a1)、首先统计训练数据,训练数据来源包括问答知识库和通过网络资源爬取的其他行业数据问题;

a2)、使用结巴分词的精确模式进行分词,基于行业问答知识库计算词频tf,基于所有的数据计算词的逆文档频率idf,基于词频tf、逆文档频率idf计算词权重w,词频tf、逆文档频率idf、词权重w的计算公式分别为:

w=tf*idf;

a3)、根据步骤b计算的词权重选取适当数量的词作为行业词,或者通过设置最低阈值来选取行业词,由于构建索引时需要尽可能细致的分词,因此需要对行业词中的可拆分短语进行拆分,如“代缴代扣”等,结巴分词会将其分成一个词,但是如果用户只说“代缴”则通过倒排索引便无法定位到该问题,因此需要拆分为“代缴”、“代扣”。另外,需要将行业词添加到结巴分词的自定义分词中,并提高其权重,以确保行业词可被正确分出;

a4)、由专业人员提供若干口语化的简称或其他非常规行业词,形成最终的行业词库。

对于指令意图(如控制前端页面跳转等指令)、行业/单位介绍、打招呼等常规问答,需要准确返回答案,因此设置qa问答模块。

qa问答模块包括规则录入单元和规则解析单元,规则解析单元对规则录入单元录入的用户问题进行解析,并判断解析出的用户问题是否必须要准确返回答案,如果是,则响应输出模块输出该问题对应的标准答案,如果否,则将解析出的问题送入知识匹配模块。

为了提高数据的利用率的同时相对减少数据的录入与维护工作,对于一些通用的信息可以单独拿出来定义为实体,以打印发票为例,可定义“@发票种类”实体为“水费or电费or燃气费”,在进行规则录入时可直接使用。

本实施例中,qa问答模块的规则录入单元支持输入“与或非”等逻辑表达式、括号、逻辑嵌套、数字解析和实体录入等,由此可满足各种复杂逻辑规则的实现。以打发票为例,其意图录入可以为“打and(水or电or燃气)and发票”,也可使用实体“打and{@发票种类}and发票”。另外本实施例中还提供系统实体(数字、地点等),尤其对于数字实体,可以录入数字的逻辑规则(大于、小于、等于等)。

规则解析单元针对录入的逻辑表示式,首先将问题与规则表达式进行匹配,形成一个只包括1(true)和0(false)的逻辑表达式(and用&替换,or用|替换,中文括号替换为英文括号),然后通过规则解析算法对逻辑表达式进行计算并输出是否匹配(1为匹配,0为不匹配)。

具体的,通过规则解析算法对逻辑表达式进行计算的过程为:将逻辑表达式压入数字栈和运算符栈中,使用类似加减乘除的方式进行递归计算,运算优先级为:括号>与操作>或操作,

运算规则为:

1&1=1;

1&0=0&1=0;

1|0=0|1=1;

1|1=1;

0|0=0,

其中&表示与操作,|表示或操作,逻辑表达式中,用&替换与操作符号and,用|替换或操作符号or。

知识匹配模块对问题与问答库中的知识进行索引并作出相似度排序,知识索引包括倒排索引和annoy索引两种方式,annoy索引基于语义模型,语义模型是在预训练模型的基础之上,通过训练数据生成、fine-tuning得到,语义模型最后一层和倒数第二层的输出作为问题向量进行annoy索引,相似度计算与排序时,综合考虑向量相似度、问题问答频次和文本对齐比率。

本实施例中,知识匹配模块的具体实现过程为:

一、训练集构造,如图4所示,主要由同义词替换、回译和随机组合三部分来构建训练数据。具体包括以下步骤:

c1)、根据行业用户提供构建问答知识库并对其进行补充,补充来源包括行业网站中爬取的常见问答和人工提供;

c2)、同义词提取,包括行业词库提取和同义词组抽取;爬取问答知识库和网络数据,经过tf-idf权重计算和人工筛选后构建行业关键词,然后使用腾讯词向量进行关键词的同义词抽取,抽取规则为不包括该关键词的前10位同义词,相似度使用余弦相似度,经过人工筛选、去重之后得到最终的同义词组;

筛选之前的同义词组如下所示:

企业民企公司创新公司行业民营制造业行业内制造业公司本身投资机构产品和服务药企

筛选之后如下所示:

企业民企公司行业药企

c3)、通过同义词替换构建问答知识库中问题的相似问题,使用知识库中的问题,对其中的同义词进行替换以扩充问题数量,然后去除不合理的问题并标注是否相似;

c4)、回译,遍历知识库中所有的问题,并调用百度翻译开放平台接口对知识库中的问题进行英文翻译,然后回译成中文,最后去除不合理的问题并标注是否相似;

c5)、整理出相似问题对的数量,并对所有的问题(没有答案的问题、问题随机组合、非同义词替换得到非同义的问答对)进行随机组合,构建相同数量的不相似问题对,随机打乱之后为训练集。训练集与验证集的比例为9:1。

二、基于训练数据对预训练模型进行fine-tuning得到语义模型,如图3所示,具体过程为:

b1)、在预训练模型的输出层后增加全连接层和softmax层,经softmax层之后输出相似、不相似的概率。模型的输入为训练数据中的问题对,损失函数使用交叉熵,梯度下降使用adam梯度下降,采用f1和准确率作为综合指标,通过验证集选择最佳语义模型。

构建知识向量时,循环遍历知识库问题,分别使用模型的最后一层(首一准确率高)和倒数第二层(高召回率)的输出(768维)作为问题向量,客户可自行选择,系统默认使用倒数第二层输出作为问题向量。

相对于传统bert模型,本发明使用的预训练模型使用了更多的训练数据,更多的训练步数,且使用动态全词遮掩和取消下文预测,在各个nlp项目中具有更好的效果。在本搜索系统中,经测试,在未经fine-tuning过程之前,预训练模型相比最简单的bert模型,前1命中率可提高20.5%,前5命中率可提高11.5%。

三、知识索引构建,主要包括倒排索引和annoy索引两部分,倒排索引构建速度快,知识插入与删除索引更新计算量小,适合数据量较小的知识搜索问答系统(数据量宜在一万内),使用该模式可提高问题的召回率;annoy索引构建速度慢,不支持知识更新导致的索引更新,但是在大量数据中查询速度较快,适宜于大批量基础库数据的索引查找(数据量可支持至百万级别),用户可根据知识库的大小与类别进行自行设置选择。通常情况下,行业基础问答库包含有较多问题且更新较少,在同一行业不同客户之间具有通用性,我们使用annoy索引;而针对不同客户的定制问题(动态性),我们可以使用倒排索引进行计算。

如图2所示,倒排索引是针对问答知识库中的问题经过结巴分词、去停电词之后得到。annoy索引是通过对问答知识库中的知识向量构建多颗高维近邻搜索树来得到,问答知识库中的知识向量通过语义模型得到,语义模型是在预训练模型的基础之上,通过训练数据生成、fine-tuning得到。

行业基础问答库包含有较多问题且更新较少,在同一行业不同客户之间具有通用性,我们使用annoy索引;而针对不同客户的定制问题(动态性),我们可以使用倒排索引进行计算。

本实施例中,所述预训练模型为中文预训练roberta或xlnet模型。

四、计算问题相似度并排序,针对用户问题向量与知识库中的知识向量进行余弦相似度计算,同时综合考虑热点问题统计和文本对齐比率等特征,在综合考虑之后进行相似度排序。

相似度计算公式为:

其中,qu,qk分别为用户问题和知识库中被索引查询到的问题,s(qu,qk)表示哟用户问题与知识库中被索引查询到的问题的相似度,vu,vk分别为用户问题输入到语义模型中输出的问题向量和通过索引查询到的问题向量,cos(vu,vk)表示vu,vk两个向量的余弦相似度,γ1、γ2、μ为系数,其中γ1∈(0,0.1),γ2∈(0,0.1),μ∈(0,1);c(qk)为经日志统计得到的问题qk的询问次数;max(c(qk))为问题最大被询问次数。

公式第一部分主要考虑用户问题与索引问题向量的与余弦相似度,是最主要的部分;第二部分主要考虑用户问题与索引问题分词数量的对齐比率,l(qu,qk)为其分词数量差值的绝对值;第三部分主要考虑常见问答的问答频次;将三部分数值经softmax函数之后,归一化为0-1的相似度值,并进行排序。

响应输出模块用于输出响应,响应包括相似问题列表、准确答案、无答案、推荐热门问题四种类型。

具体的,如果用户问题判定为噪音,输出响应模块根据问答频次返回热门推荐问题或者无响应;如果用户问题经qa模块解析之后符合必须要准确返回答案的规则,输出响应模块输出该问题对应的标准答案;,如果用户问题非噪音其不符合qa匹配规则,则通过知识匹配模块返回相似问题列表供用户选择;另外系统维护一个相似问题列表状态,用户通过点击或者位置指令来进行问答。

本实施例通过对大量数据进行无监督学习,可以得到具有一定泛化能力的语言模型,并以此构建问答库的问题向量索引,另外,综合考虑问答库的tf(词频)、idf(逆文档词频)等统计信息和人工添加的语义匹配规则,构建出对用户问题进行响应的搜索问答系统,在提高问答泛化能力的同时,同时推荐相关度较高的问题,极大的提高解决问题的效率,改善用户体验。

本实施例立足于智能搜索问答系统,通过对预训练模型进行参数调优,在提高模型对行业知识敏感度的同时,也能极大的提高模型的泛化能力;通过基于统计学习和人工筛选出行业词库,可以有效排除非行业等不相干问题的干扰;通过qa规则录入与解析系统,并将其嵌套入搜索问答系统中,另外qa规则的录入支持实体(包括数字)与复杂逻辑规则的录入,可有效实现准确的qa问答。本发票可以有效解决目前工程应用过程中的知识泛化迁移、噪音判断和qa定制等痛点,在改善用户体验的同时,极大的提高问答效率。本发明也可以使用于智能设备之上,如手机、电脑、智能机器人、自助机具等。

以上描述的仅是本发明的基本原理和优选实施例,本领域技术人员根据本发明做出的改进和替换,属于本发明的保护范围。

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