栗友们,大家好,我是Zarc
最近在关注KBQA方向,推荐一篇综述——《Complex Knowledge Base Question Answering: A Survey[1]》,对综述做了一个简单总结,如果想了解相关细节,推荐读一下原文。
当前,KBQA存在两种主流方案:基于语义解析、基于信息检索
-
基于语义解析
-
问题理解模块:进行语法和句法分析,为后续的解析步骤获得一个编码问题,一般利用神经网络来获取输入问题的编码表示,还可以通过语法解析来增加输入问题的结构属性
-
逻辑解析模块:将输入问题的编码表示转化成尚未进行实例化的逻辑表示,之所以是未实例化,是因为其尚未填充实体和关系,不同的KBQA系统的逻辑表示可以是不同的,这种逻辑表示可以通过生成一组token序列或者对候选token序列排序得到。
-
KB实例化模块:将未实例化的逻辑解析结果,通过输入问题中实体和关系实例化得到可执行语句,最终得到一个可执行语句,如SparQL语句。
-
KB执行模块:将实例化结果通过KB进行查询,生成最终的预测答案。
-
基于信息检索
-
通过对生成的所有实体进行排序,将概率最大的实体作为预测答案。 -
通过预先定义好的词汇便来自由生成相关文本。 -
检索源构建模块:从输入问题中的主题实体开始,系统首先基于该实体从KB中抽取一个图。最理想情况下,该图包含所有与该问题实体相关的实体关系,并将其作为该图的节点和边。在不生成逻辑表达式的情况下,使用基于信息检索的方法对该图进行隐式推理。 -
问题表示模块:对输入的问题进行编码,该模块通过分析问题的语义,输出向量表示的推理指令。通常做法是将问题通过神经网络进行编码得到推理指令的向量表示。 -
基于图的推理模块:通过基于向量的计算进行语义匹配,沿着图的相邻实体和边进行传播和聚合信息,推理状态会根据推理指令进行更新 -
答案生成模块:根据推理结束时的推理状态生成答案,这里的生成方案有两种:
二者异同点:
共性 | 特性 |
---|---|
两种方案都包含KB处理模块。如KB实例化模块、KB执行模块、检索源构建模块。
两种方案都依赖于编码器来识别问题中的实体。基于语义解析的方案利用它来实例化逻辑表达式,基于信息检索的方案来利用它缩小检索源中的推理规模,因此这种基于问题理解的编码器性能对二者都十分重要。 | 基于语义解析的方法十分依赖逻辑解析模块,它能够为每个问题生成一个逻辑表达式,但是由于标注样本的获取需要的代价较高,所以通常基于语义解析的方法都是在弱监督设置下进行训练,与基于检索推理的方案相比,基于语义解析的方案具有明确的可解释性和更强的鲁棒性,但是逻辑解析模块受到模型解析能力的限制,这也是语义解析方法的关键之处。 基于信息检索模块方法首先使用检索模块,在知识库中获取到该特定问题的图表示,然后使用基于图的推理模块对图的结构进行复杂推理,将得到的答案最终通过答案生成模块进行预测。基于信息检索模块的性能很大程度上取决于检索模块的召回率,因为后续的基于图的推理都是将检索模块召回的图作为输入,同时基于图的推理和答案生成模块能够在最终实现准确预测。基于信息检索的方法最终是生成实体或者自由文本结果,而不是像语义解析方法那样生成查询指令,因此基于信息检索方法适合端到端的训练方法,与基于语义解析的方法相比更容易进行优化,但是这种端到端的方法类似于黑箱推理,缺少了可解释性,降低了模型的鲁棒性。 |
本期关于KBQA的介绍到这里就结束了,后面将会带来具体的KBQA方案和相关代码分析,敬请期待~
最后,关注六只栗子,面试不迷路!
参考资料
Complex Knowledge Base Question Answering: A Survey: https://arxiv.org/pdf/2108.06688.pdf
“
🏋️别人爱举铁我爱举个🌰
🧩知识分享 | 面试经验 | 面试辅导 | 408辅导
🌏领域:前端 | 后端 | 深度学习 | 大数据 | 项目管理
🔗微信公众号搜索“六只栗子” | 邮箱联系:sixchestnuts@163.com
”
作者 Zarc
编辑 一口栗子
本文内容原创自“六只栗子”团队
©原创IP版权在手,未经授权商用必究
原文始发于微信公众号(六只栗子):KBQA方案对比
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/88209.html