一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第16天,点击查看活动详情。
论文
- 标题:Global Reasoning over Database Structures for Text-to-SQL Parsing
- 会议:EMNLP 2019
- 链接:arxiv.org/abs/1908.11…
导语
上篇博客为大家介绍了一种将图神经网络应用于Text-to-SQL任务的方法,本篇博客将继续沿着图神经网络的方向,介绍一种在GNN上更加优化和完善的模型--Gating GCN模型。
简介
在Spider数据集这个Cross-domain的设置中,一个最为关键的困难是解析器必须将新的词汇项映射到在训练时没有观察到的schema常量。之前的GNN模型主要通过单词和schema常量之间的局部相似函数来处理这一问题,该函数将每个单词和schema常量单独考虑,而忽略了信息的全局性考虑。
如上图所示,在Question问句中出现了name一词,但是这个词在singer和song这两个table中都有出现。如果仅从局部信息考虑,那么模型选择singer.name和song.name的概率相同。但是,我们可以观察到问句中name和nation是同时出现的,考虑到nation仅与singer.country一类相似度高,所以我们可以大致判断name说的也是singer这个table里的name列。
基于此想法,本文提出Global GCN模型。它可以根据全局信息来获取schema常量中哪些对于最终SQL语句的生成有帮助,实现了性能的提升。
方法
相比于GNN模型,该模型新增两个GCN网络:gated GCN和Re-ranking GCN。
-
Gated GCN添加一个新的节点v_global用于做global representation,替换原来输入中的参数 用作Encoder GCN的输入。
-
Re-rank GCN用于对输出的beam进行rerank排序。这样可以确保在Encoder还是Decoder都可以完整获取schema item的信息(用GCN编码的,Encoder看到的是整个图,Decoder设置为子图但也有全局信息 )。
上图为整个框架结构,Gating GCN用来表示当前问句对应的SQL语句会跟哪些schema item相关,计算一个相关分数。接着,使用Encoder GCN计算每个schema item的学习表示,然后Decoder使用该表示来预测K个候选查询。最后,重新排序的GCN只根据选定的DB常数对每个候选项进行评分。虚线和箭头表明,在Decoder输出SQL查询时,没有将梯度从Reranking GCN传播到Decoder。
Reranking模块用于将Decoder输出beam的所有query进行rerank。与gated GCN不同的是,reranking GCN只输入在预测SQL语句 中出现过的schema item的节点的子图和 节点。由于这样只能捕获选定节点的全局属性,但忽略未选定的和可能相关的节点。后面又计算一个新的向量 来记录所有节点信息。
实验
添加这两个模块后,Global GNN模型取得了进一步的提升。实验结果如下图所示,
作者也比较了单表和多表上的性能差异:
结论
Global GNN弥补了原始GNN模型的一些缺点,优化了相似度计算中全局信息的考虑,并在Spider数据集上取得了进一步提升。下篇博客将为大家介绍RATSQL模型。