Text-to-SQL学习整理(三十一)合成高质量数据对于Text-to-SQL解析的重要性

587 阅读8分钟

导语

本文提出了一个新颖的合成框架,提高生成的自然语言问题的质量。实验证明SOTA模型在这些高质量合成数据上微调后性能有显著的提升。

1 简介

本文介绍了文本到SQL解析的任务,即将自然语言问题翻译成相应的SQL查询。由于关系数据库的复杂性,通常需要SQL工程师来提取有价值的信息。为了解决训练数据稀缺的问题,近年来出现了使用合成数据提高下游性能的方法。本文针对现有合成数据的质量问题,提出了一种新的合成框架。

具体而言,该框架在SQL合成阶段采用强类型的模板合成、保留模板中的键值关系、以及基于表结构距离加权的列采样等策略,而在文本生成阶段则采用中间表示法(IR)来提高生成的自然语言问题的质量。本文实验表明,使用我们的合成数据训练的模型优于使用以前的合成数据训练的模型,并在Spider数据集上实现了新的最先进的准确率。本文的主要贡献包括系统比较了现有的文本到SQL合成方法并确定了低质量的三个根本原因,提出了几种新的策略来提高数据合成质量,并采用IR进一步提高了生成的自然语言问题的质量。

现存合成方法及其局限性

图1展示了现有的文本到SQL合成方法以及它们在不同维度上的特点。本文对每种方法进行了详细介绍:

image.png

GRAPPA将同步上下文无关文法(SCFG)方法扩展到了文本到SQL任务中,手工设计了约90个高质量的SQL-NLQ对齐模式来生成新的SQL-NLQ对,虽然SCFG会创建高质量的数据,因为模式经过仔细设计和对齐,但是模式的覆盖范围有限,并且需要专业知识来设计这样的模式。因此,更多的工作致力于自动化该过程。

两阶段方法首先从简单模式中采样SQL查询,然后使用解码器解构生成问题。GZAP采用使用从训练中提取的模板生成SQL,并使用预训练的转换器BERT增强了NLQ生成器,并迭代地更新了解析器和生成器。只有使用通过循环一致性筛选的目标模式创建的合成数据可以促进下游性能。Wang等人确定了固定SQL合成规则的问题,并采用了全面的概率上下文无关文法(PCFG)方法,可以生成具有不同结构的SQL。然而,这种改进并不像使用SCFG生成的合成数据进行预训练那样显著。

为了改善合成数据的质量,Wu等人提出了一种子句级合成框架:首先将查询分解为子句,然后将子SQL子句翻译为子问题,最后将子问题组装成整个问题。他们发现基于子句的合成方法比普通合成更好。另外,一些工作提出通过将领域信息纳入问题生成来提高合成数据的质量。

本文旨在探究合成数据集对当前最先进的PICARD模型的价值,并在自动化和非迭代方式下完善合成方法。作者使用T5-Large PICARD作为基准解析器,对最近的两个合成数据集进行了评估,发现合成数据的精确匹配率在阶段1中远低于Spider训练数据,但在使用IR2NLQ和SQL2NLQ的合成数据时表现更好。接下来的章节中,作者详细介绍了他们提出的方法以解决合成数据的问题。

合成数据质量分析

本文分析了以前的文本到SQL合成方法,并确定了一些导致这些方法过时的原因。其中,一些方法中存在不合逻辑的合成SQL,可能是由于无效语法或模板导致的。另外,PCFG生成的SQL查询经常无法捕获列之间的外键和键关系,而现有工作仍然遗漏了模板中的关键键关系。此外,一些合成的SQL查询来自任意多表连接,具有过于复杂的结构,难以被正确地翻译成自然语言问题。最后,我们还讨论了SQL和NLQ之间的语言差距,以及在SQL-to-text中出现的一些挑战。

2 提出的方法

本文提出了一种基于模板的SQL合成方法,并通过序列到序列模型生成相应的自然语言查询。为解决生成问题,采用以下方法:

  • 引入强类型,并对抽取的模板进行编码,以生成更合理的SQL;
  • 提出基于模式距离加权的列采样策略,以避免过于复杂的连接;
  • 改进中间表示(IR),弥补SQL和自然语言问题之间的差距,特别是在SQL-to-text场景中。

SQL合成

SQL合成采用了模板方法,并在生成过程中对列进行采样以填充模板。为了提高合成质量,采用了强类型、模板键关系保留和基于模式距离加权的列采样策略。

image.png

首先,通过对模式相关的列和值进行规范化处理,并去除JOIN短语,创建一组SQL模板。在SQL生成过程中,根据训练分布对模板进行抽样,并使用约束对列进行抽样,以填充模板的规范化槽位。这里作者强调了对现有方法的几点改进。

  • 强类型。在规范化列时,我们通过丰富和保留每个列的数据类型(如文本、数字、日期等)以及关键标识(键或非键)来强制执行模板的强类型。
  • 模板键关系保留。外键是一个表中的列,引用另一个表的主键(唯一标识符)。在多表连接的场景中,键和外键是最常连接的列。对于以下两种情况,限制某一列成为另一键列的外键对于SQL的有效性至关重要:1)包含INTERSECT、EXCEPT、UNION的查询;2)在WHERE条件中包含嵌套查询的查询。
  • 基于模式距离加权的列采样。为了减轻任意多表连接的问题,本文实现了一种加权采样函数,偏向于距离已经选择的SQL模板中的列较近的列。SQL合成的基本算法描述在算法1中。

image.png

NLQ合成

在自然语言查询(NLQ)合成过程中,使用中间表示(IR)简化SQL查询,同时保持最小信息损失。常见操作包括移除FROM/JOIN子句和GROUP BY子句,合并WHERE子句和HAVING子句。以前的研究发现,使用IR通常可以提高文本到SQL的性能。

在本节中,我们探讨SQL到文本生成是否也可以从IR中受益。根据Wu等人(2021)的先前研究,改变查询的线性化顺序就已经能够影响合成文本的质量。这里的IR目标是将SQL转换为更接近自然语言查询(NLQ)的表示。这种转换包括简化(如去除多余信息)和具体化(如通过启发式方法引入信息)。

image.png

作者概述了将SQLs转换为IRs的主要新规则,并解释了其原理(表3中的示例):

  • 只有当FROM/JOIN短语中的表出现在其他SQL元素中时才删除它们(EX2-EX4)。删除表可以简化查询,但JOIN中的表也可以作为过滤器,并且需要保留以避免信息丢失(EX1)。
  • 用作外键的JOIN中的表的列替换count( )中的,以便为计数提供明确的上下文。这是因为,在多表连接查询中,外键表示一对多关系中的多,因此,这个表中的行更有意义地被聚合(请参见EX2将*替换为concert而非stadium)。
  • 当SQL包含ORDER BY COUNT (...) LIMIT ... 时,重写查询以明确表示最多或最少的意图,以便更好地对齐意图(EX3)。
  • 如果分组的列出现在SELECT中,丢弃GROUP BY短语,并在查询没有表示最多/最少意图时将EACH附加到特定列(参见EX3-EX4中的GROUP被删除,但EX2中的GROUP未被删除)。这旨在区分GROUP BY和SELECT在同一列上的SQL与没有SELECT的SQL。

与之前的IR设计类似,作者还删除了EXCEPT/INTERSECT/UNION查询中的重复文本,并进行了词汇调整。

3 实验

在Spider上的实验结果如下:

image.png

以及进行了Few-shot的设置:

image.png

4 总结

本文提出了一个用于文本到sql语义解析的数据合成框架。在整合模式中的关键关系、强制强类型、进行模式距离加权列采样和将SQL→NLQ生成与中间表示桥接之后,合成了高质量的数据集,可以进一步改进Spider基准上最先进的解析器。本文还揭示了合成数据的效率,并指出减少文本到sql解析的人工注释的潜在用处。