百分点智能对话技术探索实践
嘉宾:苏海波博士 百分点 首席算法科学家
整理:朱瑞杰
出品:DataFunTalk
导读:智能对话系统因其巨大的潜力和商业价值受到越来越多研究者和从业者的关注,对话的主要种类包括闲聊型、知识型、任务型、阅读理解型等,目前已经广泛应用在智能客服、智能音箱、智能车载等众多场景。近年来,智能对话还出现了新的应用场景,例如可以将自然语言转换为各种程序性语言,如SQL,从数据库中找到相应的答案,让用户和数据库的交互变得更加直接和方便。本文将围绕智能问答中的问题语义等价模型、知识图谱问答模型、NL2SQL模型等进行展开介绍,同时会介绍百分点智能问答实践案例。
智能问答的典型场景
1. 典型的智能问答应用场景
在典型的智能问答应用场景中包括:
闲聊式,开放域闲聊的典型例子,包括问天气,寒暄,情感陪伴等。
任务导向式对话,任务驱动的多轮对话的例子,包括智能音箱,语音智能点餐服务,这是特定任务模式下的服务。
信息问答式,知识型问答,回答信息,例如问姚明的身高等,是用作获取信息的服务。
2. 典型的智能问答对比应用场景
闲聊机器人,在拉近距离、建立信任关系、情感陪伴、顺滑对话过程、以及提高用户粘性等方面发挥着作用,一般以关键词触发,模糊匹配回复,知识范围为不深入的开放领域,数据与知识来自于互联网、闲聊交互开发者定期更新的数据;
知识型机器人,主要应用于咨询和售后服务的场景,拥有一问一答,智能匹配应答,实现语义归一的能力,在实际使用中代替部分的人工服务,服务于垂直单一行业领域,这部分的数据主要来自于企业自主更新的业务知识库和不断优化的知识体系;
任务机器人,在售前,销售,售后均有涉及,可以进行多轮对话,实现深层语义识别,意图识别等任务,主要服务于明确具体的任务场景,数据同样来自于企业自主更新的业务知识库和不断优化的知识体系;
另外,知识型机器人和任务型机器人均属于为垂直行业领域服务的业务型机器人。
智能问答的产品架构
1. 智能问答的具体流程
2. 智能问答产品的具体架构
智能问答产品主要包括知识库、对话模型、配置中心、多渠道接入以及后台管理。针对不同的任务划分,准备不同的知识库,例如QA BOT需要引入问答知识对,KG BOT需要知识图谱的支持等等。将针对不同任务的对话模型服务,部署接入各个平台接口,譬如小程序、微信、网页等,提供在线问答服务。配置中心主要提供QA对、闲聊语料、同义词库、特征词库等的可视化配置服务,实现知识配置的快速拓展。后台管理针对智能问答系统实施整体监控、日志管理、告警、权限管理等等,另外,它还提供各种维度的统计分析服务。
QA知识问答的技术实现
1. QA知识问答的简介
这是以智能匹配问答库为主要实现原理的问答机器人,将用户所提问题与问答库中的问题进行相似度匹配筛选,识别出语义等价的问题以及对应答案,完成对话。
首先用户访问PC网站或者公众号平台,通过语音描述要咨询的问题,输入ASR语音识别模块,将得到的问题经过纠错之后,进行问题语义等价的识别、相似问题的推荐,并对问答结果进行记录。经过一段时间的累积之后,后台就会得到实际应用中对于用户咨询问题的各种情况,这里包括未识别的问题、误识别的问题、新挖掘的高频问题,AI算法团队针对这些问题进行优化,包括问题的新增、答案的优化、相似问题发掘、算法的优化等部分,并将这些重新梳理的数据作为补充的问答知识在人工审核之后录入知识库,持续迭代。另外,在实际的应用过程中,问答知识库的类型包括信息中心、组织人事处、后勤管理处、保卫处、计划财务处、离退休工作处等各种部门需要的业务知识数据。
2. 构建知识库的过程
在配置中心,也可以通过可视化的配置功能,实现问答意图、QA问答库、闲聊库等知识的快速创建以及分类管理。
3. 如何找到语义等价的问句
构建问答知识库之后,在检索知识库的过程中,最重要的是如何找到与输入语义等价的问句,如下图所示:
字面相似的句子语义不等价
字面不相似的句子语义等价
例如问题“什么是新冠肺炎”和“解释下新冠肺炎的定义”是语义等价,但和“什么是支气管肺炎”却不是语义等价的,采用编辑距离之类的算法是无法识别的。因而,只有基于语义理解的模型才能识别出来,这里包括两类,一是传统机器学习方法,二是深度迁移学习方法。
4. 基于BERT和BIMPM的语义等价模型方案
我们采用了基于BERT和BIMPM的语义等价模型方案,模型的网络结构如下图所示:
5. 智能问答中语义等价模型
接下来介绍智能问答中语义等价模型的训练、优化和发布过程,该模型的目标是判断两个问句在语义上是否完全等价。
模型的具体训练和发布闭环流程,如下图所示:
实例:疫情问答系统
此问答系统基于上述技术,采用疫情相关的问答知识库,提供智能化、自动化的疫情知识问答,并且实现了实时统计数据、实时门诊咨询、实时数据咨询、协助求医报警等。
04
知识图谱问答的技术实现
1. 基于知识图谱问答的算法实现原理
本系统主要是通过将输入问句,转化为SparQL的语句,实现对知识图谱的智能问答,例如武汉大学出了那些科学家,需要识别出武汉大学和科学家的两个查询条件才能得到交集答案,当不能使用常规NER识别出实体的时候,可以将训练语料中的实体词汇导入到ES搜索引擎中,实现对一些难以识别样例的查询。具体实现原理,如下图所示:
首先针对用户问题,经过文本预处理,先进行实体识别,将实体送入别名词典和ES中去,得到备选的实体名称;再问题分类,这一步是为了得到问题结果的模板类型是什么,然后槽位预测,填写实体和关系槽位;在实体分析模块中,针对实体识别得到的备选实体,通过语义特征和人工特征进行实体消歧和实体检索,生成实体链接,并将实体填入SparQL查询模板语句之中;继而,根据上一步实体链接,找到实体在知识图谱中的所有关系,并对所有关系和用户问题语句进行语义匹配的排序,得到了相似度最高的关系路径,并将该实体在该关系下的结果填入SparQL的查询模板之中;最后,根据填写完成的查询语句,在图数据库之中检索校验,得到答案。
仔细来谈,在问题分类部分中,一个问题所属的类型有三个判断依据:
链式和夹式,链式解释其查询语句遵循链式查找,一步一步的查询;夹式是指查询的结果满足两个条件的交集;
问题的跳数,指的是需要建立的查询次数;
每一跳是问实体还是问关系。
2. 实体分析模块:实体链接
3. 查询生成模块:路径排序
上面的方案在2020CCKS大赛上取得了F1为0.901的成绩,并部署在GPU平台上响应时间只需要200ms。
NL2SQL问答的技术实现
与上述两种问答类型不同的是,NL2SQL问答不是基于问答对或者知识图谱知识库,它是基于结构化数据表进行智能问答,实现自然语言转SQL查询的功能。
1. NL2SQL问答的技术实现原理:
在经典的NL2SQL方案中,基于Seq2Seq的X-SQL模型是十分常见的,该模型的思路是先通过 MT-DNN 对原始问题及字段名称进行编码,再在问题前面人为地添加一个 [CXT] 用于提取全局信息。中间的 Context Reinforcing Laryer 层是这个模型的核心部分,它的目的是把 MT-DNN 得到的预训练编码在 NL2SQL 任务上进行增强和重组。这个中间层不仅能体现上下文信息,还能通过 Attention机制对字段名称的编码进行强化。这一层输出的结果包括问题的编码,以及强化后的字段编码,后面的输出层都会在这个基础上进行。输出层包括6个子模型:S-COL和S-AGG 用于预测 select 的字段,只依赖于强化后的字段名称编码,通过 softmax 对每个字段打分就行了;W-NUM 只依赖全局信息,用于预测 where 条件个数;W-COL、W-OP和W-VAL 用于预测过滤条件的具体内容,通过组合字段编码,当前的 where 条件编号及问题编码,通过softmax 评分就能得到需要的结果。
2. 基于X-SQL和依存句法树的NL2SQL
首先,对问句进行分词,再做依存句法分析,得到问句每一个成分在词性、实体、是否为数据表字段、聚合函数等信息,再经过词库和后序遍历解析依存树,将各个问句成分组合,最终得到解析结果。在基于X-SQL+句法分析+时间模板的模型设计下,达到90%以上的解析准确率,达到实用的效果。
小结
以上就是百分点关于智能问答技术的全部分享,总结起来有以下三点:
基于预训练模型的深度迁移学习技术在智能问答中将得到普遍应用;
NL2SQL问答技术目前还存在很多的技术挑战和提升空间,是目前前沿热门的技术研究方向;
垂直行业性的智能问答场景,技术更容易落地,用户能获得更好的问答体验。