赞
踩
这一章我们来看一下问答型助手中的架构和设计,什么是问答型助手呢?就是主要指知识问答型,用来回复用户的问题,而不是用来操作设备,比如智能客服。
问答型助手一般有IRQA、KBQA(又叫KGQA)、MRCQA。
不同的QA类型各有优劣,在一个问答型助手中,往往是其组合体。下面我们来看一下一个问答型助手的整体架构。
一般业务中落地的问答型助手,会融合IRQA、KBQA、MRCQA为一体,如下图:
来按照顺序看一下,干预层和QU层这里不多解释,前面的章节有讲到其作用。
场景分类模块会将用户query分类,分类为特定领域问答、通用问答、非问答。特定领域问答指我们专门搭建过的问答库,问答库中均为指定领域内的内容,比如手机相关领域、汽车相关领域、星座相关领域等,其答案质量会比较高,专业性强。通用问答指比较泛的问答库,其里面的内容没有经过特意整理,可能是从各个地方收集汇总到的问答对。非问答顾名思义,即用户并非询问助手问题,可能是让助手执行某个操作,也可能是和助手进行闲聊,这都不是问答型助手需要处理的内容,需要给出不支持的回复。
命中了特定领域问答或者通过问答后,则进入QA部分,分为KBQA、IRQA、MRCQA。
KBQA需要在知识图谱中检索答案,因此需要用到图数据库来存储知识图谱内容,目前用到较多的时neo4j,它是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中,可以使用类似SQL语句来进行检索。所以这里的关键就在于如何基于用户query得到查询SQL语句进行图检索。一般可以有两种方式:基于模板的语义解析与基于复述的语义解析。
基于模板的语义解析,即预先设定一些查询模板,比如:属性查询模板、关系查询模板、最值查询模板等。对于用户query,通过分类匹配到对应的查询模板,然后抽取query中的实体,填充到模板中,生成查询实例。这种方式基于子图结构查询,查找到的答案准确率较高,但是实体、关系识别部分的误差会导致查询模板匹配的召回率不高。
基于复述的语义解析,则是预先生成标准问法集,每个标准问答均对应一个查询实例。对于用户query,经过粗筛(比如ES检索),精排(learning to rank),得到语义最相近的标准问法,进而生成查询实例。这种方式基于相似问题匹配查询模板,召回率较高,但是需要构造大量的候选问题,匹配的准确率不高。
IRQA需要在FQA库中查询问题和答案,一般是对于用户query,经过粗筛、精排得到语义最相近的标准问题后(一般为top_n),针对这top_n再使用语义匹配模型对问题和答案进行QA相关度匹配,找到和用户问题最相关的答案。
IRQA和KBQA都需要预先构建KB库或者FQA库,这里需要大量的人工标注和处理的工作,相比而言,MRCQA则可以从相对原始的资历内容中检索答案。一般方式为对于已有的资历进行索引分类,对于用于query,通过语义匹配、分类等方式划定目标资料范围(比如某几篇文章),然后通过MRC模型在文章中检索答案。
通过上述方式得到用户query的answer后,再通过NLG模块生成回复,就可以返回给用户了。关于IRQA、KBQA、MRCQA的具体实现,以及FQA、KB的构建部分,并非本章的主要内容,这里就不再展开讲了~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。