学问图谱构建下的自动问答KBQA体系实战

目前工程落地实现问答的技术路线基本分为鉴于学问图谱的问答(KBQA)、鉴于阅读理解的问答(MRC)和常见课题问答(FAQ)三种模式

学问图谱构建下的自动问答KBQA体系实战

学问图谱问答体系任务和意义

问答体系(Qusstion Answering System,QA System)在大家的日常生活中随处可见,2014年微软率先推出了小冰智能聊天机器人,直至现在越来越多如siri移动生活助手和智能音箱等的面市,问答作为一种信息获取方式愈发受到大众和厂商的关注和投入。 问答体系能够接受用户以自然语言形式描述的提问,并从大量的异构数据中查到或者推理出用户想要的谜底。相比传统的信息检索体系,问答体系场景的核心在于用户的信息需求相对比较明确,而体系直接输出用户想要的谜底,这个谜底的形式可能是文档、结构化的表格或者推理加工的自然语言文本。

问答示例:

课题:阿根廷的首都在哪里 => 谜底:阿根廷共和国的首都为布宜诺斯艾利斯。

课题:儿童安全锁怎么设置 => 谜底:儿童安全锁位于各后车门的后边缘,各车门的儿童安全锁必须单独设置。

设置:

左侧:逆时针转动锁定,顺时针转动解锁。

右侧:顺时针转动锁定,逆时针转动解锁。

学问问答相比文本检索,减少了用户对检索文档内容的二次提炼和推理的过程,会显著提升用户学问获取的体验。根据问答底层技术的差异,目前工程落地实现问答的技术路线基本分为鉴于学问图谱的问答(KBQA)、鉴于阅读理解的问答(MRC)和常见课题问答(FAQ)三种模式。三种问答的对比如下:

学问图谱构建下的自动问答KBQA体系实战

表1 常见的学问问答技术路线对比

FAQ和MRC不是本文介绍的重点,这里简要介绍。在FAQ中,重点是文本语义立室的精度,如 用户的课题是“怎么加玻璃水”,而问答对库中的标准问句为“添加玻璃清洁液”,类似的泛化课题决定了常见的字符串相似度立室无法解决,STS模型比如sentence-bert等双编码模型或者苏剑林老师的sim-bert等模型或者通过领域词典都可以解决类似泛化课题。MRC方面,鉴于百度dureader等中文阅读理解数据,在通用领域可以快速搭建一个MRC问答服务,但是垂直领域仍然需要标注数据来让模型的性能达到一个可以接受的水平。在垂直领域,针对MRC训练数据稀少的课题,可以从非结构化文本三元组标注的数据得到补充。如对于文本“北京,简称“京”,是中华人民共和国的首都,是全国的政治中心、文化中心,是世界著名古都和现代化国际城市。”,图谱构建过程中标注的三元组为(中国,首都,北京),构造的MRC课题即“中国的首都在哪里”,谜底SPAN为“北京”的index位置。KBQA(Knowledge Base Question Answering)作为一种底层鉴于学问图谱的问答技术,相比传统的文本检索问答和FAQ(Frequently Asked Questions),鉴于垂直领域相对固定边界的学问图谱,可以结合业务提供一种高级的信息服务形式,通过确认、反馈等操作完成信息获取,现阶段下,无论是通用图谱还是领域图谱,业界对简单问答的效果都达到了一个比较好的水平,而在特定场景的领域图谱中,经过梳理,复杂问答特别是推理形式的问答也是可以达到一个比较可以好的效果。

鉴于学问图谱结构化关联学问的问答体系的业务价值包括:

学问的沉淀和高效复用,学问梳理更加明确直接,实现学问的瘦身和标准化;

返回的谜底更能精准理解用户的企图,谜底更加直接高效,避免二次推理加工;

对学问管理的维护更加方便,实体-属性-关系自然,方便增删改查;

特定业务场景下鉴于专家经验的复杂推理成为可能

智能问答体系技术架构

智能问答体系的整体基础框架图所示,一共分为据预处理模块、问句分析、 学问检索和谜底生成四个部分。下面介绍悲观学问图谱平台问答体系的一些具体的实践经验。

学问图谱构建下的自动问答KBQA体系实战

图1 智能问答体系的整体基础框架

01问句预处理

除了常见的分词和词性标注外,还可以根据学问图谱中已有的模式、实体称呼、关键属性值对问句进行纠错。如图所示,根据产品的别名就可以对问句中的产品别名进行纠错。

学问图谱构建下的自动问答KBQA体系实战

图2  鉴于学问图谱实体链接的Query纠错

实际场景下的领域学问图谱,更多的构建的是学问点的关联,即实体作为一个学问点,可能是一个短语或者一个语言片段,而在体系冷启动下,面对领域数据,通过句法分析提炼出query中的短语,该候选短语也可以作为实体提及方便后续进行实体链接。通过中文树库(Chinese Tree Bank,Zhang Y., Zhou H., & Li Z. Fast and accurate neural crf constituency parsing,2020)限制短语的词性过滤重要的短语,如保留名词短语,通过短语提炼可以避免单词、或者Ngram作为实体提及检索带来的巨大开销。我们采用HanLP自然语言处理包中的短语提炼接口对query提炼名词短语。

02实体链接和词槽提炼

实体链接(entity linking)就是将问句文本的某些字符串映射到学问库中对应的实体上。实体链接是问答体系的核心课题之一,实际应用中问答中的大部分badcase可能都是实体链接出现了课题,如果实体识别一旦出错,谜底就很容易出现完全不相关。为了解决垂直行业数据冷启动的课题,我们结合精确链和模糊链接相结合的方式来提高实体链接的精度。

实体精确链接利用学问库中已有的学问点,将模式(schema)称呼、实体称呼、可遍历的枚举属性值集合构建字典树(即Trie树),通过Trie前缀树提炼盘问中的精确实体称呼。

我们在实际使用的Trie树的过程中,也做了若干优化:

以query分词结果token作为基本粒度构建Trie树,即命中的实体提及必须是由1个或者多个token组成的,比如对于query“中国平安”,Trie树种存在人物称呼“国平”,分词结果为[中国,平安],可以避免提炼出 “国平”的情况。

我们对Trie进行了性能优化,通用的Trie都是以一个字典的嵌套层级结构,这种情况下往往存在数据稀疏的现象,即造成了内存消耗比较大,另一方面也降低遍历盘问的效率,针对这些课题业界也有很多Trie树的变种,如DATrie(双数组字典树)、Radix Tree(基数树),我们使用Radix和普通Trie做了性能对比,在200万实体称呼的数据规模情况下,Radix相比Trie可以减少一半的内存占用。

学问图谱构建下的自动问答KBQA体系实战

图3 Trie树和Radix压缩字符串对比

Trie树只能实现精确的根据实体称呼的实体提及召回,而实际问答中用户的课题可能不包含完整的实体称呼,这种情况下,需要根据NER模型抽取出Query中的实体,NER模型的候选结果和句法分析的候选名词短语构成模糊链接的词汇来源,并据此到ElasticSearch中进行检索,通过Es的文件检索,可以找到大部分具备和Query实体字符串相似的候选实体,通过可以对检索结果进行覆盖率、差异度、紧密度等各个维度对候选的结果进行相似性结果判断和过滤。除了使用NER去检索,业界也存在直接对图谱中的实体(描述)进行编码,使用向量检索去找到最相近的链接实体,感兴趣的读者可以参考相关文献和实践,在此就不再赘述。

学问图谱构建下的自动问答KBQA体系实战

表2 模糊链接相似性判断规则

除了实体链接,还需要对提炼Query中其他的槽信息,具体的槽位信息和企图相关,比如对于“盘问实体类型的总数”这个统计企图,槽位信息需要具体的实体类型(网点)、统计谓词(总数)。槽位从类型上可以分为模式槽信息(实体类型、关系类型、属性名)、属性条件槽(属性名、条件、条件值)、统计条件槽(统计谓语:总数、最大、最小、平均等)。属性条件槽、统计条件槽一般都属于复杂课题情形。对于类型称呼、统计谓词,因为相对比较可枚举,也可以以类似字典树的方式从Query中提炼。因为学问图谱中实体学问点粒度和相关组合等课题,会导致候选链接的结果会互相重叠。一般而言,链接到的实体提及越长,其语义也就越明确,可靠性也更高。因此我们采用最大区间覆盖优先的筛选方法,优先保留链接更大的结果。如下图所示,有限保留“Aegis分叉型覆膜支架及输送体系”的链接结果,而忽略“支架”、“覆膜”链接结果。

学问图谱构建下的自动问答KBQA体系实战图4 多粒度下的实体提及识别

链接到多个实体提及或者槽需要进一步去除其中的歧义信息,例如Query:“平安银行的董事”,该课题为盘问实体一度到达实体的课题,课题中的“董事”链接到董事(关系称呼,企业->人物)和董事(人物称呼)两个实体,对实体消岐的课题可以借助分类模型对Query 上下文进行分类判断,也可以借助学问图谱通过子图立室的方法消除歧义。平安银行作为一个企业,通过董事关系可以盘问一度实体;而董事作为一个人物,其一度的企业中无平安银行。通过槽位到子图的相关性打分,槽位组合[平安银行(企业),董事(关系称呼)]比[平安银行(企业),董事(人物)]更加合理,优先选择更相关的组合作为槽提炼的结果。

03问答企图识别

KBQA的企图相比传统检索企图会更加的复杂,实际应用中,文本检索的企图一般定义为搜什么,可能会采用“玩具”、“外卖”、“电影”这种类别体系来区分, 比如“变形金刚的票价”其实搜的就是变形金刚的电影,而KBQA的企图因为谜底的精准、直接特点,注定了KBQA的企图的粒度会更细、维度会更多,例如盘问实体的属性、条件过滤的实体、统计类盘问、对比盘问等。

学问图谱构建下的自动问答KBQA体系实战

表3 常见的KBQA问答企图

问答企图可以通过模板立室和鉴于神经网络的判别模型来识别。模板立室通过体系内置的固定模板和自定义模板可以保证体系冷启动的基础问答效果。鉴于神经网络的企图判别模型需要在特定的图谱下大量的训练样本,例如使用fasttext等常见文本分类模型对Query进行企图分类。在垂直领域下,特别是用户的特定场景中,训练样本的生成和构造一直是一个较大的挑战,一种常见的方法就是配置课题模板,自动生成训练样本课题。比如对于企图“疾病的症状”,可以使用“${疾病称呼|别名}的[症状|表现|症候]”模板,使用图谱的疾病实体,批量生成样本。分类模型相比模板立室可以一定程度解决SPO一度问答课题的泛化课题。

结合问句分析的结果,从技术路线上主要可以分为鉴于检索排序的问答策略和鉴于语法解析的问答,鉴于排序检索的问答结合Query和问句分析的结果,找到图谱中若干个子图,然后对这些子图进行排序,返回Top结果作为谜底;鉴于语法解析的策略则将Query转成成一个完成图盘问语句,将执行该图盘问语句的结果作为谜底。

 

鉴于检索排序的问答策略

类似推荐体系的召回-排序两段策略,KBQA我们也可以利用问句分析的结果召回子图,然后计算Query和每个子图的相关性,返回Top子图。可以看出鉴于检索排序的问答策略回避了语法解析的难题,一般只需要问答-谜底的标注数据采用端到端的训练即可,泛化能力较强。其中比较核心的课题在于档谜底的表示形式。悲观学问图谱问答体系结合学问图谱的模式,生成特定的谜底文本形式。

基本的主要流程如下:

使用问句分析的实体,如“陆德明”,盘问该实体的一度属性、一度实体、一度关系属性等三元组信息,谓词的判断特别重要,因此我们考虑生成只包含实体和谓词的候选三元组,即将O置空,(“陆德明出生日期”、“陆德明就职”);

将候选三元组信息作为整个文本串进行语义编码,如“陆德明出生日期”、“陆德明就职浦东支行”,因为整个三元组JOIN成了一个字符串,所以对图谱的模式设计也至关重要,对于[陆德明,就职,浦东支行]这个SPO,如果将关系设计的开始结束实体颠倒过来,则生成的候选串就缺乏语义了(浦东支行就职陆德明语法明显不合理);

将Query同样进行编码,计算向量距离作为相关性打分的判断依据。对于Query的编码同样也需要考虑链接的实体和实体提及的差异,如“Aegis的工序”,需要将Aegis替换成学问库中的实体称呼,如“Aegis分叉型覆膜支架和输送体系的工序”,其和候选串“Aegis分叉型覆膜支架和输送体系工艺”的相似度更高,不容易被拒识。

学问图谱构建下的自动问答KBQA体系实战

图5 候选谜底SPO生成

在实际的SPO一度问答应用中,谓词即是最核心企图。对于“陆德明的生日是哪天”,陆德明的属性谓词“出生日期”作为正样本,其他实体属性”家庭住址”、关系属性“就职”等都可以作为负样本,标签为0。如此在足够的样本情况下,可以训练一个分类模型,作为上述第3)步中的立室模型。

以上策略降低了工程上实现的复杂度,但是因为需要编码和存储候选谜底的语义编码,同时可能还需要费力收集负样本去构建一个文本语义立室模型,因此还有一种有意思的策略是鉴于Seq2Seq + True(前缀树,压缩学问库的谜底集合,约束Seq2Seq编码)的实现方式,可以避免语义编码和文本意义立室模型的训练步骤。

基本步骤包括:

使用Trie树压缩存储三元组;

构造训练集,训练Seq2Seq模型,下图是鉴于roformer-sim

(参考:https://github.com/ZhuiyiTechnology/roformer-sim)的Seq2Seq架构

学问图谱构建下的自动问答KBQA体系实战图6 鉴于reformer-sim的seq2seq框架

最后在解码的过程中,通过Trie限定decode的输出范围,从而保证输出的三元组谜底一定在库中。关于Seq2Seq + Trie的具体实现方式可以参看KgClue的一个baseline实现(https://github.com/bojone/KgCLUE-bert4keras)。

鉴于语法解析的问答策略

复杂问句因为往往需要从一个多实体多关系的子图推理而来,因此一般采用将问句通过语法分析的方式转换成特定的盘问语句或者盘问解析树(原理类似SQL的执行计划)。相比简单的一度属性关系盘问,复杂的问答包括多跳课题、约束课题、统计课题等。

 

学问图谱构建下的自动问答KBQA体系实战

表4 复杂KBQA类型示例

 

因为是需要将Query转成盘问语句,一般深度学习的做法是使用如BART等生成模型,生成对应的盘问语句。这里介绍一下史佳欣团队KQA Pro(https://github.com/shijx12)的处理思路。通过将自然语言课题表示为基本函数组合而成的KoPL函数,函数运行的结果即为谜底。KoPL中的函数包含FindALL、FilterSTR、Count等函数,函数存在相互输入输出的依赖,一个KoPL程序就是一个有向无环图。整个推理过程分为生成骨架和生成参数两个部分。骨架指定了执行的类型和顺序,参数指定了每个函数具体操作的输入。鉴于BART的KQA Pro的baseline目前可以达到90%左右,人类是97%。

学问图谱构建下的自动问答KBQA体系实战

图7  骨架解析器和参数解析器

 

鉴于Seq2Seq的生成盘问语句实际落地过程中,往往由于人力、算力、可维护等各个角度,图谱的完整性刚开始阶段不是特别的好,缺乏足够多质量较高的训练样本,因此鉴于深度学习的方法很难直接就可以发挥作用。对于复杂推理问答仍然需要一套灵活可配置的接口定义,可以方便对规则和模板等进行管理。参考KoPL的设计,将基础盘问封装成基础算子,可以快速配置出如下图所示的一个复杂企图。

学问图谱构建下的自动问答KBQA体系实战

垂直领域的问答应用

01鉴于观念学问图谱的使用手册问答

观念图谱与实体图谱不同,它的实体是由一个个观念组成的,相应的观念和观念之间存在一定的语义关系。对于制度、手册类的场景,层次分明但很难提炼具体实例的场景比较适合构建观念图谱。观念图谱是将隐形的学问体系化、鲜明化,更好地捕捉到用户搜索的隐含企图,从而达到更精准反馈用户想要学问的目的。如下是将汽车使用手册拆分成分类层、原始观念、组合观念、企图层,实现学问最小粒度拆分的同时,满足复杂组合的企图解析。最后通过悲观自然语言处理技术将手册进行学问结构化,并构建学问图谱。

学问图谱构建下的自动问答KBQA体系实战

图8 鉴于组合观念的汽车手册学问图谱

在学问问答处理过程中,根据用户输入问句,解析原子级最小颗粒度的观念,逐层推理出最可能的组合观念,也就是用户的真实企图,从而实现更加精准的企图分析和谜底推荐。

 

02鉴于失效学问图谱的根因关联

悲观工业学问图谱从“人机料法环”等角度,将设备、人员、故障案例、工艺工序等数据构建学问图谱。输入失效模式、位置、现象等信息,通过智能问答语义分析引擎,可以将盘问生成与之最立室的子图,通过子图可以立室到根本原因实体,如果子图链接不精准,支持对子图进行修改,子图越丰富,链接到的原因也就越精准。同时可以返回图谱关联的案例相关人员、相关排查解决措施等快速提高解决故障的效率。

 

学问图谱问答体系面临的困难

学问图谱问答体系总体上可以分为Pipeline和端到端两种方案,端到端的深度学习模型首先需要一个足够完整的图谱和鉴于这个图谱产生足够多的样本数据,而在实际项目中比较困难。相比较而言,实际落地过程中,Pipeline的方式会更可行,可以方便对每个过程或者步骤进行控制和定向优化,如添加业务词典去提高实体链接的精度等等。

 中文学问图谱复杂问答目前很难自动化就获得一个较好的base效果,目前业界或多或少都会采用模板库的方式来解决特定课题。在垂直领域特定的图谱模式下,通过KBQA和推理可以体现出足够深度的专家经验,同时辅助一定结构化的数据降低图谱构建和维护的成本,这会是体现学问图谱问答价值的方式之一。

 

参考文章:

https://huggingface.co/uer/roberta-base-chinese-extractive-qa

https://zhuanlan.zhihu.com/kb-qa

https://mp.weixin.qq.com/s/nN0aSXQN_IyjIJ1mRT5s3w

https://mp.weixin.qq.com/s/8vz32-tLU6U1oYPErhbW0Q

https://www.infoq.cn/article/ochiwf5rkuabdxm5s28x

https://www.kexue.fm/archives/7427

http://thukeg.gitee.io/kqa-pro/

https://mp.weixin.qq.com/s/F-_qyHTsPtlrK77JgWidoA

作者简介

文辉,悲观数据联合创始人,主要负责悲观数据学问图谱方向产品和技术研发。同济大学计算机应用技术专业硕士,曾任职盛大文学数据中心和阅读集团数据中心核心研发工程师,负责智能推荐体系、数据挖掘和分析、分布式大数据平台、分布式爬虫体系的研发工作,在学问图谱、搜索推荐、自然语言处理、分布式平台架构设计等方面具备充足的研发和实践经验。

给TA打赏
共{{data.count}}人
人已打赏
AI

多模态文档LayoutLM版面智能明白技术演进-纪传俊

2022-12-20 15:28:00

AI

Lidar 3D传感器点云数据与2D图象数据的交融标注

2022-12-20 15:30:00

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
搜索