浙江大学学报(工学版), 2024, 58(5): 908-917 doi: 10.3785/j.issn.1008-973X.2024.05.004

计算机技术、通信技术

基于依存关系图注意力网络的SQL生成方法

舒晴,, 刘喜平,, 谭钊, 李希, 万常选, 刘德喜, 廖国琼

1. 江西财经大学 信息管理学院,江西 南昌 330013

2. 江西农业大学 软件学院,江西 南昌 330013

SQL generation method based on dependency relational graphattention network

SHU Qing,, LIU Xiping,, TAN Zhao, LI Xi, WAN Changxuan, LIU Dexi, LIAO Guoqiong

1. School of Information Technology, Jiangxi University of Finance and Economics, Nanchang 330013, China

2. School of Software, Jiangxi Agricultural University, Nanchang 330013, China

通讯作者: 刘喜平,男,教授. orcid.org/0000-0002-0230-8004. E-mail: lewislxp@gmail.com

收稿日期: 2023-07-3  

基金资助: 国家自然科学基金资助项目(62076112, 62272205, 62272206, 62272207);江西省自然科学基金资助项目(20232ACB202008);江西省教育厅科学技术研究项目(GJJ190255);江西省研究生创新专项资助项目(YC2023-B185).

Received: 2023-07-3  

Fund supported: 国家自然科学基金资助项目(62076112,62272205,62272206,62272207);江西省自然科学基金资助项目(20232ACB202008);江西省教育厅科学技术研究项目(GJJ190255);江西省研究生创新专项资助项目(YC2023-B185).

作者简介 About authors

舒晴(1990—),女,博士生,从事自然语言处理的研究.orcid.org/0009-0007-0365-7621.E-mail:shu_0124@163.com , E-mail:shu_0124@163.com

摘要

研究基于自然语言问题的结构化查询语言(SQL)生成问题(Text-to-SQL). 提出两阶段框架,旨在解耦模式链接和SQL生成过程,降低SQL生成的难度. 第1阶段通过基于关系图注意力网络的模式链接器识别问题中提及的数据库表、列和值,利用问题的语法结构和数据库模式项之间的内部关系,指导模型学习问题与数据库的对齐关系. 构建问题图时,针对Text-to-SQL任务的特点,在原始句法依存树的基础上,合并与模式链接无关的关系,添加并列结构中的从属词与句中其他成分间的依存关系,帮助模型捕获长距离依赖关系. 第2阶段进行SQL生成,将对齐信息注入T5的编码器,对T5进行微调. 在Spider、Spider-DK和Spider-Syn数据集上进行实验,实验结果显示,该方法具有良好的性能,尤其是对中等难度以上的Text-to-SQL问题具有良好的表现.

关键词: Text-to-SQL ; 自然语言查询 ; 依存句法分析 ; 关系图注意力网络

Abstract

The problem of generating structured query language (SQL) from natural language questions (Text-to-SQL) was analyzed. A two-stage framework was proposed to decouple the processes of schema linking and SQL generation in order to reduce the complexity of SQL generation. Database tables, columns, and values mentioned in the question were identified by a schema linker based on relational graph attention network in the first stage. The syntactic structure of the question and the internal relationships between database schema items were used to guide the model in learning the alignment between the question and the database. The original syntactic dependency tree was modified by merging relationships irrelevant to schema linking and adding dependencies between subordinating conjunctions in parallel structures and other elements in the sentence in view of the characteristics of Text-to-SQL task when constructing the question graph, which helps the model capture long-distance dependencies. SQL generation was performed by injecting the alignment information into the T5 encoder and fine-tuning it in the second stage. Experiments were conducted on the Spider, Spider-DK and Spider-Syn datasets. Results showed that the method performed well, especially for Text-to-SQL problems of medium difficulty and above.

Keywords: Text-to-SQL ; natural language query ; dependency parsing ; relational graph attention network

PDF (871KB) 元数据 多维度评价 相关文章 导出 EndNote| Ris| Bibtex  收藏本文

本文引用格式

舒晴, 刘喜平, 谭钊, 李希, 万常选, 刘德喜, 廖国琼. 基于依存关系图注意力网络的SQL生成方法. 浙江大学学报(工学版)[J], 2024, 58(5): 908-917 doi:10.3785/j.issn.1008-973X.2024.05.004

SHU Qing, LIU Xiping, TAN Zhao, LI Xi, WAN Changxuan, LIU Dexi, LIAO Guoqiong. SQL generation method based on dependency relational graphattention network. Journal of Zhejiang University(Engineering Science)[J], 2024, 58(5): 908-917 doi:10.3785/j.issn.1008-973X.2024.05.004

关系数据库是当前存储大量结构化数据的主流方式,而查询数据库需要使用结构化查询语言(structured query language,SQL),这对不掌握计算机知识的普通用户而言有一定的困难. Text-to-SQL任务将自然语言问题(natural language query,NLQ)转换为机器可以执行的SQL语句,向普通用户提供了自然语言形式的查询接口,极大地降低了数据查询和分析的门槛,因而受到了学术界的广泛关注.

Text-to-SQL任务需要模型理解NLQ中所涉及的表和列,理解数据库模式中各个元素之间的关系. 如何正确地将NLQ与数据库模式进行对齐是当前Text-to-SQL问题的瓶颈[1]. 将NLQ中描述的实体和关系映射到数据库模式,这在Text-to-SQL 任务中被称为模式链接(schema linking)[2]. 由于自然语言的表述具有多样性,问题中对数据库模式的表述不一定与实际的模式名称一致,且数据库中可能存在许多相似的模式名称,这都给模式链接增加了难度. 传统的模式链接方法包括规则或字符串匹配,后续的一些模型在编码阶段使用注意力模块,这些方法大多没有考虑句子的语法结构,无法捕捉词语间长距离的依赖关系,导致模型无法正确理解句子的含义,从而无法准确地识别句子中提及的数据库模式. 针对上述问题,本文提出两阶段框架. 首先使用模式链接器,利用数据库模式结构和问题句子的依存句法关系,在生成SQL之前对齐问题词和数据库模式,帮助后续模型过滤掉大部分不相关的模式项,降低训练和生成SQL的难度. 在第2阶段,将对齐信息注入到SQL生成器中,将它们视为附加上下文,增强SQL生成的结果.

本文的主要贡献如下.

(1)提出两阶段的SQL生成框架,其思想是解耦模式链接和SQL生成,以降低SQL生成的难度. 该方法通过模式链接器识别问题中提及的数据库表、列和值,利用对齐信息指导SQL生成.

(2)提出基于依存关系图注意力网络的对齐方法,在问题依存句法分析的基础上重塑和修剪依存关系,构建关系图注意力网络(relational graph attention network, RGAT)[3]. 利用问题的语法结构和模式项之间的内部关系,指导模型学习问题与数据库的对齐关系.

(3)研究对齐信息注入的SQL生成方法,将对齐信息注入T5模型,对T5进行微调,以改进SQL生成结果.

(4)在公开数据集上进行大规模实验.实验结果显示,本文提出的方法具有良好的性能.

1. 相关工作

Text-to-SQL问题需要模型理解NLQ在哪些数据库模式上进行查询操作,因此要考虑NLQ和数据库的模式链接,常用的技术包括注意力机制、图神经网络、预训练模型等. SQLNet使用列注意力,将列的信息融入NLQ的单词表示[4]. TypeSQL通过数据库和知识库识别NLQ中的实体,将实体类型作为输入特征进行编码[5]. Guo等[2]提出模式链接的概念,利用字符串匹配和知识图谱识别问题中的实体,在编码时对问题跨度(span)标注匹配类型(column/table/value),对相应数据库列标注匹配类型(exact match/partial match). SLSQL对Spider数据集的模式链接进行标注,证明精确的模式链接可以提高SQL生成的性能[6]. Ryansql在编码时加入问题-列对齐层(question-column alignment)和问题-表对齐层(question-table alignment),通过注意力机制,增强问题和模式项之间的特征交互[7]. Bogin等[8]通过GNN建模数据库模式的图结构,提出GLOBAL-GNN[9],使用门控GCN选择与问题相关的列和表. 问题和数据库模式的联合编码有助于二者的对齐. Seq2SQL将列名、NLQ和SQL关键字序列通过Bi-LSTM编码[10]. Rat-SQL[11]在Transformer[12]的基础上增加关系感知自注意力机制,利用完整的关系图网络来处理NLQ和模式项间各种预设的关系. BRIDGE[13]为了识别问题中提及的数据库值,对问题和数据库值进行模糊匹配,匹配字段作为锚文本(anchor text)附加到相应模式后输入模型. LGESQL通过线图(line graph)考虑节点间的局部和非局部特征,通过图修剪的辅助任务识别与问题相关的模式项,提高编码器的判别能力[14].

Text-to-SQL相关工作中对句法特征的使用较少,然而句法依存信息反映了问题的语法结构,有助于模型理解问题. SADGA基于上下文结构和句法依存树构建问题图,基于数据库特定关系构建模式图,利用图神经网络分别对问题图和模式图进行编码,设计结构感知的聚合方法来学习问题图和模式图之间的映射关系[15]. 该方法直接使用原始句法依存信息,依存关系数目庞大,容易导致过拟合. S2SQL[16]在关系图注意网络中增加依存句法信息,RASAT[17]在继承T5模型的预训练参数的基础上增加关系感知的自注意力,用于捕获模式结构、模式链接、问题依存结构、问题共指和数据库内容提及这5种关系. S2SQL和RASAT均未对不同的句法依赖关系进行区分,仅保留依赖关系的方向. 本文根据Text-to-SQL 任务的特点,对原始句法依存树进行修改,合并了部分依存关系标签,对并列结构的部分关系进行传播,帮助模型更好地理解问题,改进模式链接的结果.

最近一些工作使用Text-to-Text的预训练模型T5[18],取得了不错的效果,与基于图的方法不同,基于T5的方法对编码器和解码器都采用基于Transformer的架构,不需要预定义的图、模式链接关系和基于语法的解码器. Shaw等[19]的研究表明,对T5进行微调不仅可以学习Text-to-SQL任务,还可以推广到未见过的数据库,且T5-3B的结果可以与当时最先进的模型Ryansql[7]的结果相当. Scholak等[20]提出的PICARD模型通过增量解析约束语言模型的自回归解码器,在每个解码步骤中拒绝错误的词例(token),帮助模型找到有效的输出序列,可以显著提高大型预训练语言模型的性能. PICARD的T5-Base模型可以超越没有PICARD的T5-Large模型. Gao等[21]提出由任务分解、知识获取和知识组合构成的3阶段框架,提升了模型获取通用SQL知识的能力,使其更具有泛化能力和鲁棒性. RASAT[17]通过在多头自注意力中加入边的嵌入,为T5提供结构信息. Xie等[22]将其他结构化知识数据任务(structured knowledge grounding, SKG)的知识注入到T5的多任务训练中,提高Text-to-SQL的性能. GRAPHIX-T5[23]在T5的基础上增加图形感知层,以增强多跳推理能力,在保持T5强大的上下文编码能力的基础上,提高T5的结构编码能力. 这些工作都表明,T5中蕴含着丰富的语言知识,使用合适的微调方式,可以使T5在Text-to-SQL任务上获得优异的表现.

2. 模型简介

Text-to-SQL的任务定义如下:给定自然语言问题Q和数据库模式S,生成相应的SQL查询语句. 问题Q可以表示为$ Q = \{ {q_1},\cdots ,{q_{|Q|}}\} $,其中${q_i}$表示问题中的第i个单词,$|Q|$为问题的长度. 模式S由一系列表$ T = \{ {t_1},\cdots ,{t_{|T|}}\} $和列$ C = \{ c_1^1,\cdots ,c_{|{c^1}|}^1,\cdots , c_1^{|T|},\cdots ,c_{|{c^{|T|}}|}^{|T|}\} $组成,其中${t_i}$为数据库中的第i个表,$c_j^i$为该表中的第j个列,$|T|$ 为数据库中表的数目,$|{c^i}|$为第i个表中列的数目.

图1所示,提出的框架由2个阶段组成:模式链接阶段和SQL生成阶段. 在模式链接阶段,模式链接器识别问题中提及的列、表和值. 在第2阶段,将这些对齐信息注入到生成器中,优化生成的SQL结果.

图 1

图 1   基于依存关系图注意力网络的两阶段SQL生成框架

Fig.1   Two-stage SQL generation framework based on dependency graph attention network


2.1. 模式链接器

模式链接器的结构如图2所示,对问题和模式串联,经预训练模型混合编码,得到问题和模式的初始表示${{\boldsymbol{Y}}^0} = < {\boldsymbol{Y}}_Q^0,{\boldsymbol{Y}}_T^0,{\boldsymbol{Y}}_C^0 > $. 通过预训练模型中的多层注意力机制,已经隐式捕获了部分模式链接的信息. 根据模式的结构及句子的语法信息,通过图神经网络为模式链接提供更明确的监督信号. 分别对问题和模式项构造图. 问题图基于句法依存树,对依存关系进行合并和传播;模式图是基于数据库模式项之间的从属关系和主外键关系. 问题图和模式图经RGAT编码,得到问题和模式的表示${{\boldsymbol{Y}}^L} = < {\boldsymbol{Y}}_Q^L,{\boldsymbol{Y}}_T^L,{\boldsymbol{Y}}_C^L > $,计算它们的链接概率.

图 2

图 2   模式链接器的结构

Fig.2   Structure of schema linker


2.1.1. 问题和模式项的联合编码

将问题Q和序列化的数据库模式S进行串联,得到输入序列X

$ X = [{\mathrm{CLS]}}{\text{ }}Q{\text{ }}[{\mathrm{SEP}}]{\text{ }}S{\text{ }}[{\mathrm{SEP}}][{\mathrm{None}}][{\mathrm{SEP}}] \text{,} $

$ S = [T]{t_1}[C]c_1^1, \cdots ,[T]{t_j}, \cdots ,[C]c_k^j[V]{q_i}, \cdots. $

其中[None]作为特殊模式项,当问题中的单词不与任何模式项关联时,将与[None]关联. S中的特殊字符[T]和[C]用于分割表名和列名. 此外,在列名前添加了其所属的表名,在列名后添加了其类型信息(如text、number、boolean等),并用特殊字符[#]分割. 为了明确问题中提及的数据库值,将问题词与数据库中的值进行模糊匹配,将匹配结果添加到X中. 假设问题词${q_i}$与数据库列$c_k^j$中的值匹配,将${q_i}$添加到相应列名后,用特殊字符[V]进行分割,即$ c_k^j[V]{q_i} $. 若问题词${q_i}$与多个列的值都匹配,则将${q_i}$添加到所有匹配列之后,一起输入模型.

混合序列X经基于Transformer的双向编码器(bidirectional encoder representation from transformers, BERT)[24]编码,得到问题词和每个模式项单词的嵌入表示. 由于列名和表名都可能由多个单词组成,需要再经过一个门控循环单元(gate recurrent unit,GRU),得到每个列和表的初始表示.

2.1.2. 依存关系的合并与传播

原始的句法分析产生的依存关系类型多达74种,直接使用原始句法关系构造图,可能会引入大量的噪声. 对原始的句法依存树进行简化和修改. 对于数据库模式识别没有帮助的关系,如root(根节点)、punct(标点)、expl(填补词)、det(限定语)等关系,将它们简化为支配关系,依存弧赋予标签“forward”,保留了如nmod(名词修饰)、dobj(直接宾语)、amod(形容词修饰)等关系标签,具体见表1.

表 1   保留的依存关系集合

Tab.1  Collection of reserved dependencies

关系解释
dobj间接宾语
nmod名词修饰
compound复合词
conj连词
acl:relcl关系从句修饰
amod形容词修饰
nummod量词修饰

新窗口打开| 下载CSV


在原始的句法依存树中,由“and”、“or”或逗号等连接的单词之间的并列结构,通过依存弧conj(连词)连接. 该结构中,第一个词作为整个并列结构的核心词,不仅支配其余并列词,还连接了与句子中其他词的支配和被支配关系. 从语义上看,并列词共享与句中其他成分的依存关系,但距离第一个词越远的并列词,依赖路径越长,依赖关系越难以捕捉. 如图3所示,“year”作为并列结构中的第一个词,“name”和“budget”通过conj关系依附于“year”,同时“year”作为“List”的从属词和“department”的支配词. 语义上“name”和“budget”是“List”的宾语,“department”修饰了“name”和“budget”,这些支配和被支配关系在原始依存树上表现为多跳关系,增加了模型理解的困难. 添加并列结构中的从属词与句中其他成分间的依存关系,如图3所示为修改示例.

图 3

图 3   依存关系修改示例

Fig.3   Example of dependency modification


2.1.3. 问题RGAT模块

除上述修改,还添加了单词与自身的自连接关系. 将句子结点构成的图使用RGAT[14]模型计算其表示${\boldsymbol{Y}}_Q^L$,其中L为网络层数,公式如下:

$ u_{j,i}^h = {{{{({\boldsymbol{W}}_{\mathrm{q}}^h{\boldsymbol{y}}_i^l)}^{\mathrm{T}}}({\boldsymbol{W}}_{\mathrm{k}}^h{\boldsymbol{y}}_j^l+{\boldsymbol{e}}_{j,i}^h)} \mathord{\left/ {\vphantom {{{{({\boldsymbol{W}}_q^h{\boldsymbol{y}}_i^l)}^T}({\boldsymbol{W}}_k^h{\boldsymbol{y}}_j^l+{\boldsymbol{e}}_{j,i}^h)} {\sqrt {{d \mathord{\left/ {\vphantom {d H}} \right. } H}} }}} \right. } {\sqrt {{d \mathord{\left/ {\vphantom {d H}} \right. } H}} }} ,$

$ \alpha _{j,i}^h = {\mathrm{softmax}}\;(u_{j,i}^h), $

$ {\tilde{{\boldsymbol{y}}}}_{i}^{l}=||_{h=1}^{H}{\displaystyle {\sum }_{{v}_{j}^{n}\in {N}_{i}^{n}}{\alpha }_{j,i}^{h}({{\boldsymbol{W}}}_{{\mathrm{v}}}^{h}{{\boldsymbol{y}}}_{j}^{l}+{{\boldsymbol{e}}}_{j,i}^{h})} ,$

$ {\boldsymbol{\tilde y}}_i^{l+1} ={\mathrm{ LayerNorm}}\;({\boldsymbol{y}}_i^l+{{\boldsymbol{W}}_0}{\boldsymbol{\tilde y}}_i^l), $

$ {\boldsymbol{y}}_i^{l+1} = {\mathrm{LayerNorm}}\;({\boldsymbol{\tilde y}}_i^{l+1}+{\mathrm{FFN}}({\boldsymbol{\tilde y}}_i^{l+1})). $

式中:${{\boldsymbol{y}}_i} \in {{{\bf{R}}}^d}$H为注意力头的数量,${{\boldsymbol{W}}_0} \in {{{{\bf{R}}}}^{d \times d}}$${\boldsymbol{W}}_{\mathrm{q}}^h、{\boldsymbol{W}}_{\mathrm{k}}^h、{\boldsymbol{W}}_{\mathrm{v}}^h \in {{{\bf{R}}}^{{d \mathord{\left/ {\vphantom {d {H \times d}}} \right. } {H \times d}}}}$为可学习参数,$ \parallel $表示向量拼接操作,$ {\mathrm{FFN}}( \cdot ) $表示前馈神经网络,LayerNorm表示层标准化,$ {{\boldsymbol{e}}}_{i,j}=||_{h=1}^{H}{{\boldsymbol{e}}}_{i,j}^{h} $为结点i与结点j间可学习的关系嵌入.

2.1.4. 模式RGAT模块

对于数据库模式而言,其表和列作为结点,列表间的从属关系、主外键关系作为边,构成模式关系图,同样结点的表示可以通过RGAT计算. 各模式项之间的关系定义如表2所示.

表 2   模式项之间的关系

Tab.2  Relation types of schema items

yiyj关系解释
column-column-identityi = j
column-column-sametableyiyj同属一个表
column-column-fkyiyj的外键
column-column-fkryj$ {y}_{i} $的外键
table-table-identityi = j
table-table-fkryiyj中有一个外键列
table-table-fkbyjyi中有一个外键列
table-table-fkyiyj中均有对方的外键
table-column-pkyjyi的主键
table-column-hasyj属于yi,但不是主键
column-table-pkyiyj的主键
column-table-hasyi属于yj,但不是主键

新窗口打开| 下载CSV


2.1.5. 模式链接的概率计算

计算问题词${q_i}$和模式项${s_j}$的链接概率${P_{i,j}}$.${q_i}$的表示${\boldsymbol{y}}_i^L$${s_j}$的表示${\boldsymbol{y}}_j^L$进行拼接,经多层感知机和softmax操作计算链接概率,公式为

$ {P_{i,j}} = {\mathrm{softmax}}\;\{ {\mathrm{MLP}}\;({\boldsymbol{y}}_i^L \oplus {\boldsymbol{y}}_j^L)\} . $

模式链接器的损失函数为交叉熵损失,即

$ {L} = \frac{1}{{|Q||S|}}\sum\limits_{i = 1}^{|Q|} {\sum\limits_{j = 1}^{|S|} {[ - {P_{i,j}}\ln \;{{\hat P}_{i,j}} - } } (1 - {P_{i,j}})\ln \;(1 - {{\hat P}_{i,j}})] .$

2.2. 对齐增强生成器

由于T5在Text-to-SQL任务上展现了强大的性能表现,通过注入模式链接信息,对T5进行微调,实现第2阶段的SQL生成任务. 将问题Q、模式链接结果和序列化的数据库模式S输入模型,输入序列表示为

$ x = {q_1},\cdots ,{q_{|Q|}}|{\mathrm{spa}}{{\mathrm{n}}_i} = {t_k}|\cdots |{\mathrm{spa}}{{\mathrm{n}}_j} = c_m^n|S . $

其中spani表示问题Q中连续的若干个单词. “spani= tk”表示spani提及的是表tk,“spanj=$ c_m^n $”表示spanj提及的是列$ c_m^n $或该列的值. 参照Shaw等[19]的工作,数据库模式S序列化为如下形式:

$ S = {t_1}:c_1^1,\cdots ,c_{|{c^1}|}^1|\cdots |{t_{|T|}}:c_1^{|T|},\cdots ,c_{|{c^{|T|}}|}^{|T|} .$

T5模型基于编码器-解码器框架,双向编码器学习输入向量x的隐藏状态h,解码器根据h生成SQL,公式如下:

$ {\boldsymbol{h}} ={\mathrm{ En}}{{\mathrm{c}}_\theta }({\boldsymbol{x}});{\text{ }}{\boldsymbol{y}} = {\mathrm{De}}{{\mathrm{c}}_\tau }({\boldsymbol{h}}) . $

式中:$ \theta $$ \tau $分别为编码器和解码器的参数. 模型采用预训练的T5参数进行初始化,按如下目标进行优化:

$ {\text{ }}\mathop {\max }\limits_{\theta ,\tau } \;\ln\;{P_{\theta ,\tau }}({\boldsymbol{y}}|{\boldsymbol{x}}) = \sum\limits_{i = 1}^{|y|} {\ln } \;{P_{\theta ,\tau }}({{\boldsymbol{y}}_i}|{{\boldsymbol{y}}_{1:i - 1}},{{{\boldsymbol{x}}}}) . $

3. 实验分析

3.1. 数据集

Text-to-SQL目前的主流数据集是Spider数据集[25],该数据集包含10 181条自然语言问题和5 693条SQL查询以及138个不同领域的200个数据库;其SQL语句覆盖了多表连接、分组、排序、嵌套查询等复杂操作,目前SOTA模型的准确度约为70%. Spider分为训练集、验证集和测试集,样本个数分别为7 000、1 034和2 134. 由于测试集未公开,使用验证集进行消融实验. 基于Spider数据集,SLSQL构建了模式链接语料库,对Spider训练集和验证集的每个实例注释了模式链接信息[6]. 使用SLSQL提供的标注数据训练模式链接器.

为了验证模型的鲁棒性,在Spider-DK[26]和Spider-Syn[27]数据集上进行实验. Spider-DK在Spider样本的基础上加入领域知识,用于评估模型融合知识的能力. Spider-Syn对Spider数据集中的问题进行同义词替换,特别是与数据库模式和值相关的问题词,评估模型对词汇变化的鲁棒性.

3.2. 评价指标

采用准确率P(precision)、召回率R(recall) 和F1评估模式链接器的性能. Text-to-SQL任务的评价指标主要包括精确匹配率(exact set match accuracy, EM)和执行准确率(execution accuracy, EX),本文采用这2个评价指标. EM将SQL语句拆分成SELECT、WHERE、GROUP BY等多个组件,依次比较各组件集合,避免SQL子句中顺序问题的影响. EX对预测SQL和标准SQL的执行结果进行比较.

3.3. 实验环境及参数

实验的显卡型号为NVIDIA GeForce RTX 3090,显存为24 GB,CUDA版本11.7. 模型基于PyTorch实现,Python版本为3.8.13,PyTorch 版本为1.10.1+cu113.

模式链接器的参数如下:BERT版本为BERT-Base,层数为12,hidden_size为768,注意力头为12,dropout为0.1. RGAT的层数为8,hidden_size为768,注意力头为8,dropout为0.2. batch_size为12,learn_rate为5×10−5,迭代轮次为30. 依存句法分析采用斯坦福大学开发的StandfordCoreNLP.

生成器的参数如下:实验使用的T5版本为T5-Base和T5-Large,采用Adafactor[28]进行参数优化. T5-Base的batch_size为8,learn_rate为10−4;T5-Large的batch_size为4,learn_rate为5×10−5.

3.4. 实验结果与分析

3.4.1. 模式链接

  1) 实验结果分析.

在Spider验证集上,利用模式链接器进行模式链接的结果如表3所示. 由于只有SLSQL显式地研究了模式链接,将本文方法与SLSQL进行比较. 本文方法较SLSQL有明显的提升,识别问题中提及的列、表、值的F1分别提高了4.2%、2.4%和13.1%. 部分样本的预测结果对比如表4所示. 本文方法在模型输入时,将与数据库值模糊匹配的问题词附加在相应列名之后,因此在值的识别上,较SLSQL更准确,如表4的问题2所示,利用本文模型可以正确识别问题词“Aruba”对应“country”表中“Name”列的值. 此外,由于本文使用改进的句法依存关系,模型能够在一定程度上理解问题的语法结构,具有一定的全局推理能力. 如表4的问题1所示,本文模型根据“rank for winners”将“rank”识别为“matches”表中的“winner_rank”列,SLSQL将其错误识别为词语最相似的“rankings.ranking”列. 在问题3中,“flights”表中的列“SourceAirport”和“DestAirport”中都包含值“APG”,本文模型能够根据问题中的“arriving”,将“APG”正确识别为列“DestAirport”的值.

表 3   模式链接的结果

Tab.3  Results of schema linking

模型
PRF1PRF1PRF1
SLSQL0.8260.8200.8230.8060.8400.8220.7730.7410.757
本文方法0.8780.8530.8650.8380.8550.8460.8920.8830.888

新窗口打开| 下载CSV


表 4   部分样本模型预测结果的对比

Tab.4  Comparison of model prediction results for some samples

问题Ground Truth本文方法SLSQL
1. What is the average $\underline{{\rm{rank}}}$ for winners
in all matches?
matches.winner_rank - columnmatches.winner_rank - columnrankings.ranking- column
2. How many languages are spoken in $\underline{{\rm{Aruba}}}$?country.Name - valuecountry.Name - valuecountrylanguage.Language - value
3. What are flight numbers of flights arriving
at Airport "$\underline{{\rm{APG}}}$"
flights.DestAirport - valueflights.DestAirport - valueairports.AirportName - value

新窗口打开| 下载CSV


2) 消融实验.

为了研究模型中各个组件对性能的影响,开展消融实验,结果如表5所示. 为了便于讨论,3.1节的模型在本节中被称为默认模型. 其中“-依存增强”表示使用原始句法依存树,不对依存关系进行合并和传播,“-问题RGAT”表示删去问题的RGAT模块,“-模式RGAT”表示删去模式的RGAT模块. 实验结果显示,各模块均对模型性能有一定的贡献. 删去依存增强模块后,对列的识别能力有一定的下降,删除问题RGAT后下降得更明显. 句法依存关系有助于模型理解问题的语法结构,对易混淆的相似列名识别有一定的帮助,表6给出结果示例. 例1中“names”和“winners”的nmod(名词修饰)关系由“names”指向“winners”,经并列结构的依存关系传播,问题词“rank”通过nmod关系支配“winners”,使得模型正确识别“rank”对应表“match”中的“winner rank”列,而删去问题的RGAT模块后,模型将“rank”错误识别为“rankings”表中的“ranking”列. 例2中,表city和表country都包含名为Population的列,由于问题词“population”通过nmod关系支配“district”,且问题词“district”对应city表中的District列,“population”也对应表city中的列. 类似地,例3中的“whose name”,其“name”指的是“state name”而不是“email name”. 默认模型在识别时更精准,更倾向于将单词识别为列的引用,但由于标注精度的问题,导致表的识别结果略有下降. 例如问题“How many car models are produced by each maker?”,模型将“car models”识别为表“model_list”的引用,语料库仅标注了单词“models”,又如问题“What is name of the country that speaks the largest number of languages? ”模型将language识别为列“countrylanguage.language”,语料库标注为表“countrylanguage”. 此类与标注不一致的识别情况不影响后续的SQL生成. 随机采样100个错误实例发现,与标注不一致但不影响SQL生成的错误占总数的13%.

表 5   模式链接的消融实验结果

Tab.5  Ablation study of schema linking

模型
PRF1PRF1PRF1
默认模型0.8780.8530.8650.8380.8550.8460.8920.8830.888
-依存增强0.8570.8280.8420.8490.8580.8540.8940.8800.887
-问题RGAT0.8420.8250.8330.8500.8360.8430.8900.8800.885
-模式RGAT0.8610.8240.8420.8500.8300.8400.8890.8740.881

新窗口打开| 下载CSV


表 6   列预测结果的对比

Tab.6  Comparison of column prediction

问题Ground Truth默认模型-问题RGAT
What are the names and $\underline{{\rm{ranks}}}$ of the three youngest winners across all matches?matches.winner_rank matches.winner_rankrankings.ranking
What is the total $\underline{{\rm{population}}}$ of Gelderland district?city.Populationcity.Populationcountry.Population
Return the first name, last name and email of the owners living in a state whose $\underline{{\rm{name}}}$ contains the substring 'North'.Owners.stateOwners.stateOwners.email_address

新窗口打开| 下载CSV


3) 输入序列对比实验.

为了研究模式链接中问题词与数据库值的匹配,研究多种在输入序列中添加匹配信息的方式. 假设问题词${q_i}$与数据库列$c_k^j$中的值$ {d_m} $匹配,对以下3种方式进行实验. 1)列+值:将匹配到的数据库值添加到相应列名后,即$c_k^j[V]{d_m}$. 2)问题词+值:将匹配到的数据库值添加到相应问题词之后,即$ {q_i}[V]{d_m} $. 3)问题词+列:将匹配的列序号添加到相应问题词后,即$ {q_i}[V]n $,其中n$c_k^j$在所有列C中的序号. 对于方式1)和2),匹配到的数据库值可能有很多,在保证输入序列不超过512的情况下,按匹配度由大到小添加匹配词. 因为BERT限制输入长度不能超过512,而列名较长,仅在问题词后添加列的编号. 实验结果见表7. 考虑到在问题词后添加值或列的序号破坏了原始问题的上下文,性能有所下降. 相比于在列后添加匹配的数据库值,添加问题词的效果更好. 问题中对于值的描述不一定与数据库中存储的值完全相同,例如问题“What is the average, minimum, and maximum age for all French singers?”,“French”对应“country”列的值“France”,添加问题词更加直观.

表 7   输入序列的对比

Tab.7  Comparison of input sequence

模型
PRF1PRF1PRF1
默认模型0.8780.8530.8650.8380.8550.8460.8920.8830.888
列+值0.8600.8420.8510.8520.8400.8460.8650.8570.861
问题词+值0.8660.8470.8560.8520.8790.8660.7990.7880.794
问题词+列序号0.8480.8410.8440.8580.8670.8630.8320.8150.823

新窗口打开| 下载CSV


3.4.2. SQL生成

本文方法与其他模型在Spider验证集上的SQL生成结果对比如表8所示. 表中,“GT”表示不使用模式链接器预测的模式链接结果,而是使用标注的模式链接结果,即Ground Truth. 根据实验结果可见,本文方法在不同规模的T5模型上展现了较好的性能. 在加入第一阶段预测的模式链接结果后,本文方法较文献[19]在原始T5上的结果有了较大提升,EM值在T5-Base上提升了11.4%,在T5-Large上的结果与T5-3B上的结果相当. EM反映预测查询是否和标准查询在所有组件上完全一致,然而同一查询可以有多种实现方法,例如“SELECT a FROM t ORDER BY b DESC LIMIT 1”与“SELECT a FROM t WHERE b = (SELECT MAX(b) FROM t)”是完全等价的,因此EM存在将正例判负的情况,造成了EM和EX之间差距较大. 本文在T5-Large上的EX值超过了同规模的所有基线模型,甚至比Unifiedskg[22]在T5-3B上的结果高1%. 实验证明,使用准确的模式链接信息可以显著提升模型的性能,在使用标注的模式链接结果后,本文方法在T5-Large上的结果甚至超过了RASAT[17]在T5-3B上的结果.

表 8   SQL生成实验结果的对比

Tab.8  Comparison of SQL generation results

模型EM/%EX/%
T5-Base[19]57.1
T5-3B[19]70.0
Unifiedskg(T5-Base)[22]58.160.1
Unifiedskg(T5-Large) [22]66.668.3
Unifiedskg(T5-3B)[22]71.874.4
T5-Base+PICARD[20]68.568.4
T5-Large+PICARD[20]69.172.9
T5-3B+PICARD[20]75.579.3
TKK(T5-Base)[21]61.564.2
TKK(T5-Large)[21]70.673.2
RASAT(T5-Base)[17]60.461.3
RASAT(T5-Large)[17]66.769.2
RASAT(T5-3B) [17]72.676.6
RASAT(T5-3B) +PICARD [17]75.380.5
本文方法-T5-Base68.571.6
本文方法-T5-Base+GT76.375.2
本文方法-T5-Large69.975.4
本文方法-T5-Large+GT79.280.9

新窗口打开| 下载CSV


为了显示模型在不同难度的查询上的生成能力,按照Spider数据集的样本划分规则,将查询分为4个级别:容易 (easy)、中等 (medium)、难 (hard)、很难 (extra hard),实验结果如表9所示. 由实验结果可见,准确的模式链接可以提升难度较大的SQL生成问题的结果. 由于预测的模式链接结果不够准确,模型尚有较大的提升空间,需要进一步的研究.

表 9   不同难度上的EX结果对比

Tab.9  Comparison of EX accuracy on different difficulty levels

模型EX/%
easymediumhardextra hard
TKK(T5-Large)[21]89.576.552.945.2
T5-3B+PICARD[20]95.285.467.250.6
RASAT(T5-3B)+PICARD[17]96.086.567.853.6
本文方法-T5-Large89.181.662.651.8
本文方法-T5-Large+GT92.787.271.356.6

新窗口打开| 下载CSV


为了验证模型的鲁棒性,在 Spider-DK和Spider-Syn数据集上进行实验,模式链接器未重新训练,即仍然使用基于SLSQL[6]标注的Spider数据集训练的结果,实验结果见表10. 这2个数据集更贴合实际的应用场景,Spider-DK 结合了一些领域知识,Spider-Syn模拟了用户不熟悉数据库的模式,在问题中没有准确提及模式词的情况. 实验结果显示,本文方法具有鲁棒性,在2个数据集上的表现均超过基线模型.

表 10   Spider-DK和Spider-Syn上的SQL生成结果

Tab.10  SQL generation results on Spider-DK and Spider-Syn

模型Spider-DKSpider-Syn
EM/%EX/%EM/%EX/%
RAT-SQL+BERT[11]40.948.2
RAT-SQL+GRAPPA[29]38.549.1
T5-Base[21]40.843.8
T5-Large[21]53.157.4
TKK(T5-Base)[21]44.247.7
TKK(T5-Large)[21]55.160.5
本文方法-T5-Base39.346.649.854.6
本文方法-T5-Large48.255.356.060.9

新窗口打开| 下载CSV


4. 结 语

本文提出两阶段的模型以解决Text-to-SQL问题,通过模式链接器识别问题中提及的数据库表、列和值,将对齐信息融合到基于T5的生成器中,指导SQL生成. 模式链接器基于关系图注意力网络,根据问题句法依存树和模式项之间的内部关系构造图. 在构造问题图时,对依存关系进行合并和传播,有助于模型捕获长距离的依赖关系. 模型将模式链接和SQL生成解耦,以降低Text-to-SQL问题的复杂性,在Spider及其变体上的实验证明了该模型的性能. 下一步将对模式链接模块继续进行优化,提高SQL生成的准确率.

参考文献

刘喜平, 舒晴, 何佳壕, 等

基于自然语言的数据库查询生成研究综述

[J]. 软件学报, 2022, 33 (11): 4107- 4136

[本文引用: 1]

LIU Xiping, SHU Qing, HE Jiahao, et al

Survey on generating database queries based on natural language

[J]. Journal of Software, 2022, 33 (11): 4107- 4136

[本文引用: 1]

GUO J, ZHAN Z, GAO Y, et al. Towards complex text-to-SQL in cross-domain database with intermediate representation [C]// Proceedings of ACL . Florence: ACL, 2019: 4524-4535.

[本文引用: 2]

WANG K, SHEN W, YANG Y, et al. Relational graph attention network for aspect-based sentiment analysis [C]// Proceedings of ACL . [S. l. ]: ACL, 2020: 3229-3238.

[本文引用: 1]

XU X, LIU C, SONG D X. SQLNet: generating structured queries from natural language without reinforcement learning [EB/OL]. (2017-11-13) [2023-10-27]. https://arxiv.org/abs/1711.04436.

[本文引用: 1]

YU T, LI Z, ZHANG Z, et al. TypeSQL: knowledge-based type-aware neural text-to-SQL generation [C]// Proceedings of NAACL-HLT . New Orleans: ACL, 2018: 588-594.

[本文引用: 1]

LEI W, WANG W, MA Z, et al. Re-examining the role of schema linking in text-to-SQL [C]// Proceedings of EMNLP . [S. l.]: ACL, 2020: 6943-6954.

[本文引用: 3]

CHOI D, SHIN M C, KIM E, et al

RYANSQL: recursively applying sketch-based slot fillings for complex text-to-SQL in cross-domain databases

[J]. Computational Linguistics, 2021, 47 (2): 309- 332

[本文引用: 2]

BOGIN B, BERANT J, GARDNER M. Representing schema structure with graph neural networks for text-to-SQL parsing [C]// Proceedings of ACL . Florence: ACL, 2019: 4560-4565.

[本文引用: 1]

BOGIN B, GARDNER M, BERANT J. Global reasoning over database structures for text-to-SQL parsing [C]// Proceedings of EMNLP-IJCNLP 2019 . Hong Kong: ACL, 2019: 3659-3664.

[本文引用: 1]

ZHONG V, XIONG C, SOCHER R. Seq2SQL: generating structured queries from natural language using reinforcement learning [EB/OL]. (2017-11-09) [2023-10-27]. https://arxiv.org/abs/1709.00103.

[本文引用: 1]

WANG B, SHIN R, LIU X, et al. RAT-SQL: relation-aware schema encoding and linking for text-to-SQL parsers [C]// Proceedings of ACL . [S. l. ]: ACL, 2020: 7567-7578.

[本文引用: 2]

VASWANI A, SHAZEER N, PARMAR N, et al. Attention is all you need [C]// Advances in Neural Information Processing Systems . Long Beach: MIT Press, 2017: 5998–6008.

[本文引用: 1]

LIN X V, SOCHER R, XIONG C. Bridging textual and tabular data for cross-domain text-to-SQL semantic parsing [C]// Findings of the ACL: EMNLP 2020 . [S. l.]: ACL, 2020: 4870-4888.

[本文引用: 1]

CAO R, CHEN L, CHEN Z, et al. Line graph enhanced text-to-SQL model with mixed local and non-local relations [C]// Proceedings of ACL-IJCNLP 2021 . [S. l.]: ACL, 2021: 2541-2555.

[本文引用: 2]

CAI R, YUAN J, XU B, et al

Sadga: Structure-aware dual graph aggregation network for text-to-sql

[J]. Advances in Neural Information Processing Systems, 2021, 34: 7664- 7676

[本文引用: 1]

HUI B, GENG R, WANG L, et al. S2SQL: injecting syntax to question-schema interaction graph encoder for Text-to-SQL parsers [C]// Findings of the ACL: ACL 2022 . Dublin: ACL, 2022: 1254-1262.

[本文引用: 1]

QI J, TANG J, HE Z, et al. Rasat: Integrating relational structures into pretrained seq2seq model for text-to-sql [C]// Proceedings of the 2022 Conference on EMNLP . Abu Dhabi: ACL, 2022: 3215-3229.

[本文引用: 8]

RAFFEL C, SHAZEER N, ROBERTS A, et al

Exploring the limits of transfer learning with a unified text-to-text transformer

[J]. The Journal of Machine Learning Research, 2020, 21 (1): 5485- 5551

[本文引用: 1]

SHAW P, CHANG M W, PASUPAT P, et al. Compositional generalization and natural language variation: can a semantic parsing approach handle both? [C]// Proceedings of ACL-IJCNLP 2021 . [S. l. ]: ACL, 2021: 922–938.

[本文引用: 5]

SCHOLAK T, SCHUCHER N, BAHDANAU D. PICARD: parsing incrementally for constrained auto-regressive decoding from language models [C]// Proceedings of the 2021 Conference on EMNLP . Punta Cana: ACL, 2021: 9895-9901.

[本文引用: 5]

GAO C, LI B, ZHANG W, et al. Towards generalizable and robust Text-to-SQL parsing [C]// Findings of the ACL: EMNLP 2022 . Abu Dhabi: ACL, 2022: 2113-2125.

[本文引用: 8]

XIE T, WU C H, SHI P, et al. Unifiedskg: Unifying and multi-tasking structured knowledge grounding with text-to-text language models [C]// Proceedings of the 2022 Conference on EMNLP . Abu Dhabi: ACL, 2022: 602-631.

[本文引用: 5]

LI J, HUI B, CHENG R, et al. Graphix-T5: mixing pre-trained Transformers with graph-aware layers for text-to-SQL parsing [EB/OL]. (2023-01-18) [2023-10-27]. https://arxiv.org/abs/2301.07507.

[本文引用: 1]

DEVLIN J, CHANG M W, LEE K, et al. BERT: pre-training of deep bidirectional transformers for language understanding [C]// Proceedings of NAACL-HLT 2019 . Minneapolis: ACL, 2019: 4171–4186.

[本文引用: 1]

YU T, ZHANG R, YANG K, et al. Spider: a large-scale human-labeled dataset for complex and cross-domain semantic parsing and Text-to-SQL task [C]// Proceedings of the 2018 Conference on EMNLP . Brussels: ACL, 2018: 3911–3921.

[本文引用: 1]

GAN Y, CHEN X, PURVER M. Exploring underexplored limitations of cross-domain Text-to-SQL generalization [C]// Proceedings of EMNLP . [S. l. ]: ACL, 2021: 8926–8931.

[本文引用: 1]

GAN Y, CHEN X, HUANG Q, et al. Towards robustness of Text-to-SQL models against synonym substitution [C]// Proceedings of ACL-IJCNLP. [S. l. ]: ACL , 2021: 2505-2515.

[本文引用: 1]

SHAZEER N, STERN M. Adafactor: adaptive learning rates with sublinear memory cost [C]// Proceedings of the 35th International Conference on Machine Learning , Stockholm: PMLR, 2018: 4596-4604.

[本文引用: 1]

YU T, WU C S, LIN X V, et al. GraPPa: grammar-augmented pre-training for table semantic parsing [EB/OL]. (2021-05-29) [2023-10-27]. https://arxiv.org/abs/2009.13845.

[本文引用: 1]

/