发表会议:EMNLP 2021 Finding
研究领域:KBQA-SPARQL生成
作者团队:A*STAR, Singapore (新加坡科技研究局)
代码仓库:未开源
论文简介
现有的KBQA方法,将SPARQL简化为一个list或者一个graph,缺失了"filter"和"order_by"限制,生成简化后的形式。
本文直接使用大规模的预训练模型生成可执行的未简化的完整的SPARQL,
最终取得了更好的效果,并且具有更好的可解释性和更高的计算效率。
主要思路
将Complex KBQA任务转化为一个language generation任务,使用预训练的encoder-decoder模型直接生成SPARQL。
这种方法的问题是:如何生成unseen的实体?
在SPARQL中,实体由ID表示(e.g. 'ns:m.08x9_6'),无法由模型直接生成。
本文采用自然语言模型生成实体的text label,从而在预测阶段生成unseen的实体。
具体地,本文使用一个变量(例如'c1')再加filter来表示实体(例如' filter(str(?c1) = “1980 NBA Finals”)')
本文方法的优势
- 使用生成模型一次可以生成整个sparql,而非像迭代式的graph generation方法,一次只能生成一条边或者一个action
- sequence generation的方法可解释性更好 (?存疑)
- 可以使用大规模预训练模型
- 模型可以学习生成constraints
具体方法
- 首先使用Freebase API 识别句子中的实体,选择一个作为topic entity,另一个作为限制(预处理)
- 然后使用encoder-decoder模型生成一个SPARQL列表
- 最后选择最好的可执行的SPARQL(后处理)
实验结果
三个数据集:
MetaQA
WebQSP
CWQ
主实验结果
总体效果不错,Beam size取到了100
不同类型的问题结果分析
- 1跳,2跳
- 无约束,有约束
- filter约束,order_by约束
消融分析
- 生成原SPARQL(实体以ID形式生成)
- 不添加Topic Entity的type
- 添加Topic Entity的label
- 同时添加Topic Entity的type和label
总结
本文主要提出了一种用Encoder-Decoder模型生成SPARQL的方法,在2021年算是不错的尝试。
放到现在(2022年),这种方法已经被广泛采用了,如何在Seq2Seq的范式下对现有问题进行优化是一个值得思考的问题。