

基于语义解析的方法的处理流程同样可以分为四步(见上图):
(1)对问题进行编码
(2)将问题编码转化为某种未实例化的逻辑表示
(3)根据kb,将逻辑表示实例化,得到最终的可执行的逻辑表示
本文将对这两条路线下的一些新工作进行介绍。
一、基于信息检索的方法 TERP(coling 22)

该方法旨在将路径信息引入候选实体打分中,其中有两个难点:如何表示路径、如何将路径表示与问题表示相结合。具体地,作者使用预训练语言模型对问题进行编码。路径是指问题中的主题实体和候选答案实体间的最短关系路径,其表示由kg嵌入(RotatE模型)和问题嵌入(将关系的文字表述进行拼接,输入预训练语言模型)共同组成。当存在多条最短路径时,使用问题表示以及注意力机制,选出最相关的一条。

二、基于语义解析的方法 SSKGQA(coling 22)

得到结构后,从主题实体出发,找到该结构对应的所有候选查询图。在排序步骤中,作者同样使用BERT分别对问题、正确查询图以及错误查询图进行表示,其中查询图根据三元组中空格和“.”进行分割得到序列输入形式,通过三元损失函数训练。

该文章提出现有方法受限于预定义逻辑形式的限制,难以覆盖所有情况,如“filter”、“order_by”等,且难以处理unseen实体问题,提出直接端到端生成sparql语句,理论上可以生成任何约束条件。此外,将sparql中的实体ID替换为变量(如“c1”),并在最后加上filter条件,‘filter(str(?c1)
= “实体名”)’,从而通过语言模型去学习实体名和问题之间的关系,并生成实体名即可。

CBR-KBQA(emnlp 21)

该文章旨在利用类似的问题及解决方案(case)来解决新问题,在本设定中,case问自然语言问题及其对应的逻辑表示。给定问题q,先在case memory(也就是训练集)中检索类似的问题;通过重用case中的组件,生成q对应的逻辑表示,并进行实体链接;由于case可能无法完全覆盖,或kb存在不完整的情况,需要根据实际的kb局部情况对逻辑表示进行修正;最后执行查询,得到答案。

RnG-KBQA(acl 22)



最后的生成器使用T5,输入为问题和top-k候选的拼接,基于交叉熵损失训练,推理时使用beam search。
三、实验对比
为了直观对比这几篇工作在复杂问题上的表现,下表中汇总了它们在ComplexWebQuestion和WebQuestionSP上的实验结果。可以看到基于信息检索的方法在更复杂的问题上表现会下降,可能是由于其很难获取所有的相关实体,计算复杂度过高。基于解析的方法中,SSKGQA定义的问题形式会决定其表达能力的上限,而后三篇工作选择基于语言模型直接生成灵活的query形式,难度更大,但带来的表示能力的收益是可观的。



欢迎关注北京大学王选计算机研究所数据管理实验室微信公众号“图谱学苑“
实验室官网:https://mod.wict.pku.edu.cn/
微信社区群:请回复“社区”获取
gStore官网:http://www.gstore.cn/
GitHub:https://github.com/pkumod/gStore
Gitee:https://gitee.com/PKUMOD/gStore





