论文笔记:CQR-SQL: Conversational Question Reformulation Enhanced Context-Dependent Text-to-SQL Parsers

39 篇文章 4 订阅
15 篇文章 13 订阅
CQR-SQL是一个两阶段模型,用于处理多轮Text-to-SQL任务,强调了对话依赖的schema理解和会话一致性。模型通过递归式CQR模型改进问题重写,并引入一致性任务减少错误传播,同时利用self-training生成标注数据。实验表明,CQR-SQL在SParC和CoSQL数据集上表现出色,优于现有方法。
摘要由CSDN通过智能技术生成

论文笔记:CQR-SQL: Conversational Question Reformulation Enhanced Context-Dependent Text-to-SQL Parsers

导语

转自我本人的其他平台的博客。

本文是今年(2022年)EMNLP上发表的一个工作,该工作延续了上一篇DELTA模型的思路,将多轮问题重构为两阶段pipeline模式:问题重写和单轮Text-to-SQL。让我们一起来看看本文又是如何在DELTA上继续改进的吧。

1 简介

对于多轮的Text-to-SQL任务,现有的方法通常专注于充分利用历史上下文或以前预测的SQL来进行当前的SQL解析,而忽略了显式地理解模式和会话依赖关系,如共同引用、省略和用户焦点变化。而这些则是多轮Text-to-SQL中最复杂的挑战,下图1展示了关于这些语言现象的示例:

image.png

之前的工作大都是简单的将多轮中的各个句子进行拼接(下图2a),就得到了不错的效果,但这些端到端的方法缺乏对这些上下文依赖现象的关注。过去多轮Text-to-SQL领域,只有DELTA模型关注过这个问题,其将整个任务流程分解为两个pipeline的子任务(下图2b):

  1. 使用conversational question reformulation (CQR)模型来重写多轮对话;
  2. 使用一个单轮的(上下文无关)Text-to-SQL语义解析器完成语义解析。

然而,在实践中,两阶段pipeline方法的限制体现在两个方面:

  1. 存在转换的错误传播现象;
  2. 忽视了两个阶段之间的相关性。

image.png

同时,由于因为text-to-SQL数据集中的多轮题严格围绕底层数据库,现有的text-to-SQL数据集中没有CQR注释。这些需要研究者自己通过一些无监督或半监督的方法来生成CQR标注。

基于以上的发现,本文设计了一个新的两阶段的模型CQR-SQL,它是一个两阶段模型,其中第一阶段是一个schema增强的递归式CQR模型,相比于之前的两阶段方法中的第一阶段模型,该模型有两点更新:

  1. 考虑了对话依赖的数据库schema
  2. 考虑了上一轮次的预测的self-contained questions

在第二阶段,作者设计了两个一致性任务,即schema grounding consistency task 和 tree-structured SQL parsing consistency task来将self-contained questions和多轮question上下文映射到同一个潜在空间,尽量保证模型在输入self-cotanied question和多轮question上下文时得到相同的输出。这样,在推断阶段,模型将无需重新生成self-contained语句,解决了错误传播问题。

2 方法

2.1 预备知识

任务定义

多轮Text-to-SQL任务的目标是在输入当前轮次τ​的问句和历史上下文问句q≤τ​的前提下,生成对应于该轮次的SQL语句sτ​。

Backbone Network

CQR-SQL使用Encoder-decoder结构,其中Encoder采用relation-aware Transformer (RAT)结构,Decoder则采用tree-structured LSTM(Yin and Neubig (2017)),都是很经典的Text-to-SQL任务中用到的结构。

2.2 使用schema增强的递归式CQR模型

由于上下文相关的text-to-SQL缺乏域内CQR标注,我们采用schema enhanced递归CQR方法来收集可靠的self-contained问题。

Schema Integration for CQR

为了产生与schema更相关的问题,这里把问题的最后拼接了schema信息。

Recursive Generation for CQR

同时,受Edit-SQL和IST-SQL的启发,在多轮编码中加入last predicted SQL query有助于捕获长期依赖。所以,最终的优化目标为:

image.png

Self-training for CQR

通用的CQR模型在SParC和CoSQL这类in-domain数据上表现不好,因而本文也采用和DELTA的类似方式来进行半监督的生成标注数据。

具体来说,采用的方法为self-training,该方法就是通过一系列的步骤,用已有的有标签的数据(labelled data),去对剩下的还未标记的数据打标签。从而使得训练数据(training data)更多。

具体步骤如下:

  1. 初始化有标签数据和无标签数据
  1. 重复:

    • 用有标签的数据去训练一个模型
    • 用这个模型来对没有标签的数据做预测
    • 只选取最有把握的预测结果来标记数据(unlabelled data)
    • 把新标记好的数据加入到原来的标记好的数据集中,同时把他们从原来的数据集中删除
  1. 直到数据集不发生变化

使用算法描述即如下图所示:

image.png

2.3 CQR-SQL : Latent CQR Learning for Text-to-SQL Parsing in Context

在解决了阶段1的self-contained数据标注问题之后,我们再来看看CQR-SQL模型。图3展示了CQR-SQL的训练示意图,首先这里明确一下,作者使用了两个任务来训练模型:

  1. Schema Grounding Consistency Task:用来预测当前轮次下,哪些database schema会被使用到;
  2. SQL Parsing Consistency Task:用来预测得到最终的SQL语句。

image.png

这里,我们会注意到,这些任务后面都加了Consistency,即这里作者还设计了一致性的Loss确保模型在接收self-contained问题和多轮上下文question时模型的预测尽可能一致。接下来将详细介绍。

Schema Grounding Consistency Task.

这个任务用来预测当前轮次下,哪些database schema会被使用到;由于这是一个不需要顺序的任务(相当于从一堆集合元素中挑出一部分元素的子集),所以为了避免位置信息干扰,这里使用BoW loss(参考:https://zhuanlan.zhihu.com/p/26898768)。

其损失函数定义如下:

image.png

BoW loss的ground truth就是第τ​轮次中出现的schema item。

同时,为了保持模型在接收self-contained question和多轮question上下文时的一致性,还涉及了一致性loss,如下:

image.png

S G K L SG_{KL} SGKL loss就是两次预测之间的KL散度(交换顺序后也要考虑,因为KL散度不对称)

SQL Parsing Consistency Task

该任务的loss设计与上一个任务相仿,也是由两部分组成,其中第一部分是预测SQL语句的loss,这个需要位置信息,就是正常的cross-entropy loss,另一个则也是一致性loss,形式如下:

image.png

最终的loss形态,包含BoW loss、SQL预测loss、和两个阶段中各自的一直连续性loss加和

image.png

在Evaluation时需不要额外的self-contaied问题标注了,因为CQR模型已经训练好了可以接收多轮输入或Self-contained问题而产生连续一致的结果。

3 实验

3.1 实验建立

首先,由于self-contained question缺乏标注,作者标注了一部分self-contained问题作为初始化的标注数据。之后,通过3轮self-training的迭代,最终获得了4441个SParC和1973个CoSQL上的有标签数据来训练CQR模型。

3.2 实验结果

主要实验结果如下表所示:

image.png

可以看到。CQR-SQL在绝大多数指标上都取得了SOTA的表现。同时,作者还进行了不同轮次和不同难度的正确性分析,如下图所示:

image.png

3.3 消融实验

作者还进行了一些消融实验来验证各个组件的有效性,结果如下表:

image.png

3.4 Case study

同时,作者也提供了两个case study来详细分析:

image.png

4 相关工作

5 总结

相比于DELTA,CQR-SQL通过一种潜在空间的一致性loss去掉了在推断时需要的两阶段转换,从而避免了错误累积现象,同时使用self-training的方式总结了一些标注数据,实验结果也有了很大提升。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值