UNISAR: A Unified Structure-Aware Autoregressive Language Model for Text-to-SQL

简介

    Text2SQL(也称为NL2SQL)是一项将用户的自然语句转为可执行 SQL 语句的技术,对改善用户与数据库之间的交互方式有很大意义。Text2SQL的本质,是将用户的自然语言语句转化为计算机可以理解并执行的规范语义表示 (formal meaning representation),是语义分析 (Semantic Parsing) 领域的一个子任务。

    目前比较火的英文数据集有WikiSQL、Spider、CoSQL、SParc、WikiTableQuestions、ATIS等,中文数据集有TableQA(即下图NL2SQL)、DuSQL、Chase等。
UNISAR: A Unified Structure-Aware Autoregressive Language Model for Text-to-SQL_第1张图片

    在WikiSQL这个任务上目前主流的方法分为2种,一种是seq-to-seq序列的模型,这些模型直接生成最终SQL的语句,这方面比较出名的模型有:SEQ2SQL、Coarse2Fine、MQAN、NC-SQL、SeqGenSQL、Bridging、SeaD;另外一种是基于sketch-based的方法,把预测部门拆分成几个部分,每个模型只预测SQL语句的一部分,这方面比较出名的模型有:SQLNet、TypeSQL、SQLova、X-SQL、F-SQL、HydraNet、IE-SQL、SDSQL。

    目前在WikiSQL数据集上主流的方法是使用sketch-based系列的模型,但近期的研究表明,seq-to-seq序列的模型经过合理的设计,也一样可以取得很好的效果。在EG和不加EG的情况下取得最好的模型分别是sketch-based的模型(SDSQL、F-SQL)和seq2seq模型(SeaD)。

    这篇文章主要是介绍哈工大和微软亚洲研究院在2022年3月15号新发布的论文《UniSAr: A Unified Structure-Aware Autoregressive Language Model for Text-to-SQL》,论文地址为:https://arxiv.org/abs/2203.07781。这篇文章提出了一种不同与上面的方法,该模型属于Autoregressive Language Model,模型以Fairseq作为框架,在7个著名的数据集上(Multi-Domain:WikiSQL和TableQA;Multi-Table:Spider和DuSQL;Multi-Turn:CoSQL、SParc、Chase)都取得了一样甚至是更好的成绩。

摘要

    现有的 text-to-SQL 语义解析器是为特定设置而设计的,例如处理多表、 多领域或多轮的查询,这使得它们在应用于不同设置时效果会差很多。本文提出了统一结构感知自回归语言模型 UNISAR (Unified Structure-Aware Autoregressive Language Model) ,该模型直接采用现成的语言模型体系结构,在不同的环境下表现出一致的高性能。
    该模型在七个众所周知的涵盖多领域、多表和多轮的text-to-sql 数据集上,UNISAR与各个任务下专门设计的最先进的text-to-sql 模型相比,取得了一样甚至是更好的结果。重要的是,UNISAR是非侵入性的(non-invasive),因此在text-to-sql 任务下取得领先的核心模型也可以采用该模型的扩展,以进一步提高性能。
    具体来说,UNISAR 扩展了现有的自回归语言模型,加入了三个non-invasive扩展,使其具有结构感知能力:
     ○ Structure mark:编码数据库的schema、输入文本及这两者之间的关系;
     ○ Constrained decoding:在给定数据库schema的情况下,解码出结构良好的 SQL语句;
     ○ SQL completion:通过该机制来完成基于数据库模式的 SQL 中可能缺失的 JOIN 关系。

模型框架:

  • 采用预训练的自回归语言模型作为 UNISAR 的基础框架;
  • 使用BART进行编码,这是一个广泛使用的预先训练的encoder-decoder模型,遵循标准的从序列到序列的 Transformer 体系结构,它是通过有杂质的句子预先训练的,之所以没有使用 T5,是因为初步试验表明它具有良好的复用能力。(其中英文文本使用BART-Large模型、中文使用mBARF-CC25模型);

Structure Mark

1.schema property:扩展schema的语义信息;

  • The internal schema information:数据库schema的信息, 比如:primary key(主键)或者column type (INT, STRING or DATE),比如下图中,表Ranking中有字段名称有Play_id,它是Primary-key,数据格式是Integer,所以在这个字段前面加上Primary-key & Integer;
  • The name-based linking information:问题和schema直接的关系,作为schema linking的先验信息,比如:匹配schema和问题文本,如果能精确匹配到则加前缀exact,不能完全匹配则加partial,否则就不加。比如下图中,有一张表就叫players,而问题中也能完整匹配到players,所以players前面加Exact-Match;而表Ranking中有字段名称有Play_id,但问题中只出现了players没有出现play_id,所以是部分匹配到,在前面加Partial-Match,
  • The value-based linking information:通过数据库文本信息增强column representation。首先先规划化数据的表达形式(比如:统一日期的格式),然后再和问题中的文本进行匹配。

2.database structure :聚合schema neighbors的信息;

  • The affiliation relations(附属关系):表格和字段直接的关系 (e.g., ID of MATCHES),这个可以直接根据表格的属性获取;
  • The foreign key relations between columns (和变量相关的外键):(e.g., WINNERID links to PLAYERID),假设The tables relations已经包含了这项关系,所以这里只考虑The tables relations;
    【补充知识】主键(Primary Keys)是表中的一列,用作每一行的唯一标识符;外键(Foreign Keys)将一个表中的数据链接到另一个表中的数据。表中的外键列指向另一个表中具有唯一值的列(通常是主键列),以创建交叉引用两个表的方式。
  • The tables relations(表关系):表格直接的关系 (e.g., MATCHES links to RANKING),通过模板‘schema1 links to schema2’ 来生成(问题:怎么批量判断两个表有没有关系)。

3.discourse structure:从历史提问中补充文本信息

  • 在输入中加入了之前的 SQL 语句,从实体和意图两个方面改进了语篇的建模。

Constrained Decoding

  • BART 已经熟练掌握了 SQL 语法,然而它有时会在schema预测方面遇到困难。例如,BART 可能会输出 NATION 而不是 CITIZENSHIP。这里通过构造数据库schema的前缀树来解决这个问题,在beam search期间过滤掉不正确的token(问题:怎么批量构造前缀树)。
  • 注意,UNISAR 和基于语法的解析器之间的区别在于,UNISAR不需要指定具体的语法。

SQL Completion

    在研究中,作者发现生成的 SQL 语句经常会遗漏 JOIN 组件,因为它们通常在自然语言问题中没有被明确提及。为了使 SQL 完整,需要根据数据库模式找回可能丢失的 JOIN 组件;
     具体地说,作者首先构造一个模式图,其中节点是表或列,边是schema关系。然后尝试在一个不完整的 SQL 中找到位于现有表和列的最短路径中的表和列;
    以下图为例,这是一个不完整的 SQL,在 FROM 子句中没有提到表 MATCHES 和列 WINNER _ id。我们根据它们的邻居: PLAYERS 和 RANKING 来推断这两个信息。因为MATCHES 位于这两个表连接的路径上,而 WINNER _ id 是 MATCHES 的主键,通过这种方式可以补充完整的SQL语句。
UNISAR: A Unified Structure-Aware Autoregressive Language Model for Text-to-SQL_第2张图片

模型实验

  1. 模型在7个不同的数据上进行了实验:
  • Multi-Domain:WikiSQL和TableQA(通过指标logic form accuracy (LX) and execution accuracy (EX) 来评估)
  • Multi-Table:Spider和DuSQL(通过指标exact set match accuracy (EM) 来评估)
  • Multi-Turn:CoSQL、SParc、Chase(通过指标question match accuracy (QM) and interaction match accuracy (IM)来评估)
  1. 7个不同的数据上的模型baseline:
  • Multi-Domain:SQLNet 、 SQLova、 Coarse2Fine 、 X-SQL 、 F-SQL 、 Bridge 、 SeaD
  • Multi-Table:RYANSQL、 IRNet、 RAT-SQL、 IRNetExt
  • MultiTurn:EditSQL、 IGSQL、 RAT-SQL-con

实验结果

  • 模型使用Fairseq框架进行数据清洗、训练和推理;使用了4张V100-16G GPUs显卡,训练了10个小时;
  • 在 WikiSQL(不加EG)、TableQA、Spider、DuSQL、SParc、CoSQL、Chase这7个数据集上都取得了最好的结果,见下表:

UNISAR: A Unified Structure-Aware Autoregressive Language Model for Text-to-SQL_第3张图片

UNISAR: A Unified Structure-Aware Autoregressive Language Model for Text-to-SQL_第4张图片

本文贡献:

  • 提出了一个统一的解析框架,可用于包括多领域、多表和多轮对话场景下的各种text-to-sql 的任务,而不依赖于特定的体系结构设计;
  • 通过简单地合并三个non-invasive扩展(structure mark, constrained decoding and SQL completion)使自回归语言模型具有结构感知性;
  • 在7个text-to-sql 数据集进行了实验,实现了整体的改进,证明了统一解析器 UNISAR 与专门设计的其他模型相比更有效。

你可能感兴趣的:(python,sql,nlp)