一种基于BERT的智能问答实现方法及系统与流程
本发明涉及智能问答领域,特别是涉及一种基于bert的智能问答实现方法及系统。
背景技术:
近年来,随着大数据和计算机技术的发展,问答系统已经是应用在各个行业,而问答系统也成为智能机器人的一个关键组成部分,影响着机器人与人交流交互重要环节。而智能问答,是给予一个行为内容,对于该内容可能发生的情况提出问题,预测给出答案选项中正确的答案,该领域是人工智能与自然语言处理相结合的研究领域。
智能问答中,当我们在有先验知识的储备时,是很容易做出推理回答的,但是对于机器而言是一个相当大的挑战。一种解决方法是,它通过学习、推理能够得出最后的正确答案;还有一种解决方法是,让机器先学习大量的先验知识模版,然后,再通过提问的问题再对知识库中的问题进行查询,最终得到最后的答案。但是,外部领域知识的引入会涵盖的范围不够广,当外部领域知识达到一定限度的时候,就无法正确回答问题了。
技术实现要素:
为了克服现有技术的上述不足,本发明提出了一种基于bert的智能问答实现方法及系统,解决现有智能问答准确度不高的技术问题。
本发明是通过以下技术方案实现的:
一种基于bert的智能问答实现方法,具体包括以下步骤:
s1:接收用户输入的问题;
s2:将用户输入的问题规范化,去掉特殊符号、标点符号及停用词,得到处理之后的问题;
s3:经处理之后的问题输入基于bert的问题意图分类模型进行分类,得到输入问题的类别;
s4:参考领域词典将输入问题进行分隔,从知识库中检索相应问题和对应的答案,得到候选问题集及对应的答案集,所述知识库内存有领域问题合集和对应的答案合集,且所述领域问题和对应答案通过建立索引的方式存储在知识库中;
s5:将候选问题集和答案集按照一定的规则进行排序;
s6:将输入问题和排序后的候选问题集建立匹配对,输入到基于bert的问题相似度匹配模型中得到相似度;
s7:依据候选问题集的相似度得到最终答案,反馈给用户端。
进一步的,s3中所述基于bert的问题意图分类模型的训练过程包括:收集领域内相关问题和对应的分类集,得到问题、分类的一一对应关系,经预处理特征处理之后得到问题的向量化表示,接着配合预训练的中文bert模型进行微调,得到基于bert的问题意图分类模型。
进一步的,s4在知识库中建立索引的过程包括:收集领域内相关问题及对应答案,预处理之后结合领域词典,在知识库中建立索引。
进一步的,s6中所述基于bert的问题相似度匹配模型的训练过程包括:收集领域内相关问题集,进行正样本扩充、负样本扩充之后得到相似问题集,然后再预处理、特征处理得到问题的向量化表示,接着配合预训练的中文bert模型进行微调,得到基于bert的问题相似度匹配模型。
进一步的,所述正样本扩充的过程包括:选取标准问题,结合领域词典与tf-idf算法,得到标准问题中的关键信息,进行相似词替换,最后得到扩充之后的正样本。
进一步的,所述所述负样本扩充的过程包括:选取标准问题,结合领域词典与tf-idf算法,得到标准问题中的关键信息,从领域知识库中搜索关键信息得到包含关键信息的句子,得到扩充之后的负样本。
进一步的,获取所述领域词典的过程包括:收集领域知识,经预处理和分词之后得到领域词典。
一种基于bert的智能问答实现系统,包括:
接收模块,用于接收用户输入的问题;
预处理模块,将用户输入的问题规范化,去掉特殊符号、标点符号及停用词,得到处理之后的问题;
意图模块,经预处理模块处理之后的问题输入基于bert的问题意图分类模型进行分类,得到输入问题的类别;
检索模块,参考领域词典将输入问题进行分隔,从知识库中检索相应问题和对应的答案,得到候选问题集及对应的答案集,所述知识库内存有领域问题合集和对应的答案合集,且所述领域问题和对应答案通过建立索引的方式存储在知识库中;
排序模块,将候选问题集和答案集按照一定的规则进行排序;
匹配算法模块,将输入问题和排序后的候选问题集建立匹配对,输入到基于bert的问题相似度匹配模型中得到相似度;
答案配置模块,依据候选问题集的相似度得到最终答案,反馈给用户端。
进一步的,所述基于bert的问题意图分类模型的训练过程包括:收集领域内相关问题和对应的分类集,得到问题、分类的一一对应关系,经预处理特征处理之后得到问题的向量化表示,接着配合预训练的中文bert模型进行微调,得到基于bert的问题意图分类模型。
进一步的,所述基于bert的问题相似度匹配模型的训练过程包括:收集领域内相关问题集,进行正样本扩充、负样本扩充之后得到相似问题集,然后再预处理、特征处理得到问题的向量化表示,接着配合预训练的中文bert模型进行微调,得到基于bert的问题相似度匹配模型。
与现有技术相比,本发明的有益效果在于:
本发明提出的一种基于bert的智能问答实现方法及系统,采用了预训练的中文bert模型,让机器有了先验知识,智能问答准确率高;在实际使用时,根据具体任务额外加入一个输出层进行微调即可,而不用为特定任务来修改模型结构,应用方便。
说明书附图
图1为本发明实施例所述一种基于bert的智能问答实现系统结构框图;
图2为本发明实施例所述问题意图分类模型训练过程流程图;
图3为本发明实施例所述建立索引过程流程图;
图4为本发明实施例所述获取领域词典过程流程图;
图5为本发明实施例所述问题相似度匹配模型训练过程流程图;
图6为本发明实施例所述问题相似度匹配模型正样本扩充过程流程图;
图7为本发明实施例所述问题相似度匹配模型负样本扩充过程流程图;
图8为本发明实施例所述基于bert的问题意图分类模型示意图;
图9为本发明实施例所述基于bert的问题相似度匹配模型示意图。
具体实施方式
展示一下实例来具体说明本发明的某些实施例,且不应解释为限制本发明的范围。对本发明公开的内容可以同时从材料、方法和反应条件进行改进,所有这些改进,均应落入本发明的精神和范围之内。
如图1所示,一种基于bert的智能问答实现系统,包括接收模块、预处理模块、意图模块、检索模块、知识库、排序模块、匹配算法模块和答案配置模块;采用所述的基于bert的智能问答实现系统进行智能问答处理的步骤包括以下:
s1:接收模块接收客户端通过http请求发送过来的问题,所述问题采用文字描述;
s2:预处理模块将问题中的特殊符号、标点符号以及停用词都去掉,得到处理之后的问题q;
s3:意图模块通过基于bert的问题意图分类模型将问题q进行分类,得到输入问题的类别cq;
s4:检索模块首先参考领域词典将输入问题q分隔为w1,w2…wi…wn,其中wi是分隔开的第i个词,采用(w1∪w2∪…wi∪…wn)∩cq的查询公式,从知识库中检索相应的问题和对应的答案(知识库负责存储领域内问题合集和对应的答案合集,且领域内问题合集和对应的答案合集通过建立索引的方式存储在知识库中),得到候选问题集合以及对应的答案集合;
s5:排序模块采用tf-idf(termfrequency–inversedocumentfrequency)统计方法对候选问题集q和对应的答案集a进行排序,得到与q和a对应的集合score,这里设定一个得分阈值scoremin,如果scorei>scoremin,则保存相应的qi和ai,剩余的问题集和相对应的答案集为rq和ra;
s6:匹配算法模块将剩余的问题集rq中的问题取出来,和输入的问题q,建立一个匹配对(rqi,q),输入到基于bert的问题相似度匹配模型中,得到一个匹配的概率pi,通过统计得到rq中问题的概率最大值pmax,这里设定一个概率阈值pmin,如果pmax>=pmin,则确定rqi是符号要求的问题,反之在剩余的问题集中没有符合要求的问题;
s7:答案配置模块输出rqi对应的rai,或者没有符合要求的问答specialanswer到客户端。
如图2所示,s3中基于bert的问题意图分类模型训练过程包括步骤:
s31:收集领域内相关问题集q和对应的分类集c,得到一一对应的qi和ci;
s32:预处理之后进行特征处理,得到问题的向量化表示,如图8所示,qi对应[cls]tok1tok2…tokn;
s33:配合预训练的中文bert模型进行微调,得到基于bert的问题意图分类模型,其中ci对应图8中的classlabel。
如图3所示,s4中建立索引的过程包括以下步骤:
s41:在elasticsearch中建立索引模板,包括question、answer、answer_extracted、answer_rtf和image_url字段,其中question表示问题字段,answer表示答案字段,answer_extracted代表答案摘要字段,answer_rtf表示答案富文本字段,image_url表示图片url地址字段,字段分析器采用采用jieba分析器;
s42:收集领域内的问题和对应的答案得到问题集q和答案集a;
s43:预处理去除问题集q和答案集a中特殊符号,并得到answer_extracted、answer_rtf和image_url字段分别对应的集合aa、ar、iu。
s44:通过post请求将q、a、aa、ar、iu集合中的元素分别存储到question、answer、answer_extracted、answer_rtf和image_url字段。
如图4所示,s4中获取领域词典的过程包括以下步骤:
s041:收集领域知识;
s042:将领域知识切分成大小不超过lenmax的多个句子;
s043:将每个句子采用jieba分词工具进行分词,得到w1,w2…wi…wn的词序列,其中wi是分隔开的第i个词;
s044:采用n-gram工具统计每个词的词频,得到包含多个wicounti的文件。
如图5所示,s6中基于bert的问题相似度匹配模型训练过程包括以下步骤:
s61:收集领域内相关问题集q,qi表示为其中的任意一个问题;
s62:通过正样本扩充得到qi对应的相似问题集qi1+、qi2+…qin+,从而得到相似问题映射对(qi,qi1+),(qi,qi2+)…(qi,qin+);
s63:通过负样本扩充得到qi对应的相似问题集qi1-、qi2-…qin-,从而得到相似问题映射对(qi,qi1-),(qi,qi2-)…(qi,qin-);
s64:再进行特征处理,得到相似问题的向量化表示,如图9所示,相似问题映射对对应[cls]tok1tok2…tokn[sep]tok1tok2…tokm;
s65:配合预训练的中文bert模型进行微调,得到基于bert的问题相似度匹配模型,其中ci对应图9中的classlabel(其中正样本为1,表示匹配,负样本为0,表示不匹配)。
如图6所示,s62中基于bert的问题相似度匹配模型正样本扩充过程包括以下步骤:
s621:选取领域内问题qi;
s622:结合得到的领域词典,采用jieba分词工具进行分词,得到w1,w2…wi…wn,其中wi是分隔开的第i个词;
s623:通过tf-idf算法得到qi中得分高的词,假设为wi、wj、wk。。。;
s624:将标准问题中的关键信息wi、wj、wk。。。进行相似词替换,如wi可以替换为rwi1,rwi2…rwin,得到经过替换后的问题集rq。
如图7所示,基于bert的问题相似度匹配模型负样本扩充过程包括以下步骤:
s631:选取领域内问题qi;
s632:结合得到的领域词典,采用jieba分词工具进行分词,得到w1,w2…wi…wn,其中wi是分隔开的第i个词;
s633:通过tf-idf算法得到qi中得分高的词,假设为wi、wj、wk。。。;
s634:在领域知识库中搜索wi、wj、wk。。。,得到包含上述关键词的句子,得到最终的负样本。
上述的预训练的中文bert模型来自于https://github.com/google-research/bertbert-base,chinese:chinesesimplifiedandtraditional,12-layer,768-hidden,12-heads,110mparameters。
综上,本申请的智能问答实现方法及系统,采用了预训练的中文bert模型(bidirectionalencoderrepresentationtransformers),让机器有了先验知识,智能问答准确率高;在实际使用时,根据具体任务额外加入一个输出层进行微调即可,而不用为特定任务来修改模型结构,实用性强。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
智能问答系统产品设计详解
本文通过基于问答对的问答型机器人作为引入,逐步分解其设计流程,用通俗易懂的语言描述问答型机器人的产品设计思路。
问答系统的概述我想大家肯定看过很多关于自然语言处理(简称:NLP)技术方面的书籍或者论文,但在这里我不会详细叙述NLP技术方面的知识,而是想通过产品化思路结合NLP相关技术来搭建一个基础版的问答系统。本文通过基于问答对的问答型机器人作为引入,逐步分解其设计流程,用通俗易懂的语言描述问答型机器人的产品设计思路。
好了,现在进入正题,让我先介绍一下问答系统对企业来说它能满足企业哪些业务需求,以及产生的价值有哪些?
问答系统是基于满足B端企业降低人力成本、提高工作效率的智能化产品,为客服人员赋能。其最大的隐性价值是在实际场景中得到标准化后的数据积累,可以在挖掘客服价值信息中起到降本增效的作用,后续还可以作精准营销和产品升级。一套问答系统最困难的是如何提升客服系统的使用效率。
就问答系统的使用效率,其根本原因是在于是否能够为企业降低人工服务次数和服务时间占比,甚至是提升公司的营业业绩。
什么是问答系统问答系统是信息检索系统的一种高级形式,它可以通过链接知识库方式检索到用户问题的答案。问答系统与信息检索中的语义搜索有点类似,把用户输入的问题转换为一个有结构的语义表达式,然后从知识库中寻找答案,并直接反馈给用户。
问答系统的答案可以从结构化知识库获取,用于规章制度、规则条款等问答形式,也可以通过结合一些已有的知识库和数据库资源,利用百度百科、维基百科等非结构化文本信息,用信息抽取的方法提取关键信息,并构建知识图谱作为问答系统的后台支撑,再结合知识推理等方法为用户提供更深层次语义理解的答案。
在这里主要讲解的是针对特定领域的知识进行一问一答,也称之为单轮对话、问答对或FAQ,即直接根据用户的问题给出精准的答案。
问答系统的业务场景应用适用于特殊环境下所限定的信息需求,在日常生活中,用户会经常碰到很多复杂的规章制度、规则条款。比如:乘坐火车时,能不能带宠物上火车;3岁小朋友是否需要买票等。
在工作中,也会面对公司多样的政策。比如:商业保险理赔需要什么材料,工作几年可以办理暂住证?这些情况下,经常需要各种查询或者检索才能回复并解决用户的疑问。基于这类常见的业务场景就能更快速的搭建一套智能问答系统。
问答系统的价值现阶段智能问答系统最大价值就是为客服人员赋能,而非独立于让机器自行解决众多目前还有很多错误率和不确定性的问题。
问答系统的产品策略现阶段下的智能问答系统是有局限性的,这也是为什么需要落地到行业中某个垂直业务领域的主要原因。所以需要通过问答系统做出一个符合业务实际需求的产品策略,这样能够最大程度的提升用户体验和增加用户对系统的信心。
比如系统遇到不知道的问题,可以通过产品的兜底策略及时转换其他服务(如:转人工客服)或给出用户可能想问的问题,为用户提供一个便捷的方式,让用户有继续操作的意愿。这样大大提升了系统的可用性,而不需要完全依赖于算法。这样成本也会低很多,效果也会好很多。这就是用产品策略来弥补算法本身的不足。然而在不同业务场景下所采用的兜底策略也是不同的,最重要的还是如何将兜底策略做的更加智能化。
上述介绍了一下问答系统的基本概念和产品的价值以及产品策略,后面为读者分享的是如何搭建一套基于结构化知识库的问答型机器人。
问答型机器人搭建问答型机器人(简称FAQ问答系统)目前被大量使用在电商、金融、银行、旅游等行业中。本文就以旅游行业为例,详细介绍如何设计并实现一个基于结构化知识库的问答系统,数据来源:东方航空官网http://www.ceair.com(会员常见问题为例)。
系统介绍用户诉求
通过最短的对话轮次(一问一答),获得精准、直接的答案以及更好的完成任务,来满足用户的需求。
实现目标
系统根据用户输入问题,理解用户的问题后,通过标签分类里的问题中匹配相似问句,并将答案反馈给用户,以此来为用户提供服务。
系统功能在特定的垂直业务领域下,问答系统可以回答用户所提出的一系列问题,其主要功能包括问句预处理、问句理解、问句相识度匹配和标签分类。
1)问句预处理:将用户问句进行分词和词性标注
2)问句理解:提取问句中的关键词
3)问句相似度匹配:将问句与每个标签分类下的问题进行相似度计算后召回
4)标签分类:为问句添加标签,在标签分类下的问题匹配相似问题,以此来提升机器理解能力和匹配精度,同时也可以对问答对进行分类化管理,可以按业务分类、问题所属业务部门等自己需要的维度来管理问答对,提高问答对的管理效率。标签分类根据实际业务场景需求进行分类,切记标注标签分类的时候需要保持数据的一致性
产品结构用户问题分类:
首先我们需要对问答系统需要支撑的业务进行分析,然后把用户将会问到的问题进行归类整理,并设计符合实际业务场景需求的分类。
问答型机器人适用场景:
适用于回答非用户个性化的问题(即一问一答),返回的是静态知识,无需调用外部数据接口或调用知识图谱返回答案。
问答型机器人处理流程:
图1:问答系统处理流程图
问答系统流程如下:
1)用户提问:怎么样才能注册东方万里行会员
2)问句预处理:将问句进行分词和词性标注(词法分析)
分词: 怎么样/才能/注册/东方万里行/会员
词性标注:代词名词动词名词名词
注:在对问句进行分词处理时,可以加入领域词库进行同义词扩展,如“上海”扩展为“沪”、“申城”;“东方航空”扩展为“东航”,需要结合关键词词库进行识别
3)问句理解:提取问句中的关键词
关键词提取: 怎么样注册东方万里行会员
注:关键词可以是名词、动词、助词、代词,是描述某一类特征的词,关键词的颗粒度可以很粗(例如“我要申请”、“帮我申请”、“申请”),也可以有一定限度的泛化能力(例如:如何办理东方万里行会员中的“如何”就可以与“怎样”、“怎么样”)的代词一起作为关键词,并在计算句子相似度方面只考虑这些关键词。
对于特定句某个名词、代词、动词、形容词或副词不一定是该句中的主语、宾语或谓语成分,但相对于句中所有的词构成的词序列而言,关键词序列却具有一定的句法结构信息表达能力,至少可以了解句子中的哪些词在组成句子框架结构方面是比较重要的。在此基础上进行相似度计算,比一般基于词的方法更准确。
4)问句相似度计算:将用户问句与每个标签分类下的问题进行相似度计算后召回,同时返回相似度最高的标准问题和所属标签分类。
注:在这里主要讲解的是产品设计思路,告知读者在设计问答型机器人过程中会用到哪些NLP相关技术,而不会详解技术实现过程。
问句相似度计算方法1:基于多重信息的方法(关键词加权的语句相似度计算),结合了语法和语义信息的改进句子相似度计算方法。首先计算两个句子的语法相似度(词形、句长),借鉴基于词信息和句法分析的方法,综合考虑词的相似度和句子结构(长度)信息,结合同义词词林进行句子语义的相似度计算。最后,考虑关键词、句长、语义多重信息的一种融合算法,值得注意的一点是该方法需结合词库一起使用,其目的是提升分词、关键词提取、词性权重标注准确率。
注:在计算语法相似度的时候需要注意的是关键词出现的频次应该采用大规模语料进行统计,而在限定领域问答系统中,可以用简化的方法。根据经验,在实践过程中发现名词和动词在句子中起着非常重要的作用,并且名词比动词承载着更多的信息量,一个句子的中心信息基本上都是围绕着名词和动词来展开的。
所以在进行计算时也特意加大了名词和动词的重要程度,将句子的重心落在名词和动词上面,经查阅论文资料根据实际经验,将句子相似度计算中权值分别是名词类权重(W)为0.3;动词类权重(W)为0.3;形容词、代词、副词类权重(W)为0.2。
问句相似度计算方法2:基于向量空间模型的方法。该方法把问句用向量来表示,计算2个句子的相似度就是计算2个向量的距离。
本文使用word2vec对句子进行向量化表示,以作为LSTM(即长短记忆神经网络)神经网络的输入实现问句相似度计算。而基于神经网络的词向量模型,可以从大规模的文本数据中自动学习数据的本质信息,得到低维实数向量,很好地解决了传统的词向量模型。因为词语独立性假设带来的语义建模困难和维度爆炸问题。
用户问句:
Q:怎么样注册东方万里行会员
FAQ库中的句子:
R1:如何办理万里行会员(标签分类:会员办理)
R2:如何获得会员卡(标签分类:领取会员卡)
R3:东方万里行会员申请电话是多少(标签分类:咨询电话)
R4:东方万里行会员应该怎样申请(标签分类:会员办理)
返回结果:(使用word2vec计算得出)
R1:如何办理万里行会员
0.8045011574330355
R2:如何获得会员卡
0.6247308971541259
R3:东方万里行会员申请电话是多少
0.7638216222999513
R4:东方万里行会员应该怎样申请
0.9042637469903886
以上案例从人的主观判断可以看出问句Q实际上和R1,R4是同一个问题,与人的主观判断完全一致,同时也返回R4的标签分类“会员办理”。
5)答案:精准匹配,则将R1问题的答案返回给用户
整体产品结构图
以下是问答系统整体产品结构图,主要围绕核心模块有问答管理、模型训练、关键词管理、未知问题管理。则其余模块不会做详细讲解。
图3:问答系统产品结构图
问答管理模块问答型知识构建是基于问答对中的问题匹配算法来设计的,所以首先需要搭建问答对,而问答对是由标准问题和相似问题以及答案组成,通过新增相似问题来提升问答机器人的准确率。
而标签分类能有效的对问答对进行分类化管理,可以按业务分类、问题所属业务部门等自己需要的维度来管理问答对,提高问答对的管理效率。标签分类的用途是在特定标签分类里的问题中匹配相似问题,其目的是找到用户问题的所属标签分类。
图4:问答管理-新建标签分类
问答对是由标准问题、相似问题、答案组成,而标准问题与答案的组合称之为问答对。问答对支持一对一、一对多、多对一和多对多;当问题中包含多个答案时,答案随机呈现。相似问题是标准问题的泛化,其表达的意思与标准问题是一样的,其目的是匹配用户问题最相似的问题,并反馈给用户答案,问题样本越多匹配的准确率也就越高。
图5:添加问答对产品原型
模型训练模块是将编辑好的问答对或新增相似问题加入到算法中进行训练并生成模型,模型需要生效后才可使用。
关键词管理模块关键词在问答管理模块中已经有详细的描述关键词对整个问答管理模块来说其重要性,以及关键词的使用和发挥的作用。
图6:关键词管理产品原型
图7:添加词典值产品原型
未知问题管理模块未知问题是用户与机器人在对话过程中未识别的问题,用户可以对未知问题进行标注并添加至问题样本中通过模型进行训练。
图8:未知问题管理产品原型
图9:转问题样本产品原型
结束语问答型机器人能否实现智能化,最直接的体现就是能否回答人类自然语言的问题,本文通过详细介绍问答型机器人产品设计思路,以及深入研究问答型机器人处理流程。问答型机器人最核心的就是问句相似度计算,以及用户自定义词库拓展同义词来提高匹配准确率,还有就是未知问题的处理并加入模型进行训练。
本文还介绍了问句相似度计算的2种方法,一个方法是关键词加权的语句相似度计算;另一个方法是word2vec结合LSTM神经网络的问句相似度计算。试验证明,word2vec来计算问句匹配的准确率明显要好。
至此,因本人一直从事NLP领域的智能问答系统产品设计工作。所以想把一些经验分享给大家,相互学习和交流,后续还会持续更新基于知识图谱的问答系统和多轮对话的产品设计。
本文@johnny113原创发布于人人都是产品经理,未经许可,不得转载。
题图来自Unsplash,基于CC0协议