持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第29天,点击查看活动详情
前言
- 论文:IGSQL: Database Schema Interaction Graph Based Neural Model for Context-Dependent Text-to-SQL Generation
- 会议:EMNLP 2020
- 链接:aclanthology.org/2020.emnlp-…
导语
这篇论文是针对多轮Text-to-SQL任务展开的。之前的Edit-SQL是通过在token-level对之前历史预测的SQL语句进行编辑修改来建模多轮Text-to-SQL的多轮之前的语义联系,但是这种简单的编辑操作的可行性是建立在最初预测的语句的正确性之上,如果第一轮预测错误会误导接下来的所有轮次。IG-SQL正是为了解决这个问题而提出。
问题引入
IGSQL的主要动机是之前的模型 EditSQL 对保持语义一致性,尤其是数据库语义的一致性上保持的并不好。
比如下面的例子,可以看到在第二轮查询的时候, 用户问了 Kacey 的age 是什么,根据第一轮的结果,Kacey 是一个狗的名字,但是EditSQL 却把Kacey当成了狗的主人的名字。 这样导致产生错误的查询,使得之后轮次的所有查询都是错误的。
IGSQL模型
基于上面的问题,本文提出了IGSQL,主要的贡献是提出了一个数据库schema交互图利用了数据库schema项在之前轮次的信息。IGSQL整体架构还是一个具有Attention机制的Encoder-Decoder架构。系统的主要结构图如下所示,关键的部分是 Cross-turn schema interaction graph layer 和 intra-turn schema graph layer。分别是利用上一轮次的信息和只利用本轮次的信息对数据库的schema进行编码。
可以看到,模型主要由以下四部分组成:
- Database Schema Interaction Graph Encoder,由跨轮次编码Cross-turn Schema Interaction Graph Layer和轮次内编码Intra-turn Schema Graph Layer组成;
- 文本编码器,获取用户输入的历史信息;
- 文本编码器和数据库模式交互图编码器输出的共同关注模块;
- 具有门控机制的解码器,以加权不同词汇的重要性。
Database Schema Interaction Graph Encoder
Database Schema Interaction Graph Encoder结构如下:
在该图中,如果满足下面两个条件之一,那么两个节点之间有边相连
- 两个节点是 主键-外键 对
- 两个节点在同一个表中。
而跨轮次之间的连接是上一轮次中所有距离都小于等于1的节点与该轮次中的节点相连。在schema编码的时候,使用了L1 个跨轮次编码层 和 L2 个轮次内编码层。
跨轮次编码Cross-turn Schema Interaction Graph Layer
设是第i轮,对第t个schema结点,第l层跨轮次网络编码的结果。是第 i-1轮,轮次内编码的结果。计算:
然后对两个编码分别使用attention机制最后进行综合。
使用残差网络的思想更新下一轮的编码。
轮次内编码Intra-turn Schema Graph Layer
具体计算类似于上面跨轮次编码层,但只需要一个attention(因为它只接收相同轮次之间相邻节点的信息用于聚合)。
Decoder采用了和EditSQL相似的方法, 直接把历史的查询信息使用一个pointer-generator 的方式加入到当前轮次的查询生成当中。其中, res 指的是 SQL reserved words, sch 指的是database schema items, que 指的是previously SQL tokens。
实验
作者记录了IGSQL在SParC和CoSQL数据集上的实验结果如下:
可以看到,不论是在SParC还是在CoSQL上,IGSQL的表现都超过了EditSQL。尤其是在SParC上,IGSQL超过了EditSQL有超过4%的绝对增益。
同时,作者也分析了IGSQL相比于Edit-SQL在不同轮次、不同难度的SQL语句上的性能表现,IGSQL在更长的轮次上性能远超EditSQL,显示了其模型的有效性。
最后,作者给出了Ablation Study和Case study,可以看到,IGSQL可以有效的纠正EditSQL的错误,生成更加正确的SQL语句。
总结
IGSQL是EditSQL之后有一个经典的模型,他改进了原始的EditSQL的不足,取得了更好的效果。