首页 > 数据库 >[nltoSql]A Survey on Text-to-SQL Parsing: Concepts, Methods, and Future Directions

[nltoSql]A Survey on Text-to-SQL Parsing: Concepts, Methods, and Future Directions

时间:2024-11-04 23:18:35浏览次数:3  
标签:文本 解析 Methods 表格 Text 查询 SQL 自然语言

全文总结

这篇论文题为《A Survey on Text-to-SQL Parsing: Concepts, Methods, and Future Directions》。

研究背景

  1. 背景介绍: 这篇文章的研究背景是文本到SQL解析任务的重要性和挑战性。文本到SQL解析的目标是将自然语言(NL)问题转换为结构化查询语言(SQL),以便在关系数据库上执行。早期的文本到SQL解析系统虽然取得了一些进展,但需要大量的人工工程和用户交互。近年来,深度神经网络特别是预训练语言模型显著提升了这一任务的性能。
  2. 研究内容: 该问题的研究内容包括:介绍文本到SQL解析的语料库,系统概述预训练语言模型和现有的文本到SQL解析方法,探讨文本到SQL解析面临的挑战和未来的研究方向。
  3. 文献综述: 该问题的相关工作有:早期的数据库社区工作通过重工程和用户交互取得了进展;近年来,序列到序列(Seq2Seq)模型和预训练语言模型(如BERT)显著提升了文本到SQL解析的性能。

核心内容

  1. 文本到SQL解析的定义和评估指标

    • 定义:文本到SQL(T2S)解析旨在将自然语言问题转换为可以在关系数据库上执行的SQL查询。
    • 评估指标:单轮T2S解析使用精确匹配准确率(EM)和执行准确率(EX);多轮T2S解析使用问题匹配准确率(QM)和交互匹配准确率(IM)。
  2. 数据集

    • 单轮T2S数据集:包括GenQuery、Scholar、WikiSQL、Spider等。
    • 多轮T2S数据集:包括ATIS、SParC、CoSQL、CHASE等。
  3. 单轮T2S解析方法

    • 编码器:分为基于LSTM的方法(如IRNet、RYANSQL)和基于Transformer的方法(如SQLova、RATSQL)。
    • 解码器:分为基于草图的方法(如SQLNet、TypeSQL)和基于生成的方法(如Bridge、LGESQL)。
  4. 多轮T2S解析方法

    • 编码器:处理上下文信息,考虑链接结构和模式结构。
    • 解码器:大多数方法使用带有注意力机制的LSTM解码器。
  5. 预训练方法

    • 预训练数据构建:包括表收集、自然语言问题注释和SQL注释。
    • 输入编码:文本数据和表格数据的编码方法。
    • 预训练目标:包括掩码语言模型(MLM)、模式链接、SQL执行器、文本生成和上下文建模。

结论

这篇论文提供了对文本到SQL解析领域的全面综述,涵盖了现有的数据集、神经文本到SQL解析模型、定制的预训练方法和未来研究方向。文章希望为实际应用中的文本到SQL解析系统的广泛实施提供一些有见地的视角和启发。

这篇论文通过系统地回顾和分析现有研究和方法,为未来的研究提供了重要的参考和指导。

核心速览

研究背景

  1. 研究问题:这篇文章要解决的问题是如何将自然语言(NL)问题转换为结构化查询语言(SQL)。具体来说,文本到SQL解析的目标是根据关系数据库提供的证据,将NL问题转换为其对应的SQL查询。
  2. 研究难点:该问题的研究难点包括:需要处理复杂的SQL查询、跨域数据、以及输入数据的多样性和规模。
  3. 相关工作:早期的文本到SQL解析工作依赖于重工程设计和用户交互,进展有限。近年来,深度神经网络和大规模预训练语言模型显著推动了该领域的发展。

研究方法

这篇论文提出了多种深度学习方法用于解决文本到SQL解析问题。具体来说,

  1. 序列到序列(Seq2Seq)模型:该模型通过编码器-解码器架构,自动学习从NL问题到SQL查询的映射函数。编码器理解输入的NL问题和相关的表模式,解码器生成目标SQL查询。

     

  2. 输入表示:输入表示方法分为基于LSTM和Transformer的方法。LSTM方法通过双向LSTM捕捉上下文信息,而Transformer方法则利用预训练语言模型(如BERT)增强表示能力。

  3. 结构建模:为了处理复杂的表模式和问题结构,研究者们提出了基于图的方法。这些方法将NL问题标记和表模式项作为多类型节点,并通过预定义的结构关系表达节点间的复杂关系。

     

  4. 解码器:解码器分为基于草图的方法和生成式方法。草图方法将SQL生成过程分解为多个子模块,而生成式方法则直接生成SQL查询。

     

实验设计

  1. 数据集:实验使用了多个单轮和多轮文本到SQL解析数据集,包括GenQuery、Scholar、WikiSQL、Spider等。这些数据集涵盖了不同领域和复杂度的查询。
  2. 评估指标:单轮文本到SQL解析的评估指标包括精确集合匹配准确率(EM)和执行准确率(EX)。多轮文本到SQL解析的评估指标包括问题匹配准确率(QM)和交互匹配准确率(IM)。
  3. 实验设置:实验在多个数据集上进行,比较了不同方法的性能。具体设置包括使用不同的预训练语言模型、编码和解码技术,以及调整模型参数。

结果与分析

  1. 单轮文本到SQL解析:在WikiSQL和Spider数据集上,基于Transformer的方法(如SQLova和SLSQL)表现出色,取得了较高的EM和EX值。

  2. 多轮文本到SQL解析:在ATIS和CoSQL数据集上,基于LSTM的方法(如EditSQL和R2SQL)在QM和IM指标上表现优异,显示出较强的上下文建模能力。

     

  3. 对比分析:相比传统的基于规则的方法,深度学习方法在处理复杂查询和跨域数据方面具有显著优势。预训练语言模型的使用进一步提升了模型的性能。

总体结论

这篇论文全面回顾了文本到SQL解析领域的深度学习方法,介绍了现有的数据集、模型和预训练方法,并探讨了未来的研究方向。通过这些内容,作者希望为工业界提供有价值的见解,并激发更多的实际应用。

论文评价

优点与创新

  1. 全面性:论文提供了对文本到SQL解析任务的全面综述,涵盖了现有的数据集、神经网络模型、预训练方法以及未来的研究方向。
  2. 数据集分类:详细介绍了单轮和多轮文本到SQL解析的数据集,并提供了分类表格。
  3. 模型和方法概述:系统地介绍了预训练语言模型和现有的文本到SQL解析方法,包括编码器和解码器的各种架构。
  4. 挑战和未来方向:探讨了文本到SQL解析面临的挑战,并提出了未来的一些潜在研究方向。
  5. 多轮解析方法:详细描述了多轮文本到SQL解析的方法,包括如何利用上下文信息进行编码和解码。
  6. 预训练技术:总结了现有的预训练技术,包括预训练数据构建、输入特征学习、预训练目标和骨干模型架构。

不足与反思

  1. 数据集限制:当前基准数据集在质量、数量和多样性方面仍有限制。例如,WikiSQL包含大量简单的问题-SQL对和单表,忽略了训练实例的质量和多样性。
  2. 大规模表/数据库形态处理:现有基准数据集中的表通常包含少于十行和列,但在许多实际应用中,涉及的表通常包含成千上万行和列,这对现有神经文本到SQL模型的内存和计算效率提出了挑战。
  3. 结构化表格数据编码:大多数文本到SQL解析方法首先将二维表格数据转换为线性化的序列输入,这种线性化方法无法捕捉表格的结构信息。
  4. 异构信息建模:现有文本到SQL数据集主要包含文本和数值数据,但许多实际应用包含更多类型的数据(如图像),仅使用同质信息源无法满足某些实际应用的需求。
  5. 跨域文本到SQL解析:大多数现有工作集中在领域内的文本到SQL解析,训练和测试集共享相同的领域,难以泛化到新领域。
  6. 模型鲁棒性:文本到SQL解析模型在面对输入中的小扰动时性能显著下降,需要提高模型在不同扰动下的鲁棒性。
  7. 零样本和少样本文本到SQL解析:尽管通过“预训练+微调”范式可以获得令人印象深刻的性能,但这些神经模型在没有任务特定标注训练数据的情况下在零样本设置中表现不佳。
  8. 上下文依赖的文本到SQL解析:大多数先前的TaLMs主要建模独立的自然语言表达,未考虑上下文依赖的交互,导致性能不理想。
  9. 模型可解释性:深度神经网络在文本到SQL解析中取得了最先进性能,但通常缺乏可解释性,这在敏感领域如金融或医疗中尤为重要。
  10. 数据隐私保护:许多文本到SQL模型部署在云上处理用户数据,由于数据的敏感性,数据隐私保护可能是一个重要但具有挑战性的任务。

关键问题及回答

问题1:在文本到SQL解析任务中,为什么深度学习方法特别是序列到序列(Seq2Seq)模型会被广泛采用?

  1. 端到端训练:Seq2Seq模型通过编码器-解码器架构,可以自动学习从自然语言问题到SQL查询的映射函数,无需手动设计复杂的模板或规则。
  2. 大规模预训练语言模型:近年来,预训练语言模型(如BERT、RoBERTa)的广泛应用显著提升了Seq2Seq模型的性能。这些模型在大规模语料库上预训练,能够捕捉丰富的语言知识和上下文信息。
  3. 处理复杂查询:传统的基于规则的方法难以处理复杂的SQL查询,而Seq2Seq模型通过神经网络可以更好地捕捉查询中的语义关系和逻辑结构。
  4. 跨域适应:Seq2Seq模型可以通过端到端训练适应不同的数据集和领域,表现出较强的泛化能力。

问题2:在多轮文本到SQL解析任务中,如何有效地利用历史信息和上下文信息来提高解析性能?

  1. 多轮输入表示:将历史问题和当前问题一起输入模型,通过注意力机制捕捉它们之间的关系。例如,EditSQL使用两个独立的Bi-LSTM分别编码问题和表模式,并通过点积注意力层捕捉多轮问题之间的关系。
  2. 历史SQL输入编码:将历史SQL查询作为另一种模态输入,通过额外的SQL编码器捕捉SQL查询和当前问题之间的语义连接。例如,HIE-SQL通过编辑先前预测的SQL来改进当前问题的生成质量。
  3. 结构建模:在结构建模中,考虑历史输入和数据库模式的历史信息,保持上下文一致性。例如,IGSQL提出了一个数据库模式交互图编码器,结合历史项目和当前项目学习数据库模式项。
  4. 解码器:大多数方法使用LSTM解码器与注意力机制结合,生成条件历史问题和表模式的SQL查询。例如,R2SQL引入了一种动态图框架,有效地建模上下文问题、数据库模式和它们之间的复杂链接结构。

问题3:在文本到SQL解析中,如何处理大规模表和数据库的形态,以提高模型的效率和准确性?

  1. 高效编码:开发能够编码长序列表模式的模型,例如,使用Transformer模型结合分层注意力机制或稀疏注意力机制来处理大规模表。
  2. 查询优化:在生成SQL时,优化查询的执行效率,特别是在涉及大规模数据库时。这可能包括使用索引、投影和分页等技术来减少查询的复杂度。
  3. 数据分块:将大规模表分割成小块进行处理,以减少内存占用和提高计算效率。例如,使用滑动窗口技术逐块处理表数据。
  4. 模型并行化:在多GPU或多节点环境中并行化模型训练和推理,以加速大规模数据处理。
  5. 预训练和微调:使用大规模预训练语言模型进行初步的特征学习,然后在特定任务的数据集上进行微调,以适应大规模表和数据库的形态。

文本到SQL解析综述:概念、方法与未来方向

鲍文清,宾远辉,王立汉,杨敏阳,李金阳,李炳华,耿瑞莹,曹荣宇,孙健,罗思,黄飞,李永斌

摘要:文本到SQL解析是一项重要且具有挑战性的任务。文本到SQL解析的目标是将自然语言(NL)问题转换为基于关系数据库提供的证据的结构化查询语言(SQL)。早期数据库社区的文本到SQL解析系统通过大量的人工工程和用户与系统的交互取得了显著进展。近年来,深度神经网络通过神经生成模型显著推进了这项任务,这些模型能够自动从输入的NL问题学习映射函数到输出的SQL查询。随后,大型预训练语言模型将文本到SQL解析任务的最新水平提升到了新的高度。在这篇综述中,我们全面回顾了深度学习在文本到SQL解析中的应用。首先,我们介绍了可以分类为单轮和多轮的文本到SQL解析语料库。其次,我们提供了预训练语言模型和现有文本到SQL解析方法的系统性概述。第三,我们向读者展示了文本到SQL解析所面临的挑战,并探索了该领域的一些潜在未来方向。

关键词:文本到SQL解析,语义解析,自然语言理解,表理解,深度学习

引言

随着电子设备的普及,表格已成为存储来自各种资源(例如网页、数据库和电子表格)的大型结构数据的主流方式,这些数据以网格状格式的行和列表示,以便用户可以轻松查询模式并从中发现洞察力。尽管表格可以通过熟练的专业人员通过手工制作的结构化查询语言(SQLs)高效访问,但自然语言(NL)接口可以促进更广泛的非技术人员访问无处不在的关系数据。因此,文本到SQL解析,旨在将NL问题转换为机器可执行的SQLs,已引起工业界和学术界的显著关注。它可以赋予非专家用户轻松查询表格的能力,并在智能客户服务、问答和机器人导航等各种现实生活中的应用中发挥核心作用。

早期数据库社区中的文本到SQL解析工作[2]在大量人工工程和与系统的用户交互成本方面取得了显著的进步。设计针对各种场景或领域的SQL模板是困难的,如果不是不可能的话。近年来,深度学习的最新进展和大规模训练数据的可用性显著提高了文本到SQL解析,由神经生成模型实现。典型的神经生成方法是通过编码器-解码器方案自动从输入的自然语言问题到输出的SQL映射函数的序列到序列(Seq2Seq)模型。关键思想是构建一个编码器来理解输入的自然语言问题和相关的表模式,并利用基于语法的语神经网络解码器来预测目标SQL。基于Seq2Seq的方法已成为文本到SQL解析的主流,主要是因为它们可以以端到端的方式进行训练,并减少了对专业领域知识的依赖。

到目前为止,已经开发了各种神经生成模型来分别改进编码器和解码器。在编码器方面,广泛使用了几种通用神经网络来全局推理自然语言查询和数据库模式。IRNet[4]分别用双向LSTM[5]和自注意力机制[6]对问题和表模式进行编码。RYANSQL[7]采用具有密集连接的卷积神经网络[8]进行问题/表模式编码。随着预训练语言模型(PLMs)的进步,SQLova[10]首次提出利用预训练的语言模型(PLMs),如BERT[11]作为基础编码器。RATSQL[12]、SADGA[13]和LGESQL[14]采用图神经网络来编码数据库模式与给定问题之间的关系结构。在解码器方面,包括基于草图的生成方法和基于生成的生成方法在内的两类SQL生成方法。具体来说,基于草图的生成方法[15,10,16]将SQL生成过程分解为子模块,每个子模块对应于要填充的预测槽的类型。这些子模块随后被收集起来以生成最终的SQL查询。为了提高生成的SQL逻辑形式的性能,

基于生成的生成方法[4, 12, 14, 17]通常通过使用LSTM[5]解码器,在深度优先遍历顺序中重构SQL查询为一个抽象语法树。

同时,PLMs在增强文本到SQL解析方面已被证明是强大的,并产生了最先进的性能,这得益于大规模语料库中的丰富语言知识。然而,正如以往的工作所揭示的,表格和普通文本的分布之间存在内在差异。直接对在大规模普通文本中训练的PLMs进行微调,以适应下游文本到SQL解析,会阻碍模型有效地建模所讨论的关系关系结构/模式,从而导致次优的性能。当前研究试图通过直接编码表格和文本来缓解上述限制,它们在下游文本到SQL解析任务上显示出改进的结果。例如,TaBERT[18]分别使用掩码语言建模(MLM)和掩码列预测(MCP)联合编码文本和表格,该模型是在一个包含大量表格及其相应英语上下文的庞大语料库上训练的。TaPas[19]通过使用额外的位置嵌入来编码表格,扩展了BERT[11]。此外,应用了两个分类层来选择表格单元格和在表格单元格上操作的聚合操作符。Grappa[20]引入了一个语法增强型预训练框架,用于表格语义解析,该框架通过鼓励模型捕获可以归因于逻辑形式组成部分的表格模式项来探索表格语义解析中的模式链接。Grappa实现了文本到SQL解析的最先进性能。

本调查的贡献。本手稿旨在提供对图1所示的文本到SQL解析文献的全面回顾。通过提供这项调查,我们希望为有用且工业界社区提供帮助。首先,我们介绍实验数据集,并提出一个分类体系,将代表性的文本到SQL方法进行分类。此外,我们向读者介绍了chao解析,并探讨了这个领域的一些潜在未来方向。

本手稿的组织结构如下。在第2节中,我们正式定义了文本到SQL解析,并介绍了官方评估指标。第3节介绍了主要场景(单轮和多轮话语)以及相应的文本到SQL解析数据集。我们在第4节和第5节分别介绍了文本到SQL解析的代表预训练、编码和解码技术。第6节总结了本手稿并概述了未来的发展方向,随后是参考文献。

2 背景

在本节中,我们首先提供文本到SQL解析的正式问题定义。然后,我们描述了用于验证文本到SQL解析器的官方评估指标。最后,我们介绍了用于训练神经文本到SQL解析器的基准语料库。

文本到SQL(T2S)解析旨在将数据库项下的自然语言(NL)问题转换为相应的结构化查询语言(SQL),该SQL可以针对关系型数据库执行。如表1所示,我们提供了正式的符号来规范任务定义。通常,现有的T2S解析方法可以分为单轮(上下文独立)和多轮(上下文依赖)设置。正式地,对于单轮T2S解析设置,给定一个NL问题Q和相应的数据库模式S=〈T,C〉S=〈T,C〉,我们的目标是生成一个SQL查询Y。具体来说,问题Q=Q= {q1,q2,⋯ ,q∣Q∣}{q1​,q2​,⋯,q∣Q∣​}是一个包含∣Q∣∣Q∣个标记的序列。数据库模式由∣T∣∣T∣个表T={t1,t2,⋯ ,t∣T∣}T={t1​,t2​,⋯,t∣T∣​}和∣C∣∣C∣列C={c1,c2,⋯ ,c∣C∣}C={c1​,c2​,⋯,c∣C∣​}组成。每个表titi​由其名称描述,包含多个单词[ti,1,ti,2,⋯ ,ti,∣ti∣][ti,1​,ti,2​,⋯,ti,∣ti​∣​]。表titi​中的每列cjticjti​​由单词(短语)[cj,1ti,cj,2ti,⋯ ,cj,∣cjti∣ti][cj,1ti​​,cj,2ti​​,⋯,cj,∣cjti​​∣ti​​]表示。我们将整个输入表示为X=〈Q,S〉.X=〈Q,S〉.

对于多轮T2S解析设置,我们的目标是将一系列自然语言问题转换为相应的SQL查询,其中自然语言问题可能包含省略号和指代前文NL问题的代词。形式上,设U={U1,…,UT}U={U1​,…,UT​}表示具有T轮的发言序列,其中Ut=(Xt,Yt)Ut​=(Xt​,Yt​)代表第t轮发言,它是自然语言问题XiXi​和SQL查询YiYi​的组合。此外,还有相应的数据库模式SS。在第t轮,多轮T2S解析的目标是在当前自然语言问题Xt、历史发言{Ui}i=1t−1{Ui​}i=1t−1​和数据库模式SS的条件下生成SQL查询YtYt​。

2.2 评估指标

资源用于学术比较生成的SQL查询与基准QL答案。具体来说,有两种类型的评估指标用于评估文本到SQL执行准确性(EX)[23]。对于多轮T2S设置,通常采用问题匹配准确性(QM)和交互匹配准确性(IM)[31]。

2.2.1 单轮T2S评估

精确集匹配准确性(EM)精确集匹配准确性(无值)是通过比较真实SQL查询和预测SQL查询来计算的。真实和预测的查询都被解析成标准化的数据结构,具有以下SQL 例如SELECT、GROUP BY、WHERE、ORDER BY、关键词(包括所有SQL关键字,不包括列名和运算符)。

我们仅当所有SQL子句通过一组比较正确时,才认为预测的SQL查询是正确的:

score(Y^,Y)={1,Y^=Y0,Y^≠Y(1)score(Y^,Y)={1,0,​Y^=YY^=Y​(1)

其中 Y^={(k^i,v^i),i∈(1,m)}Y^={(k^i,v^i),i∈(1,m)} 和 Y={(ki,vi),i∈Y={(ki,vi),i∈ (1,m)}(1,m)} 表示预测的SQL组件集

图1. 文本到SQL解析数据集的全面概述、预训练表格语言模型、下游文本到SQL解析方法。

表1 本手稿中使用的符号。

Symbol| Description
Sequence of database schema tokens, which consists of tables and columns.
Sequence of table tokens.
Sequence of column tokens.
Sequence of question tokens.
Question token.
Table token.
Column token.
Length of tokens.
c∥∥XYc∥∥XY​Input of text-to-SQL model, which consists of question and schema.
YOutput of text-to-SQL model, referring to SQL query.
IInput sequence of encoder, which consists of special token, question token and schema tokens.
[CLS],[SEP]Special token of PLMs.
uGraph node embedding vector.
rRelation embedding vector.
WKWeight matrix of key vectors, which are used to calculate the attention score.
WQWeight matrix of query vectors, which are used to calculate the attention score.

查询和真实查询分别。这里,k代表一个SQL子句,v是相应的值。m是组件数量。正式地,表2是T2S数据集的统计数据。“#”表示相应单元的数量。

DatasetSingle-TurnMulti-TurnCross-domainRobustnessLanguages#Question#SQL#DB#Domain#Table
GenQuery[2][2]en880247167
Scholar[21]en81719311
WikiSQL[22]en8065477840265211
Spider[23]en1018156932001381020
Spider-SYN[24]en79904525166-876
Spider-DK[25]en53528310-48
Spider-SSP[26]en----
CSpider[27]zh1018156932001381020
SQUALL[27]en15620112762108-2108
DuSQL[28]zh2379723797200-820
ATIS[29,30]en54189471127
SparC[31]4298127262001381020
CoSQL[32]en en zh3007155982001381020
CHASE[33]548917940280-1280

精确集匹配准确率是通过以下公式计算的:

EM=Σn=1Nscore(Y^n,Yn)N,(2)EM=NΣn=1N​score(Y^n​,Yn​)​,(2)

其中N表示样本总数。EM通过严格比较SQL之间的差异来评估模型性能,但人类对SQL的注释往往存在偏差,因为一个自然语言问题可能对应多个SQL查询。

执行准确性(EX)是通过比较在测试集发送的数据库内容上执行真实SQL查询和预测SQL查询的输出结果来计算的。我们只认为预测查询是正确的,如果执行预测SQL查询的结果V^V^与真实SQL查询V相同:

score(V^,V)={1,V^=V0,V^≠V(3)score(V^,V)={1,0,​V^=VV^=V​(3)

与EM类似,EX的计算公式是:

EX=Σn=1Nscore(Y^n,Yn)N,(4)EX=NΣn=1N​score(Y^n​,Yn​)​,​(4)

为了避免由于在有限大小数据库上执行SQL而导致的假阳性和假阴性,测试套件执行精度[34]将执行扩展到每个模式的多个数据库实例。具体来说,测试套件从随机生成的数据库中提炼出一个小型数据库,以实现高代码覆盖率。通过这种方式,我们可以提供语义精度的最佳近似。

2.2.2 多轮T2S评估

给定一个多轮设置,总共有P个问题序列,每个序列包含O轮和总共M=P×OM=P×O个问题。

问题匹配精度(QM)问题匹配精度是计算所有问题的EM分数。只有当所有预测的SQL子句都正确时,其值才为1。我们首先按照以下方式计算每个问题的EM分数:

score(Y^,Y)={1,Y^=Y0,Y^≠Y(5)score(Y^,Y)={1,0,​Y^=YY^=Y​(5)

其中Y和Y分别是预测和真实SQL查询。然后,通过以下公式计算问题匹配准确率:

QM=Σm=1Mscore(Y^m,Ym)M,(6)QM=MΣm=1M​score(Y^m​,Ym​)​,​(6)

其中M表示总问题数。

交互匹配准确率(IM)交互匹配准确率是计算所有交互(问题序列)的EM分数。如果交互内的所有问题都是正确的,则每个交互的分数为1。正式地,每个交互的分数定义如下:

interaction={1,∏i=1oscore(Y^i,Yi)=10,∏i=1oscore(Y^i,Yi)=0(7)interaction=⎩⎨⎧​1,0,​i=1∏o​score(Y^i​,Yi​)=1i=1∏o​score(Y^i​,Yi​)=0​(7)

其中o是每次互动的轮数。然后,IM得分通过以下公式计算:

IM=Σp=1PinteractionpP.(8)IM=PΣp=1P​interactionp​​.(8)

其中P是交互总数的数量。

2.3 数据集

高质量的语料库对于学习和评估文本到SQL(T2S)解析系统至关重要。在下文中,我们将广泛使用的两个主要类别的数据集进行总结:单轮T2S语料库包含单轮(独立)问题,以及多轮T2S语料库包含多轮顺序问题。

2.3.1 单轮T2S语料库

GenQuery The GenQuery[2]数据集是一个包含880个自然语言问题的集合,用于查询美国地理事实数据库(称为Geobase)。在Geobase上构建了关系数据库模式和针对700个问题的SQL查询。之后,剩余的自然语言问题由[21]进一步注释,遵循广泛使用的600/280训练/测试分割[35]。

Scholar The Scholar[21]数据集是一个包含816个自然语言问题和SQL查询的注释集合,其中600个自然语言问题用于训练,216个问题用于测试。提供了一个包含学术论文的学术数据库来执行SQL查询。

WikiSQL 原始WikiSQL[22]数据集是一个包含80,654对手工制作的自然语言问题和SQL查询对的集合,以及从维基百科上的24,241个HTML表格中提取的相应SQL表。特别是,对于每个选定的表格,根据SQL模板和规则生成六个SQL查询。然后,对于每个SQL查询,使用亚马逊机械土耳其的众包模板粗略地注释一个自然语言问题。WikiSQL数据集包含的实例和表格比ATIS[29, 30]、GenQuery[2]和Scholar[21]要多得多。此外,WikiSQL数据集比之前的T2S语料库更具挑战性,因为WikiSQL涵盖了大量的表格,而文本到SQL解析器应该能够泛化到不仅新的查询,还包括新的表结构。WikiSQL中的实例可以随机分割成训练/验证/测试集,使得每个表格恰好参与一个集。

蜘蛛侠[23]数据集是跨领域文本到SQL解析的大规模基准测试。蜘蛛侠包含10,181个自然语言问题(NL)和5,693个独特的SQL查询,覆盖了200个数据库,属于138个不同的领域。与之前包含同一领域表格的T2S数据集不同,蜘蛛侠数据集包含了跨越多个数据库和领域的复杂NL问题和SQL查询。此外,蜘蛛侠数据集中的SQL查询可以根据SQL查询的难度进一步分为四个级别:简单、中等、困难、超困难,这可以用来更好地评估模型在不同查询上的性能。最后,蜘蛛侠数据集被随机分割成7,000个实例用于训练,1,034个实例用于开发,以及2,147个实例用于测试。

蜘蛛侠-同步[24]数据集是蜘蛛侠[23]的另一个挑战性变体,它通过用相应的同义词替换蜘蛛侠[23]中的表结构相关词汇来修改NL问题。这样,消除了NL问题中的单词与表结构中的标记之间的显式对齐,这使得表结构链接对于文本到SQL解析来说更加具有挑战性。蜘蛛-同步[24]由7000个训练实例和1034个开发实例组成。请注意,由于原始的蜘蛛[23]没有公开发布测试集,因此蜘蛛-同步[24]没有测试集。

蜘蛛-DK 蜘蛛-DK[25]数据集是蜘蛛[23]开发集的一个挑战性变体,可以用来更好地调查现有文本到SQL模型的泛化能力,以理解领域知识。蜘蛛-DK是通过向蜘蛛开发集中的某些自然语言问题添加反映现实世界问题概括的领域知识来构建的。具体来说,它包含535对自然语言-SQL,其中265对自然语言-SQL通过添加领域知识进行了修改,而其余270对自然语言-SQL保持与原始蜘蛛数据集相同。值得注意的是,蜘蛛-DK比原始蜘蛛开发集小,因为并非每个实例都可以轻松地修改以添加领域知识。

蜘蛛-SSP 蜘蛛-SSP[26]指的是蜘蛛[23]数据集的组合泛化版本。这种能够泛化到训练过程中观察到的元素的新组合的能力被称为组合泛化。基于目标最大复合差异(TMCD)[26],提出了蜘蛛数据集的新训练和测试分割。蜘蛛-SSP包含3282个训练实例和1094个测试实例,数据库在训练和测试实例之间共享。

CSpider CSpider[27]数据集是蜘蛛[23]的中文变体,通过将蜘蛛中的英文自然语言问题翻译成中文。与蜘蛛类似,CSpider包含与蜘蛛数据集中的相同问题-SQL对。

SQUALL SQUALL[36]数据集是WIKITABLEQUESTIONS[37]的扩展,它通过提供手工制作的注释来丰富WIKITABLEQUESTIONS训练集中的11,276个样本,包括SQL查询以及标记好的NL问题词之间的对齐以及相应的SQL片段。总共,SQUALL包含15,620个实例,分为9,030个实例用于训练,2,246个实例用于验证,以及4,344个实例用于测试。

DuSQL DuSQL[28]数据集是一个大规模的中国语语料库,用于跨领域文本到SQL解析,它包含了23,797个NL-SQL对以及200个数据库和813个表,这些属于超过160个领域。与大多数以前手动标注的语料库不同,DuSQL中的SQL查询是通过语法自动生成的生产规则自动生成的。

2.3.2 多轮T2S语料库

ATIS 原始ATIS[29, 30]数据集是一系列用户问题,要求在航空旅行查询系统中获取航班信息,以及一个包含城市、机场、航班等信息的关系数据库。大多数发布的问题可以通过使用SQL查询查询数据库来回答。由于原始的SQL查询使用IN子句执行效率低下,因此[21]进一步修改了SQL查询,同时保持输出不变。总共有5,418条自然语言(NL)话语和相应的可执行的SQL查询,其中4,473条用于训练,497条用于开发和448条用于测试。

SParC SParC[31]数据集是一个大规模的跨领域上下文依赖的文本到SQL语料库,包含大约4.3k个问题序列,包括12k+个问题-SQL对以及200个属于138个领域的复杂数据库。SParC建立在Spider[23]之上,每个问题序列都是基于Spi-der中的一个问题,并通过提出相关问题来构建。在获取了顺序问题后,会对每个问题手动标注一个SQL查询。遵循Spider的方法,SParC被划分为训练、开发和测试集,比例为7:1:2,这样每个数据库只出现在一个集中。

CoSQL CoSQL[32]数据集是在WOZ设置下创建的首个大规模跨领域会话文本到SQL数据集,包含大约3k个对话[5,包括30k+轮对话和10k个对话,以及200个属于138个领域的复杂数据库。特别是,每个对话模拟了一个DB查询场景,其中作为DB用户的注释者发出NL问题以检索带有SQL查询的答案。顺序NL问题可以用来澄清历史上的模糊问题或通知用户无法回答的问题。与Spider[23]和SParC[31]类似,CoSQL也被划分为训练、开发和测试集,比例为7:1:2,这样每个数据库只出现在一个集中。

CHASE The CHASE[33]数据集是一个大规模的上下文依赖中文文本到SQL语料库,包含5,459个连贯的问题序列,包括17,940个问题和它们的SQL查询。这些上下文依赖的问题-SQL对跨越了280个关系数据库。CHASE有变体:CHASE-C和CHASE-T。具体来说,CHASE-C从DuSQL[28]收集了120个中文关系数据库,并从头开始创建了2003个问题序列及其SQL查询。CHASE-T是通过将3456个英文问题序列和160个数据库从SParC[31]翻译成中文来创建的。CHASE数据集被分为3,949/755/755个样本用于训练、验证和测试,以便数据库只出现在一个集合中。

3 单轮T2S解析方法

深度学习长期以来一直是文本到SQL解析领域的主导技术,提供了最先进的性能。在这篇手稿中,我们提供了基于神经网络的文本到SQL解析方法的全面回顾。典型的神经文本到SQL方法通常基于序列到序列(Seq2Seq)模型[3],其中设计了一个编码器来捕捉自然语言问题的语义,使用实值向量,并提出了一个解码器来根据编码后的问题表示生成SQL查询标记。如表3所示,我们将下游文本到SQL解析方法根据编码器和解码器分为几个主要类别。接下来,我们将详细描述文本到SQL解析方法的每个类别。

3.1 编码器

编码器的第一个目标是学习输入表示,同时表示自然语言问题(NL)和表格模式表示。编码器的第二个目标是进行结构建模,因为文本到SQL解析任务本质上是一个高度结构化的任务。

3.1.1 输入表示

如第2.1节所述,对于文本到SQL解析来说,需要考虑两种类型的输入信息:自然语言问题和表格模式,它们由编码器联合表示。通常,输入表示学习方法可以分为两大类,包括基于LSTM的方法[5, 49]和基于Transformer的方法[6]。

基于LSTM的方法受到文本表示学习显著成功的启发,广泛用于学习上下文化的表示,然后将其传递给解码器以生成SQL查询。TypeSQL[38]、Seq2SQL[22]和SyntaxSQLNet[39]研究独立的问答对,并采用双向LSTM(Bi-LSTM)来学习输入序列的语义表示,该输入序列是自然语言问题和列名的连接。IRNet[4]通过使用两个独立的Bi-LSTM编码器来编码自然语言问题和表格模式。特别是,这两个Bi-LSTM编码器以词嵌入和相应的模式链接类型嵌入作为输入,其中模式链接类型嵌入是通过应用n-gram字符串匹配来识别自然语言问题中提到的表和列名获得的。

基于变压器的方法近年来,基于变压器的模型在多个自然语言处理(NLP)任务的文本表示学习上展现了最先进的性能。还有几种文本到SQL解析方法,如SQLova[10]和SLSQL[50],它们扩展了BERT[11]和RoBERTa[51]来编码NL问题以及表和列标题。通常,基于变压器的编码器遵循三步程序。

首先,将NL问题和数据库模式连接起来,作为编码器的整体输入序列。正式地,输入序列可以表述为II = ([CLS];q1;…;q∣Q∣;[SEP];s1;[SEP];…;[SEP];s∣T∣+∣C∣)([CLS];q1​;…;q∣Q∣​;[SEP];s1​;[SEP];…;[SEP];s∣T∣+∣C∣​),其中[CLS]和[SEP]表示预定义的特殊标记,如[11]中所述。通过依次连接当前问题、对话历史和模式项,可以将输入序列扩展到多轮设置[52]。

其次,预训练的语言模型(PLMs),如BERT[11]和RoBERTa[51],可以通过增强编码器的泛化能力和捕捉长期标记依赖性,显著提高解析准确性。通常,对于问题标记,BERT[11]或RoBERTa模型中Transformer块最后一层的输出隐藏状态被视为问题标记的上下文表示。对于每个数据库模式项,其前一个特殊标记[SEP]的输出隐藏状态被视为表或列标题表示。

第三,利用PLM顶部的灵活神经架构可以进一步增强编码器的输出表示,具有强大的表达能力。例如,SQLova[10]和SDSQL[16]在BERT[11]的输出表示顶部叠加了两个Bi-LSTM层。GAZP[53]在Bi-LSTM层顶部提出了一个额外的自注意力层[6]来计算中间表示。RYANSQL[7]依次在BERT[11]顶部使用了带有密集连接的卷积神经网络[54]和一个缩放的点积注意力层[6]来对齐问题标记与列。值得注意的是,卷积神经网络的参数在自然语言问题和列之间是共享的。BRIDGE[43]使用BERT[11]和轻量级后续层(即两个Bi-LSTM层)对输入序列进行编码。此外,还应用了密集查找特征来表示表模式元数据信息,如主键、外键等。

表3

代表性的下游文本到SQL解析方法。EM表示在Spider[23]数据上最新提交的确切匹配准确率。列表示最重要的架构决策(SL- Schema Linking, DSL- Domain Specific Language)。

ModelSLLSTMEncoder TransformerGNNLSTMTransformerGrammarDecoder Sketch DSLConstrained DecodingRe-RankingEM DevEM TestEX DevEX Test
Seq2Seq baseline[23] TypeSQL[38]√ ↓↓✓✓4.8
SyntaxSQLNet[39]GNN[40]
EditSQL[41]□□53.4
Bertrand-DR[42]IRNet[4]✓✓
✓✓✓✓
RYANSQL[7]BRIDGE[43]✓✓
70.368.3
RATSQL[12]
SMBOP[44]75.071.1
ShadowGNN[45] RaSaP[17]✓✓70.0
SADCa[13] DT-Fixup[46]
T5-Picard[47] LGESQL[14]✓✓79.375.1
S2SQL[48]

这些元数据特征进一步通过前馈层与BERT[11]编码的schema组件融合。

3.1.2 结构建模

开发大型跨领域数据集,如WikiSQL[22]和Spider[23],导致了处理未见过的表结构的现实通用挑战。每个自然语言问题对应一个多表数据库模式。训练集和测试集不共享重叠的数据库。通用的挑战要求文本到SQL解析方法能够将自然语言问题和表结构编码成具有强大表达能力的表示,从三个方面进行。

● 首先,编码器应能够识别用于指代表和列的自然语言标记,无论是隐式还是显式,这被称为将自然语言问题中的实体提及与提到的表或列对齐的架构链接结构。

● 其次,编码后的表示应意识到表结构信息,如主键、外键和列类型。

● 第三,编码器应能够感知自然语言问题中复杂的变体,即问题结构。

图是表达文本到SQL解析任务中复杂结构的最佳形式。最近,已经提出了几种基于图的算法[40, 12, 14]来推理自然语言问题标记和表实体,并模拟复杂的输入表示。这些方法将自然语言问题标记和模式项视为多类型节点,节点之间的结构关系(边)可以预先定义,以表达多样化的模式内关系、问题-模式关系和问题内关系。

如图2所示,模式链接旨在识别自然语言问题中列、表和条件值的引用[55]。文本到SQL解析器应学会通过将问题标记与模式匹配来检测自然语言问题中提到的表或列名,然后利用识别的表或列生成SQL查询。直观地说,模式链接促进了跨领域通用性和复杂的SQL生成,这两者一直被视为

图2. 在[12]中使用的示例模式链接结构。

当前文本到SQL解析的瓶颈。[50]证明了更准确的模式链接确实能带来更好的文本到SQL解析性能。传统的模式链接可以通过规则或字符串匹配来提取。例如,IRNET[4]直接将提取到的链接信息作为输入。SDSQL[16]利用提取到的链接信息作为多任务学习的标签。IESQL[56]采用条件随机场(CRF)层[57]处理问题片段,将链接任务转化为序列标注任务。然而,上述模式链接方法无法捕捉自然语言问题与表模式之间的全面语义关系。另一种流行的方法[41]提出了跨注意力,以隐式学习自然语言问题和模式表示之间的关系。

最近,基于图的链接方法[12, 44,17,45,14]被提出来推理自然语言问题标记和模式实体,并模拟复杂的输入表示。这些方法将自然语言问题标记和模式项目视为多类型节点,节点之间的结构关系(边)可以预先定义,以表达多样化的内部模式关系、问题-模式关系和内部问题关系。特别是,在RATSQL[12]中,图是基于两种关系构建的(即基于名称的链接和基于值的链接,其中基于名称的链接指的是同一自然语言问题中表/列名称的部分或精确出现,而基于值的链接指的是当自然语言问题提到模式中出现的任何值以及所需的SQL时发生的问句-模式对齐。然后提出了关系感知的自注意力机制[58]用于图表示学习,它利用对构建图的全球推理。具体来说,给定一系列标记表示,关系感知的自注意力计算每对标记表示之间的标量相似度得分$$e_{ij},\propto,u_{i}W_{Q}\left(u_{j}W_{K}+r_{ij}^{K}\right)\text{,其中},u_{i},\text{和},u_{j},\text{表示图节点,而项rijKrijK​表示一个嵌入,代表u;和u;之间从一组可能的关系的封闭集合中。为了增强模型对未见或罕见模式的泛化能力,ShadowGNN[45]通过抽象自然语言问题和SQL查询的表示来减轻领域信息的影响,在应用关系感知的图计算之前[12]。此外,已经有几项工作致力于解决文本到SQL解析的异构图编码挑战。LGESQL[14]从节点为中心的图构建一个以边为中心的图,如RATSQL[12]中所示,它明确考虑了边的拓扑结构。通过考虑节点之间的连接和有向边的拓扑结构,信息传播效率更高。设计了两种关系图注意力网络(RGANs)[59],分别用于模拟以节点为中心的图和以边为中心的图的结构,将输入的异构图映射成标记表示。

模式结构 利用关系图神经网络(GNN)来模拟关系数据库中的关系,并将其节点信息传播到邻近节点是直观的。基于GNN的方法有助于聚合邻近节点的特征信息,使获得的输入表示更加强大。模式-GNN[40]首先通过添加三种类型的边:外键-主键关系、表内列关系和表内列关系,将数据库模式转换为图。构建的图根据输入问题进行软剪枝,然后输入到门控GNNs[60]中学习模式表示,同时考虑到全局模式结构。此外,全局-GNN[61]提出了一种类似的图卷积网络(GCN),用于学习模式表示,在每个模式节点上计算基于问题的相关性概率。一些高级研究,如RAT-SQL[12]和LGESQL[14],也学习模式结构作为图中唯一的边,证明了模式结构对于文本到SQL解析的不可或缺性。

问题结构S2SQL[48]研究了文本到SQL编码器中语法的重要性,并提出了一种灵活且稳健的注入方法。它利用了三种归纳依赖类型,即前向、后向、无关系,通过堆叠多层变压器来隐式地模拟复杂的问题结构。此外,还采用了解耦约束来诱导多样化的关系嵌入。SADGA[13]根据NL问题序列的依赖结构和上下文结构构建问题图,并根据模式结构构建模式图。具体来说,三种不同的关系嵌入方式分别对应于不同的关系类型,这些嵌入方式有助于提高问题结构的可读性和可理解性。

图3. 在[15]中使用的SQL草图示例。

定义了不同类型的链接,用于构建图表:一阶词依赖(即两个连续单词之间的关系)、二阶词依赖,以及基于解析的依赖,它捕捉自然语言问题词之间的句法关系。然后,提出了一种结构感知的聚合方法,通过两阶段链接来捕捉构建图表之间的对齐。统一表示是通过通过基于门控的机制聚合信息来学习的。

3.2 解码器

现有Text-to-SQL解析模型中使用的解码器可以分为两类:基于草图的解码器和基于生成的方法。在本节中,我们提供了两种类型解码器架构的全面概述。

3.2.1 基于草图的解码器

基于草图的解码器将SQL生成过程分解为子模块,例如SELECT列、AGG函数、WHERE值。例如,SQLNet[15]采用了SQL草图。标记SELECT、WHERE和AND指示SQL关键词,以下组件指定了要填充的预测槽类型。通过采用空标记或聚合操作符之一(如SUM和MAX)来执行考试方法;VALUE槽需要用问题的子字符串填充;COLUMN槽需要用列名填充;OP槽需要用操作符(如>、<、=)填充)。这些槽随后被收集在一起并解释以生成最终的SQL查询。每个槽位都有独立的模型,它们不共享可训练参数,并且负责独立预测最终SQL的一部分。具体来说,对于COLUMN槽位,在对特定列进行预测时,应用了列注意力机制[15]。对于OP槽位,预测其值是一个三分类任务(>、<、=)。对于VALUE槽位,[15]采用Seq2Seq结构生成NL问题的子字符串。

SQLova[10]和SDSQL[16]修改了[15]中使用的基于语法的草图。所提出的基于草图的解码器由六个预测模块组成,包括WHERE-NUMBER、WHERE-COLUMN、SELECT-COLUMN、SELECT-AGGREGATION、WHERE-OPERATOR和WHERE-VALUE。每个动作的具体作用如下:

● SELECT-COLUMN从给定的NL问题中识别“SELECT”子句中的列。

● SELECT-AGGREGATION识别给定SELECT列预测的聚合操作符。

WHERE-NUMBER预测SQL查询中“WHERE”条件的数量。

● WHERE-COLUMN计算给定NL问题中每列生成的概率。

● WHERE-OPERATOR在三个可能的选择(>、=、<)中识别最可能的操作符,基于where列预测。

● WHERE-VALUE识别NL问题中哪些标记对应于给定“WHERE”列的条件值。

在SQL查询生成阶段,使用执行引导的解码策略[62]来排除输出候选中的不可执行的部分SQL查询。TypeSQL[38]通过减少模块数量进一步改进了上述方法。TypeSQL选择将select-column模块和where-column模块合并为一个模块,因为它们的预测程序相似,且where-column模块依赖于select-column模块的输出。此外,where-operator和where-value模块被合并在一起,因为这两个模块的预测都依赖于where-column模块的输出。通常,基于草图的ap方法快速且保证符合正确的SQL语法规则。然而,这些方法很难处理复杂的SQL语句,如多表JOIN、嵌套查询等。因此,基于草图的方法在WikiSQL[22]数据集上很受欢迎,但在涉及复杂SQL的Spider[23]数据集上应用起来困难。只有RYANSQL[7]通过递归应用草图方法实现了复杂SQL生成。

3.2.2 基于生成的方法

另一方面,基于生成的方法基于Seq2Seq模型来解码SQL,这对于复杂SQL场景比基于草图的方法更可取。例如,Bridge[43]使用基于LSTM的指针生成器[63],它具有多头注意力机制和复制机制作为解码器,该解码器以编码器的最终状态开始。在每个解码步骤中,解码器执行以下一个动作:从词汇表V生成一个标记,从问题Q复制一个标记,或者从数据库模式S复制一个模式组件。

由于上述基于生成的方法可能无法生成语法正确的SQL查询,一些高级方法[4, 12]在深度优先遍历顺序[65]中生成SQL作为抽象语法树(AST)[64]。特别是,这些方法采用LSTM解码器执行三种类型的动作,要么将最后生成的节点扩展为一个语法规则,称为APPLY-RULE动作,要么在完成叶子节点时从模式中选择一个列/表,分别称为SELECT-COLUMN动作和SELECT-TABLE动作。这些动作可以构建目标SQL查询的相应AST。具体来说,APPLY-RULE将一个产生规则应用于当前SQL查询的推导树,并用语法规则扩展最后一个生成的节点。概率分布是通过softmax分类层计算预定义的抽象语法描述语言(ASDL)规则的。SELECT-COLUMN和SELECT-TABLE通过直接复制数据库模式中的表和列名,通过复制机制分别选择数据库模式中的一个列c或一个表t来完成一个叶子节点。

还有一些工作[46, 66, 67]在解码过程中忽略了SQL语法,通过利用强大的大规模预训练语言模型如T5[68],它在文本到SQL训练集上进行了微调,用于SQL查询生成。正式地,基于变压器的解码器遵循标准的文本生成过程,在步骤t产生隐藏状态,以生成第t个标记,如[6]所述。然后对学习到的隐藏状态应用仿射变换,以获得目标词汇表V中每个词的预测概率。此外,如[42]所示,在某些情况下,尽管生成的SQL在候选列表的波束搜索中是最好的,但它并不是候选列表的顶部。因此,引入了一种判别性重排名(Re-Ranking)策略,从文本到SQL解析器预测的候选列表中提取最佳SQL查询。重排名被构建为一个与模式无关的BERT微调分类器,并利用分类器的概率作为查询重新排名的得分。一些研究[4, 45]引入了一个领域特定语言(DSL),作为中间表示来桥接自然语言问题和SQL查询。这些方法揭示了当结果SQL被处理成树状结构时,自然语言中传达的含义与SQL中的实现细节之间存在不变的不匹配。因此,DSL的关键思想是省略中间表示的实现细节。IRNet[4]提出了一种基于语法的神经模型,用于生成一个作为中间表示的SemQL查询,以桥接自然语言问题和SQL查询,然后根据领域知识从生成的SemQL查询中推断出SQL查询。此外,Picard[47]通过增量解析提出了一个受限解码策略,这有助于解析器通过在每个解码步骤中拒绝不合适的标记来识别有效的目标序列。

4 多轮T2S分割方法

与单轮T2S设置相比,多轮T2S设置强调使用上下文信息(历史信息),这些信息可以整合到编码器和解码器中。接下来,我们描述如何利用上下文信息。

4.1 编码器

编码器处理上下文信息以进行输入表示学习。此外,在编码阶段还会考虑链接结构和模式结构。

图4. 多轮T2S解析的不同上下文自然语言问题编码策略[69]。

4.1.1 多轮输入表示

关于多轮表示学习,以往的工作主要集中在两个方面,包括(i) 如何学习高质量的上下文问题和模式表示,以及(ii) 如何有效编码历史SQL查询。

对于上下文问题和模式表示学习,如图4所示,[69]研究了不同上下文信息编码方法对多轮T2S解析性能的影响,包括(a) 将每个问题序列中的所有自然语言问题作为输入,(b) 使用轮级编码器处理每个问题,以及(c) 设计一个门控机制来平衡每个历史问题的重要性。通常,EditSQL[41]分别使用两个独立的Bi-LSTM[5]来编码自然语言问题和表模式。具体来说,对于每轮的问题,EditSQL首先利用一个Bi-LSTM来编码问题标记。然后将输出隐藏状态输入到列标题嵌入上的点积注意力层[70]。多轮问题之间的关系由轮次注意力机制捕获。在当前轮次,对问题标记进行点积注意力编码。计算输出隐藏状态的历史,并将之前问题表示的加权平均值添加到当前问题表示中,形成上下文感知的问题表示。对于每个列标题,表名和列名被连接起来并传递给一个Bi-LSTM层。然后输出隐藏状态被送入自注意力层[6]以更好地捕捉表模式如外键的内部结构。此外,自注意力向量和问题注意力向量被连接起来并送入第二个Bi-LSTM层以获得最终的列标题表示。[71]学习了一个上下文记忆控制器来通过保持序列自然语言问题的累积意义和使用外部内存来表示上下文信息来维护记忆。[72]将多轮T2S解析解耦成两个管道任务:问题重写和单轮T2S解析。问题重写(QR)模块旨在基于对话上下文生成语义补全问题,它将对话历史和最新问题作为QR模块的输入。QR模块的目标是基于最新问题和对话历史生成一个简化的表达式。单轮T2S解析器使用QR模块生成的简化表达式预测相应的SQL查询,它选择一个预训练的BART作为问题重写器,RAT-SQL[12]作为单轮文本到SQL解析器。

对于历史SQL输入编码,HIE-SQL[73]将SQL查询的逻辑形式视为另一种自然语言问题的模态,并结合了额外的SQL编码器来捕捉SQL查询与自然语言问题之间的语义联系。它提供了对之前预测的SQL查询的全面表示,以改善上下文表示。

4.1.2 多轮结构建模

与单轮设置不同,多轮设置要求将上下文归纳偏差整合到结构建模中。

链接结构R2SQL[74]关注于上下文链接结构的独特性,引入了一种新颖的动态图框架,以高效地模拟上下文问题、数据库模式以及它们之间的复杂链接结构。应用衰减机制来减轻历史链接对当前轮的影响。

模式结构[41]利用对话历史通过编辑之前预测的SQL来提高生成质量。它侧重于利用之前的问题文本和之前预测的SQL查询来预测当前轮的SQL查询。具体来说,首先将之前的问题编码成一系列的标记,然后解码器在标记级别预测一个切换来改变它。这种序列编辑方法模拟了标记级别的变化,因此抵抗错误传播。IGSQL[75]指出,它不仅应该考虑历史用户输入和之前预测的SQL查询,还应该利用数据库模式项的历史信息。因此,IGSQL提出了一个数据库模式交互图编码器,用于学习数据库模式项与历史项一起,保持上下文一致性,以便进行上下文依赖的文本到SQL解析。交叉转弯模式交互图层和转弯内模式图层通过分别使用前一转弯和当前转弯来更新模式项表示。IST-SQL[76]处理多转弯文本到SQL解析任务,该任务受到面向任务的二元生成任务启发。IST-SQL定义、跟踪并利用多转弯文本到SQL解析的交互状态,其中每个交互状态都通过基于先前预测的SQL查询的状态更新机制进行更新。

4.2 解码器

对于多转弯设置,大多数以前的方法[41, 77,74]采用带有注意力机制的LSTM解码器来产生条件于历史自然语言问题、当前自然语言问题和表模式的SQL查询。解码器以当前自然语言问题的编码表示、SQL状态、模式状态和最后预测的SQL查询作为输入,并在解码过程中应用查询编辑机制[41]来编辑之前生成的SQL查询,同时结合自然语言问题和模式的上下文。为了进一步减轻词汇表中的标记可能与SQL查询完全无关的挑战,使用了单独的层来预测SQL关键词、表名和问题标记。最后使用softmax操作来生成输出概率分布。

5 文本到SQL解析的预训练

预训练的语言模型(PLMs)已被证明在增强文本到SQL解析方面非常强大,并且产生了令人印象深刻的性能,这得益于大规模语料库中丰富的知识。然而,如先前工作[18, 20]所揭示的,表格和纯文本分布之间存在内在差异,这导致了BERT等通用预训练语言模型在文本到SQL解析任务中的性能不佳。最近,有几项研究提出通过同时编码表格和文本来缓解上述限制,并构建表格语言模型(TaLMs),这些研究在下游文本到SQL解析任务上显示出改进的结果。在本节中,我们从预训练数据构建、输入特征学习、预训练目标和骨干模型架构的角度,对现有的文本到SQL解析预训练研究进行了全面的回顾。

5.1 预训练数据构建

缺乏足够的训练数据是学习强大预训练表格语言模型的一个重要挑战。预训练数据的质量、数量和多样性对预训练语言模型应用于下游文本到SQL解析任务时的整体性能有显著影响。尽管从网络(例如维基百科)收集大量表格很容易,但在收集到的表格上获取高质量的自然语言问题及其对应的SQL查询是一个劳动密集型和耗时的过程。最近,已经有大量的研究手动或自动生成文本到SQL解析的预训练数据。接下来,我们从三个角度讨论之前的预训练数据构建方法:表格收集、自然语言问题生成和逻辑形式(SQL)生成。

5.1.1 表格收集

我们简要介绍了几个广泛用于表格收集的来源。WikiTableQuestion[37]是一个代表性的语料库,由22,033个问题和答案对组成,覆盖了2,108张表格,这些表格是从维基百科中随机收集的,至少包含五个列和八个行。表格经过预处理,省略了所有非文本内容,并且每个合并单元格都被复制以保持表格的有效性。总共,在13,396列中有3,929个不同的列标题(关系)。WikiSQL[22]是80,654个手工制作的问答对以及24,241个HTML表格的集合,这些表格都是从维基百科中收集的。表格是从[78]中收集的,过滤掉那些少于五个列或五行的小表格。WDC WebTables[79]是一个大规模的表格收集,包含了超过2.33亿张表格,它来自CommonCrawl的2015年7月版本。这些表格被分类为关系型(9000万)、实体型(1.39亿)或矩阵型(300万)。WikiTables[80]包含了160万个高质量的关系型维基百科表格,这些表格是通过提取维基百科中的所有HTML表格构建的,这些表格具有"wikitable"类属性(用于轻松识别数据表),它们来自于2013年11月英文维基百科的XML转储。ToTTo[81]是一个开放领域的英语表格到文本数据集,包含超过120,000个训练样本,其中包含83,141个相应的网页表格,这些表格是使用各种模式的启发式方法自动从维基百科中收集的,涵盖了各种主题类别。WebQuery-Table[82]由273,816个表格组成,使用21,113个网络查询,每个查询用于搜索网页,相关表格从排名靠前的网页中获取。Spider[23]是一个大规模的文本到SQL数据集,包含200个属于138个不同领域的数据库。特别是,这些数据库来自三个资源:(i) 70个复杂数据库是从SQL教程、大学数据库课程和教科书示例中收集的,(ii) 40个数据库是从DatabaseAnswers1中收集的,(iii) 90个数据库是从WikiSQL[22]中选取的。

5.1.2 自然语言问题注释

到目前为止,已经引入了不同的问题注释方法来基于收集到的数据库注释自然语言问题。通常,这些方法可以分为三类:基于采样的方法、基于模板的方法和基于生成的方法。

基于采样的方法许多工作通过在维基百科中提取文本-表格对,在预训练数据中产生自然语言问题。具体来说,TAPAS[19]通过收集维基百科中的文本-表格对创建预训练语料库,其中大约有620万个表格和2130万个文本片段。特别是,表格标题、段落标题、文章描述、文章标题和文本表格片段被提取为相应表格的文本片段。STRUG[83]直接从ToTTo数据集[81]中收集了大约12万个自然语言网络表格及其相应的文本描述,通过使用三种启发式方法从维基百科中提取文本-表格对:数字匹配、单元格匹配和超链接。

基于模板的方法有几项工作通过使用模板或规则自动生成自然语言问题。GRAPPA[20]通过提取SQL操作和数据库模式的实体提及来构建问题-SQL模板。通过利用在随机抽取的表上创建的模板,可以自动合成大量问题-SQL对。SCORE[84]仅使用SPARC[31]开发集的500个样本来推导出由同步问题-SQL模板列表和后续问题模板组成的话语-SQL生成语法。最后,大约有435k个文本到SQL的转换被合成用于上下文依赖的文本到SQL预训练。

基于生成的方法有几项工作已经引入,通过使用文本生成模型从实体序列自动生成自然语言问题。例如,[85]提出了一种跨领域的神经模型,它接受一个表模式并采样一系列待出现的实体。

1.http://www.databaseanswers.org/

表4 预训练数据构建。

WIKITABLEQUESTIONS WIKISQL[22]Table WIKITABLE ToTToSpider[23]WebTable Wikipedia GITHUBQuestion ToTTo WikipediaSpider[23]
TaBERT[18]✓✓ √
TAPAS[19]✓✓
GRAPPA[20]✓✓✓✓
GAP✓✓
STRUG✓✓
MATE✓✓
TAPEX✓✓
TableFormer✓✓
SCORE✓✓✓✓✓✓

在自然语言处理(NL)问题中,将实体序列转换为自然语言问题。具体来说,T5模型首先在小语料库上微调,该语料库包含实体-问题对,然后应用于根据实体序列生成自然语言问题。例如,给定输入的实体序列“部门管理:姓名文本-年龄数字-出生州文本”,T5模型很可能输出自然语言问题“按年龄排序列出部门的负责人姓名、出生州和年龄”。此外,[86]引入了一个生成模型来生成话语-SQL对,该模型利用概率上下文无关语法(PCFG)来模拟SQL查询,然后采用基于BART的翻译模型将逻辑形式转换为自然语言问题。例如,对于给定的输入SQL序列“select area where state_name=‘texas’”,生成模型输出自然语言问题“德克萨斯州的面积是多少?”。GAZP[53]还使用生成模型生成与这些逻辑形式相对应的话语。此外,验证了合成语言的输出与输入的一致性。具体来说,我们将生成的查询解析为逻辑形式,并保留解析与相应原始逻辑形式等价的查询。

还有一些研究邀请注释者手动创建自然语言问题和相应的SQL查询,而不依赖于模板或规则,以便生成的自然语言问题是自然且多样的。特别是,Spider[23]生成了10,181个自然语言问题(NL)和三个主要方面:SQL模式覆盖率确保获得足够的SQL样本以覆盖所有常见的SQL模式,SQL一致性确保语义等价的NL问题共享相同的SQL查询,以及问题清晰度确保不包含模糊或过于含糊的问题。

5.1.3 SQL注释

通常,SQL注释方法可以分为三大类:逻辑扰动、SQL模板实例化和分层合成流程。

由于获取SQL查询的过程昂贵,因此提出了基于逻辑扰动的改进方法,通过根据手工调整的规则执行随机逻辑扰动来增强SQL查询[87]。特别是,[87]通常根据遵循三种逻辑不一致性的手工调整规则,列举每个给定SQL查询的扰动:(i)逻辑移位旨在生成与原始问题在逻辑上不同的问题和逻辑形式(ii)短语和数字变化旨在修改逻辑形式中指定的数值和短语,以及(iii)实体插入、交换和删除,忽略逻辑形式中的实体提及,在逻辑形式中插入新实体,或将逻辑形式内的任意两个实体进行交换。通过扰动逻辑形式自动生成更多SQL查询有三个原因。首先,逻辑形式的常规结构使得逻辑破坏的过程可控。其次,我们可以轻松地使用相应的文法检查器和解析器验证受扰动的逻辑形式。第三,鉴于原始问题-SQL对,只需进行少量修改即可获得生成的SQL查询的相应问题。

SQL模板实例化有几项研究应用SQL模板实例化方法自动生成基于现有模板的SQL查询[88, 53]或自定义同步无上下文语法(SCFG)[20]。[88]利用SUQALL数据集中定义的SQL语法的产生规则进行SQL注释。给定一个SQL模板,统一选择表头和单元格值以填充模板。GAZP[53]通过利用语法(如数据库模式上的SQL语法)来样本逻辑形式。首先,GAZP通过预处理SQL并进一步用类型化的槽替换列的提及来创建粗略模板。然后,每个粗略模板的槽由新的数据库内容填充。GRAPPA[20]不是完全依赖现有的模板,而是从Spider[23]中的示例中学习,并设计了一个新的SCFG,然后将其应用于大量现有表以生成新的SQL查询。这种方法背后的关键思想是为操作、表名、单元格值、列名定义一组非终结符类型,然后在SQL查询中用相应的非终结符符号替换实体,形成SQL产生规则。SQL模板实例化方法通常严重依赖于有限的模板,它们很难生成具有新组合的多样化SQL查询。

与上述基于手工制作或诱导规则和模板的合成新SQL查询的方法不同,层次合成管道方法基于大规模预训练语言模型(PLMs)[68],这是由于PLMs可以通过在训练语料库中加入额外的多样化样本来提高模型泛化能力,而无需人工劳动。具体来说,[85]提出了一种没有语法工程的神经网络方法,但实现了高语义解析性能。为此,实施了预训练文本生成模型,如T5[68],它在文本到SQL数据上进行微调,以将从表结构中抽取的实体序列映射到自然语言问题[85]。然后,将学习到的语义解析器应用于生成的自然语言问题,以产生相应的SQL查询。整体数据合成管道易于实现,并且由于使用了大型PLMs,实现了极大的多样性和覆盖范围。

5.2 输入编码

在文本到SQL解析任务中,输入通常涉及两部分:自然语言问题和表结构,输出将是SQL查询。然而,文本数据、表格数据和SQL查询是异构的,它们有不同的结构和格式。具体来说,表格数据通常以二维结构分布,包含数值和文字,而SQL查询通常由SQL关键字(例如,“SELECT”、“UPDATE”、“DELETE”、“INSERT INTO”)和模式实体组成。因此,在这三种类型的数据上开发联合推理框架并非易事。在本节中,我们回顾了关于文本到SQL解析预训练的异构输入编码的最新研究。

5.2.1 文本数据编码

文本编码可以根据自然语言处理中的词嵌入分为动态和静态类型。一些方法应用GloVe[89]来初始化每个输入项的词嵌入,通过查找嵌入字典而不考虑上下文,如RATSQL[12]和LGESQL[14]。然而,静态嵌入方法仍然有限。这两种静态方法都无法解决歧义问题。此外,学习到的特征受到预定义窗口大小的限制。随着预训练语言模型的发展,一些研究尝试使用PLM而不是静态词嵌入来编码文本数据。特别是,许多方法(例如,TABERT[18]、TAPAS[19]、MATE[90]、STRUG[83])利用预训练的BERT[11]作为编码器来获取上下文化的词级表示,并且BERT[11]的参数会随着训练过程更新。GRAPPA[20]使用ROBERTA[51]作为编码器。TAPEX[88]利用BART[91]编码器和解码器,而GAP[92]仅使用BART编码器。

5.2.2 表格数据编码

与文本数据不同,表格数据分布在二维(2-D)结构中。表预训练方法首先需要将二维表格数据转换为线性化的1-D序列输入,然后才能将表格数据输入语言模型。一种常见的序列化方法是按行逐个将表格数据扁平化为一系列标记,然后在表格标记之前连接问题标记进行表格预训练,例如TAPAS[19]、MATE[90]和TABLEFORMER[93]。TABERT[18]提出内容快照来编码与输入话语最相关的表格子集。然后将这种策略与垂直注意力机制结合起来,共享不同行中的单元表示之间的信息。还有一些研究(例如STRUG[83]、GRAPPA[20]和UNIFIEDSKG[94])只考虑了表格的头部作为输入,而没有考虑数据单元。

虽然自然语言处理模型通常以1-D序列作为输入,但对于表格数据来说,位置编码变得至关重要,以便神经模型更好地捕捉结构信息。大多数以前的预训练方法,如TABERT[18]、GRAPPA[20]和TAPEX[88],都是在扁平化的表格序列上探索全局位置编码策略。然而,除了1-D顺序位置外,表格还有由关键二维和层次信息组成的结构化列和行。像TAPAS[19]和MATE[90]这样的工作基于列/行ID编码行和列内容。表格生成器[93]决定两个单元格是否在同一列/行中,而不是考虑表格中列和行的绝对顺序信息。

5.3 预训练目标

大多数现有的文本到SQL解析预训练模型采用单一的Transformer或基于Transformer的编码器-解码器框架作为骨干,并采用不同类型的预训练目标来捕捉文本到SQL解析任务的特征。如表5所示,预训练目标可以分为五个主要类别,包括掩蔽语言建模(MLM)[18, 19, 20, 92, 90, 93, 84]、模式链接[20, 92, 83, 84]、SQL执行器[88]、文本生成[92]和上下文建模[84]。接下来,我们将介绍每个主要预训练目标的实施细节。

5.3.1 掩蔽语言建模

现有工作经常探索不同的掩蔽语言建模(MLM)变体,以指导语言模型更好地学习自然语言和表格数据的表示。具体来说,MLM目标可以分为三个主要类别:重建损坏的自然语言句子、重建损坏的表格标题或单元格值,以及从损坏的自然语言句子和表格重建标记。

特别是,大多数预训练模型[18, 19, 20, 92,90, 93, 84]通过随机遮蔽输入标记的一部分(来自自然语言句子或表格标题),然后预测遮蔽标记来进行掩蔽语言建模。然后,通过最小化原始掩码标记与预测掩码标记之间的交叉熵损失来计算MLM损失。此外,TABERT[18]还提出了一个掩码列预测(MCP)和一个单元值恢复(CVR),以学习表格的列表示,其中MCP目标预测掩码列的名称和数据类型,而CVR目标尝试根据其单元向量预测掩码列中每个单元的原始值。GAP[92]设计了一个基于采样单元值的单元恢复(CRec)目标,以恢复相应的列名。

表5 文本到SQL解析的预训练目标。

Objectives ModelsMasked Language ModellingSchema LinkingSQL ExecutorText GenerationContext Modelling
TaBERT[18]√(MLM,MCP,CVR)
TAPAS[19]√(MLM)
GRAPPA[20]√(MLM)√(SSP)
GAP[92]√(MLM,CRec)√(CPred)√(GenSQL)
STRUG[83][]√(CG,VG)
MATE[95]√(MLM)
Tapex[88]✓✓
TableFormer√(MLM)
SCORE[84]√(MLM)√(CCS)√(TCS)

5.3.2 模式链接

模式链接是文本到SQL解析中的一个关键组成部分,它学习自然语言问题与给定表之间的对齐。特别是,模式链接旨在识别自然语言问题中列、表和条件值之间的引用。这对于复杂的SQL生成和跨领域泛化尤为重要,在这些情况下,文本到SQL解析器应该意识到即使在与任意领域的表进行比较时,自然语言问题中涉及的表和列是什么,以及自然语言问题与SQL查询之间复杂的语义依赖性。

最近,设计了几个预训练目标[20, 92, 83, 84],通过学习自然语言问题和表的相关性来模拟模式链接信息。GRAPPA[20]提出了一种SQL语义预测(SSP)目标,旨在预测列名是否出现在SQL查询中,以及在给定表头的情况下,哪些SQL操作是由自然语言问题触发的。SSP目标是通过将SQL序列标记转换为每个列的操作分类来实现的,这产生了254个可能的操作类别。与GRAPPA[20]类似,SCORE[84]提出了一个列上下文语义(CCS)目标,旨在预测应该在给定列上执行哪种操作。STRUG[83]提出了三个基于结构的任务目标,用于学习文本-表对齐,包括列定位(CG)、值定位(VG)和列-值映射(CV)。具体来说,CG目标是一个二元分类任务,旨在预测一列是否在自然语言问题中出现。VG目标也被转换为二元分类,旨在预测一个标记是条件于自然语言问题和表格模式的有意义的值的一部分。为了进一步对齐有意义的列和值,CG目标被设计为匹配自然语言问题中的标记和列。与CG目标类似,GAP[92]还开发了一个列预测(CPred)目标,用于预测一列是否在自然语言问题中使用。

5.3.3 SQL执行器

建模结构化表在文本到SQL预训练中起着至关重要的作用。TAPEX[88]通过预训练神经模型来模仿表上的SQL执行器,提出了一个SQL执行器目标。具体来说,神经SQL执行器被学习来执行SQL查询并输出相应的正确结果,这需要模型对SQL查询和表有深入的理解。

5.3.4 SQL生成

文本到SQL解析的目标是将自然语言问题翻译成可以在给定表上执行的SQL查询。因此,将SQL生成目标纳入预训练方法中是有益的,以便进一步增强下游任务。GAP[92]提出了一种SQL生成目标,用于在适当的位置生成特定的SQL关键词或列名,而不仅仅是预测一列是否出现。

5.3.5 转换上下文切换

上述预训练目标主要模拟独立自然语言问题,而不考虑上下文依赖的交互作用,这导致对于上下文依赖的文本到SQL解析的性能不佳。SCORE[84]是第一个代表性的上下文依赖文本到SQL解析的预训练方法。特别是,SCORE设计了一个上下文切换(TCS)目标,通过预测两个连续用户话语之间的上下文切换标签(从26种可能的操作中选择)来模拟上下文流。尽管其有效性,但TCS目标忽略了上下文话语的复杂交互作用,并且很难追踪远距离话语之间的依赖性。

6 未来方向

尽管以往方法取得了显著进展,但在开发高质量的文本到SQL解析器方面仍存在几个挑战。基于本手稿中的工作,我们讨论了在文本到SQL解析领域未来探索的几个方向。

6.1 高效高质量训练数据生成

当前用于文本到SQL解析的基准数据集仍然受到训练数据质量、数量和多样性的限制。例如,WikiSQL[22]包含大量简单的问答对和单一表,忽略了训练实例的质量和多样性。特别是,WikiSQL[22]有几个局限性,如下所述。首先,WikiSQL[22]中的训练、开发和测试集共享相同的领域,没有考虑到文本到SQL解析器的跨领域泛化能力。其次,WikiSQL[22]中的SQL查询简单,不包含复杂操作,如“ORDER BY”、“GROUP BY”、“NESTED”和“HAVING”。第三,WikiSQL[22]中的每个数据库只包含一个表,简化了文本到SQL的解析。Spider[23]是一个跨领域且复杂的文本到SQL解析基准数据集,包含了复杂的SQL查询和在不同领域具有多个表的数据库。Spider[23]旨在研究文本到SQL解析器泛化能力,不仅限于新的SQL查询和数据库模式,还包括新的领域。然而,Spider[23]仅有大约一万样本,不足以构建一个高质量、大规模的文本到SQL解析器。还有许多数据生成方法应用基于规则的算法来产生大量问题-SQL对。然而,这些自动生成的样本质量较差,通常会失去多样性。因此,如何构建高质量、大规模数量和高多样性的文本到SQL语料库是未来探索的重要方向。

6.2 处理大规模表/数据库形态学

当前基准语料库中使用的表通常包含少于十个行和列,这是考虑到当前神经文本到SQL模型的输入长度限制。然而,在许多现实世界的应用中,涉及的表通常包含数千行和列,这对现有神经文本到SQL模型的内存和计算效率构成了巨大挑战。特别是,当涉及的表的数量或大小变得太大时,如何编码表模式并从大型表中检索适当的知识是具有挑战性的。因此,未来应更多地努力于如何(i)开发能够编码长序列表模式的有效文本到模型,以及(ii)提高在涉及大规模数据库时生成的SQL的执行效率。

6.3 结构化表格数据编码

与文本数据不同,文本到SQL解析中涉及的表格数据以二维结构分布。大多数文本到SQL解析方法首先将二维表数据转换为线性化的一维序列,然后将其输入到输入编码器中。这样的线性化方法无法捕捉表的结构性信息。此外,大多数以前的工作主要关注网页表,而更多其他类型的表格数据,如包含超链接、视觉数据、电子表格公式和数量的表格,并未被考虑在内。通过直接编码一个线性化的输入序列,从这样多样化的数据类型中学习高质量表示是非平凡的。探索文本到SQL方法来有效地编码这种二维表格数据的结构性信息是有价值的,以便可以学习更全面的输入表示,从而促进SQL生成。

6.4 异构信息建模

现有的文本到SQL数据集,如Spider[23],主要包含来自自然语言问题表和表格的文本和数值数据。然而,许多现实生活中的应用包含了更多类型的数据(例如图像)跨异构形式。仅使用同质信息源无法满足一些现实生活中的应用需求,例如电子商务和元宇宙。例如,[96]通过提出一个挑战性的问答数据集迈出了这一方向,该数据集要求对文本、表格和图像进行联合推理。在电子商务和元宇宙领域应用文本到SQL模型时,需要处理多模态数据并聚合来自异构信息源的信息以获得正确的返回结果。

6.5 跨域文本到SQL解析

大多数现有工作都在同域文本到SQL解析上进行了研究,其中训练集和测试集共享相同的领域。然而,无论收集了多少数据用于训练文本到SQL解析器,都很难覆盖数据库的所有可能领域。因此,在实践中部署时,一个训练有素的文本到SQL解析器不能泛化到新的领域,通常表现不尽如人意。尽管已经为具有挑战性的跨域设置构建了一些跨域文本到SQL数据集(例如Spider[23]、DK[25]和SYN[24]),但没有设计定制算法的文本到SQL方法来处理测试数据分布未知且与训练数据分布不同的离群值(OOV)泛化问题。当面对不同分布的数据时,监督学习方法容易受到损害。因此,探索文本到SQL解析器的OOD泛化是一个学术界和工业界都充满希望的未来方向。

6.6 文本到SQL解析模型的鲁棒性

在现实应用中部署时,文本到SQL解析模型的鲁棒性提出了一个严峻的挑战。输入中的微小扰动可能会显著降低文本到SQL解析模型的性能。高性能要求在噪声输入上具有鲁棒的性能。最近,Spider-SYN[24]研究了文本到SQL解析模型对同义词替换的鲁棒性,通过移除自然语言问题与表模式之间的显式模式链接对应关系。Spider-DK[25]通过向自然语言问题注入罕见的领域知识来研究文本到SQL解析模型的泛化,以评估模型对领域知识的理解。来自[24]和[25]的实验结果表明,即使在训练和测试数据分布相似的情况下,面对输入中的小扰动(同义词替换和领域知识注入),文本到SQL模型的性能也较差。因此,有必要稳定神经网络文本到SQL解析模型,使模型对不同扰动更加鲁棒。目前对于提高文本到SQL模型的鲁棒性探索非常少,因此应该更多地投入这一研究方向。

6.7 零样本和少样本文本到SQL解析

“预训练+微调”范式已被广泛用于文本到SQL解析,产生了最先进的性能。尽管通过“预训练+微调”范式训练的文本到SQL解析模型可以获得令人印象深刻的性能,但它们仍然需要大规模标注的数据集来进行下游任务的微调。这些神经模型在没有任何特定任务标注训练数据的情况下,在零样本设置中可能表现不佳。一种可能的解决方案是采用预训练的语言模型(例如GPT-3[97]和Codex[98])进行零样本迁移,以辅助模型更好地理解当前的自然语言表达。99和94揭示了大型预训练语言模型可以在不进行微调的情况下,在文本到SQL解析上实现有竞争力的性能。例如,Codex[98]在Spider[23]开发集上的执行准确率高达67%。因此,零样本和少样本文本到SQL解析是未来探索的有前景的方向。

6.8 上下文依赖的文本到SQL解析的预训练

上下文依赖的文本到SQL解析需要有效处理上下文信息,以便有效地生成当前的SQL查询,因为用户可能会省略之前提到的实体以及约束,并引入对已经陈述内容的替代。关键挑战是如何跟踪和探索历史话语中的交互状态,以帮助模型更好地理解当前的自然语言表达。尽管如此,大多数先前的文本到SQL(TaLM)模型主要模拟孤立的自然语言(NL)话语,而没有考虑上下文依赖的交互作用,这导致了性能不佳。尽管SCORE[84]通过预测两个连续用户话语之间的上下文切换标签来模拟上下文切换,但它忽略了上下文话语的复杂交互作用,并且无法追踪远距离话语之间的依赖性。受到对话状态跟踪[76, 100, 101]的启发,后者在任务导向对话系统中以一组对话状态(例如,槽值对)的形式跟踪用户意图,因此在预训练过程中跟踪上下文依赖的SQL查询的schema状态(或用户请求)是有益的。如何探索并充分利用上下文信息来丰富问题和schema表示对于部署文本到SQL泛化方法是至关重要的。

6.9 文本到SQL模型的可解释性

深度神经网络(DNNs)在文本到SQL解析上已经达到了最先进的性能。然而,这些神经模型通常缺乏可解释性,被视为黑箱。对于敏感领域如金融或医疗保健,神经文本到SQL模型的可解释性和返回结果至关重要,这一点与SQL生成性能一样重要。与其探索使预测结果对人类不可解释的隐式编码和推理策略,不如如何利用bo深度神经网络(DNNs)的表示能力和符号方法的显式推理能力是文本到SQL解析的有前景的未来方向,特别是对于高度敏感领域的应用。

6.10 数据隐私保护

许多文本到SQL模型已经部署在云上,由小型企业处理用户数据。由于用户数据的敏感性,数据隐私保护可能是文本到SQL解析中的一个基本但具有挑战性的任务。特别是,大多数文本到SQL解析模型需要从大规模语料库和相关数据库模式中识别模式以及关系,并将所有信息收集到一个中央站点进行特征表示学习。然而,数据隐私问题可能会阻止神经模型构建一个集中式架构,因为不同数据库模式之间的关系或模式可能分布在几个托管者之间,没有一个被允许将其用户数据转移到其他站点。如何有效地将自然语言问题以及数据库模式转换为本地设备上的私有化输入表示,然后将转换后的表示上传到服务提供商,也将是一个有前景的探索方向。

7 结论

本手稿旨在为NLP社区提供文本到SQL解析的首次全面调查。我们提供了现有数据集的概述、当前神经文本到SQL解析模型、定制的预训练方法,以及可能的未来探索方向。首先,我们介绍了现有的单轮和多轮文本到SQL语料库,并提供了一个表格来总结这些资源。其次,我们回顾了基于不同编码器和解码器的最先进的神经文本到SQL解析模型。第三,我们介绍了文本到SQL解析的著名预训练方法,并详细阐述了现有的预训练目标。最后,我们讨论了文本到SQL解析领域的未来发展方向。我们希望这份调查能提供一些有见地的观点,并激发对现实生活中的文本到SQL解析系统的广泛实施。

致谢

杨敏部分得到了国家自然科学基金(编号61906185)、深圳市基础研究基金会(编号JCYJ20210324115614039和编号JCYJ20200109113441941)、深圳市科技创新计划(资助号KQTD20190929172835662)以及CAS中国青年创新促进协会(编号2020357)的支持。本工作得到了阿里巴巴集团通过阿里巴巴创新研究计划的支持。

参考文献

[1]王磊、秦斌、惠斌、李波、杨明、王斌、李斌、黄飞、石磊和李勇,“Proton:利用预训练语言模型的概率框架链接信息进行文本到SQL解析”,arXiv预印本arXiv:2206.14017,2022。

[2]Zelle J. M. 和 Mooney R. J.,“使用归纳逻辑程序学习解析数据库查询”,在1996年全国人工智能会议上。

[3]Sutskever I.、Vinyals O. V. 和 Le Q. V.,“使用神经网络的序列到序列学习”,Proc.NeurIPS, 2014.

[4]郭杰,詹志,高宇,肖军,卢嘉,刘涛,张迪,"面向跨领域数据库中复杂文本到SQL的中间表示,"在ACL会议上, 2019.

[5] 高鸿基,施密特胡贝尔,"长短期记忆,"神经计算, 1997.

[6] 瓦斯瓦尼,沙泽尔,帕马尔,乌斯基罗伊特,琼斯,戈麦斯,凯勒,波洛苏金,"注意力就是你需要的东西,"在NeurIPS会议上, 2017.

[7]崔德,申明,金恩,申德,"RYAN-SQL: 递归应用基于草图的槽填充以实现跨领域数据库中复杂文本到SQL,"计算语言学, 2021.

[8]奥谢克,纳什,"卷积神经网络导论,"ArXiv预印本, 2015.

[9]尹东,李东,李森,"动态自注意力: 动态计算句子嵌入上的单词注意力,"ArXiv预印本, 2018.

[10]黄伟,尹健,朴胜,徐明,"Wikisql与表感知词上下文化的全面探索,"ArXiv预印本, 2019.

[11] 徐德林,陈美华,李凯,托塔诺娃,"BERT: 为语言理解预训练深度双向变换器,"在AACL会议上, 2019.

[12]王宝华,沈荣,刘晓,波洛佐夫,理查森,"RAT-SQL: 关系感知的schema编码和链接用于文本到SQL解析器,"在ACL会议上, 2020.

[13]蔡荣,袁家,徐博,郝志,"Sadga: 结构感知的双图聚合网络用于文本到SQL,"在NeurIPS会议上, 2021.

[14]曹荣,陈晨,陈志,赵志,朱晓,托塔诺娃.杨宇,“LGESQL:一种带有混合局部和非局部关系的线图增强文本到SQL模型”,在ACL 2021会议上。

[15]徐X.Xu,刘C.,宋D.,“Sqlnet:从自然语言生成结构化查询,无需强化学习”,ArXiv预印本,2017。

[16]崔B.,史X.,耿R.,李B.,李Y.,孙J.,朱X.,“利用schema依赖性学习改进文本到SQL”,ArXiv预印本,2021。

[17]黄J.,王Y.,王Y.,董Y.,肖Y.,“关系感知半自回归语义解析用于nl2sql”,ArXiv预印本,2021。

[18]尹P.,Neubig G.N.,Yih W.-t.,Riedel S.,“TaBERT:联合理解文本和表格数据的预训练”,在ACL 2020会议上。

[19]赫齐格J.,诺瓦克P.K.,穆勒T.,皮奇尼诺F.,艾斯霍尔斯洛J.,“TaPas:通过预训练进行弱监督表解析”,在ACL 2020会议上。

[20]于T.,吴C.,林X.V.,王B.W.,谭Y.C.,杨X.Y.,拉德夫D.R.,索舍R.,熊C.,“Grappa:语法增强的表语义解析预训练”,在ICLR 2021会议上。

[21]艾耶S.,康斯塔斯I.,钟A.,克里希南马图尔J.,泽特莱莫伊尔L.,“从用户反馈中学习神经语义解析器”,在ACL 2017会议上。

[22]钟V.,熊C.,索舍R.,“Seq2sql:使用强化学习从自然语言生成结构化查询”,ArXiv预印本,2017。

[23]于T.,张R.,杨K.,山田M.Y.,王D.,李Z.,马J.I.,李Q.,姚S.,罗曼Z.Z.,张Z.,拉德夫D.,“Spider:一个大规模的人类标记数据集,用于复杂和跨领域的语义解析以及文本到SQL任务”,在EMNLP 2018会议上。

[24]甘Y.,陈X.,黄Q.,普弗尔M.,金J.R. Woodward、J. Xie和P. Huang,“走向文本到SQL模型的鲁棒性对抗同义词替换”,发表于ACL 2021会议论文集。

[25]Y.Gan、X. Chen和M. Purver,“探索跨领域文本到SQL生成的低效限制”,发表于EMNLP 2021会议论文集。

[26]P. Shaw、M.-W. Chang、P. Pasupat和K. Toutanova,“组合泛化和自然语言变异:语义解析方法能否同时处理?”发表于ACL 2020会议论文集。

[27]Q. Min、Y. Shi和Y. Zhang,“中国SQL语义解析的试点研究”,发表于EMNLP 2019会议论文集。

[28]L. Wang、A. Zhang、K. Wu、K. Sun、Z. Li、H. Wu、M. Zhang和H. Wang,“DuSQL:一个大规模且实用的中国文本到SQL数据集”,发表于EMNLP 2020会议论文集。

[29]P. J. Price,“口语语言系统的评估:ATIS领域”,发表于Speech and Natural Language:1990年6月24-27日在宾夕法尼亚州Hidden Valley举行的研讨会论文集。

[30]D. A. Dahl、M. Bates、M. Brown、W. Fisher、K.Hunicke-Smith、D.Pallett、C.Pao、A. Rudnicky和E. Shriberg,“扩展ATIS任务的范围:ATIS-3语料库”,发表于Human Language Technology:1994年3月8-11日在新泽西州Plainsboro举行的研讨会论文集。

[31]T.Yu、R.Zhang、M.Yasunaga、Y.C.Tan、X.V.Lin、S.Li、H.Er、I.Li、B.Pang、T.Chen、E.Ji、S.Dixit、D.Proctor、S.Shim、J. Kraft、V. Zhang、C.Xiong、R.Socher和D.Radev,“SParC:上下文中跨领域语义解析”,发表于ACL 2019会议论文集。

[32] T. Yu、R. Zhang、H. Er、S. Li、E. Xue、B. Pang、X. V.Lin、Y.C.Tan、T. Shi、Z.Li、Y.Jiang、M.Yasunaga、S.Shim、T.Chen、A.Fabbri、Z.Li、L.Chen、Y.Zhang、S. Dixit、V. Zhang、C.熊荣、索赫、拉塞奇克和拉德夫,“CoSQL:一个对话式文本到SQL挑战,面向数据库跨领域自然语言接口”,在EMNLP会议论文集中,2019年。

[33] 郭军、司志、王勇、刘强、范明、楼嘉杰、杨志强和刘涛,“Chase:一个大规模且实用的中国数据集,用于跨数据库上下文依赖的文本到SQL”,在ACL会议论文集中,2021年。

[34] 中荣、余涛和克莱因德,“使用蒸馏测试套件进行文本到SQL的语义评估”,在EMNLP会议论文集中,2020年。

[35] 赖特莱莫伊尔和柯林斯,“学习将句子映射到逻辑形式:带有概率分类语法的结构化分类”,在2005年第21届人工智能不确定性会议论文集中。

[36] 史涛、赵晨、博伊德-格拉伯、达姆埃三世和李磊,“关于词汇逻辑对齐对于语义解析到SQL查询的潜力”,在EMNLP发现会议论文集中,2020年。

[37] 巴苏帕特和李亮,“半结构表上的组合语义解析”,在ACL会议论文集中,2015年。

[38] 余涛、李志、张志、张荣和拉德夫,“TypeSQL:基于知识的类型感知神经文本到SQL生成”,在AACL会议论文集中,2018年。

[39] 杨涛、山本雅俊、杨阳、张荣、王德旺、李志和拉德夫,“SyntaxSQLNet:复杂和跨领域文本到SQL任务的句法树网络”,在EMNLP会议论文集中,2018年。

[40] 博金、伯恩特和加德纳,“用图神经网络表示文本到SQL解析中的模式结构”,在ACL会议论文集中,2019年。

[41] 张荣、杨涛、埃尔、申世、薛学、林晓伟、史思、熊荣、索赫和拉德夫,“TypeSQL:知识型类型感知神经文本到SQL生成”,在AACL会议论文集中,2018年。德拉夫,"基于编辑的SQL查询生成用于跨域上下文依赖问题," 在EMNLP会议论文集中, 2019年。

[42]A. Kelkar, R. Relan, V. Bhardwaj, S. Vaichal, C. Kha-tri, 和 P. Relan,"Bertrand-dr: 使用判别性重新排名器改进文本到SQL," ArXiv预印本, 2020年。

[43] X. V. Lin, R. Socher, 和 C. Xiong,"桥接文本和表格数据以进行跨域文本到SQL语义解析," 在EMNLP发现会议上, 2020年。

[44] O. Rubin 和 J. Berant,"SmBoP: 半自回归自底向上语义解析," 在AACL会议上, 2021年。

[45] Z. Chen, L. Chen, Y. Zhao, R. Cao, Z. Xu, S. Zhu, 和 K. Yu,"ShadowGNN: 图投影神经网络用于文本到SQL解析器," 在AACL会议上, 2021年。

[46] P.Xu,D.Kumar,W.Yang,W.Zi,K.Tang,C.Huang,J.C.K. Cheung,S.J. Prince, 和 Y. Cao,"在小型数据集上优化更深层的变压器," 在ACL会议上, 2021年。

[47] T. Scholak, N. Schucher, 和 D. Bahdanau,"PICARD: 从语言模型中逐步解析受限自回归解码," 在EMNLP会议上, 2021年。

[48]B.Hui,R.Geng,L. Wang,B.Qin,B.Li,J.Sun, 和 Y. Li,"S 2 sql: 在文本到SQL解析器的交互图编码器中注入语法," ArXiv预印本, 2022年。

[49]M. Schuster 和 K. K. Paliwal,"双向递归神经网络," IEEE信号处理交易, 1997年。

[50] W. Lei,W. Wang,Z. Ma,T. Gan,W. Lu, M.-Y. Kan, 和 T.-S. Chua,"重新审视模式链接在文本到SQL中的作用," 在EMNLP会议上, 2020年。

[51] Y. Liu, M. Ott, N. Goyal, J. Du, M. Joshi, D. Chen,O. Levy, M. Lewis, L. Zettlemoyer, 和 V.斯托扬诺夫,“Roberta:一种鲁棒的BERT预训练方法”,ArXiv预印本,2019年。

[52]杨宇,李勇,刘立,戴宇,沈超,“利用变压器为端到端任务导向对话系统上下文化知识库”,在EMNLP会议论文集中,2021年。

[53]钟伟,刘明,王思仪,泽特莱莫伊尔,“零样本可执行语义解析的基于基的适应”,在EMNLP会议论文集中,2020年。

[54]阿尔巴维,穆罕默德·塔利姆,阿兹瓦伊·萨利姆,“卷积神经网络的理解”,在2017年国际工程技术与技术会议(ICET)上,2017年。

[55]刘强,杨迪,张军,郭军,周波,刘刚,“从预训练语言模型唤醒潜在的上下文用于语义解析”,arXiv预印本arXiv:2109.10540,2021年。

[56]马俊,严志,潘世平,张勇,申建,“SQL查询生成中的提及提取和链接”,在EMNLP会议论文集中,2020年。

[57]拉弗蒂,麦克劳姆,佩雷拉·C. F.,“条件随机场:序列数据的段分割和标记的概率模型”,在ICML会议论文集中,2001年。

[58]肖普,乌斯克罗伊特,瓦斯瓦尼,“带有相对位置表示的自注意力”,在AACL会议论文集中,2018年。

[59]王凯,沈伟,杨阳,钱晓,王荣,“基于关系的图注意力网络用于情感分析”,在ACL会议论文集中,2020年。

[60]李勇,塔尔洛德,布鲁克斯施密特,塞梅尔·R. S.,“门控图序列神经网络”,在ICLR会议论文集中,2016年。

[61]博金,加德纳,伯恩,“针对文本到SQL解析的全局推理数据库结构”,在EMNLP会议论文集中,2019年。

[62]王晨,潘晓鹏。黄A.波洛佐夫、M.布鲁克施密特和R.辛格,“执行引导的神经程序解码”,在ICML神经抽象机器与程序归纳研讨会v2(NAMPI),2018年。

[63]A.谢,李平,曼宁C.D.,“直击要点:带有指针生成网络的摘要”,在ACL会议论文集中,2017年。

[64]D.C.王,A.W.阿珀,J.L.孔和C.S.萨拉,“春日抽象语法描述语言”。在DSL中,1997年。

[65]R.塔贾纳,“深度优先搜索与线性图算法”,SIAM计算杂志,1972年。

[66]P.肖,张美文,帕苏帕特P.P.和托特纳科夫K.,“组合泛化和自然语言变体:语义解析方法能否同时处理?”在ACL会议论文集中,2021年。

[67]K.轩,王Y.,王Y.,文Z.和董Y.,“Sead:端到端文本到SQL生成与模式感知去噪”,ArXiv预印本,2021年。

[68]C.拉菲尔,N.沙泽尔,A.罗伯茨,李K.,纳兰S.,马泰纳M.,周Y.,李W.和刘平P.J.,“探索统一文本到文本变换器的迁移学习极限”,ArXiv预印本,2019年。

69]Q.刘,陈B.,郭J.,卢J.-G.,周B.和张D.,“我们离有效上下文建模有多远?关于上下文中语义解析的探索性研究”,在IJCAI会议论文集中,2020年。

[70]T.陆龙,H.法姆和曼宁C.D.,“基于注意力的神经机器翻译的有效方法”,在EMNLP会议论文集中,2015年。

[71]P.金和Lapata M.,“基于记忆的语义解析”,计算语言学协会交易,2021年。

[72]陈Z.,陈L.,李H.,曹R.,马D.,吴M.和托特纳科夫K.余,“多轮文本到SQL的去耦合对话建模与语义解析”,arXiv预印本arXiv:2106.02282,2021。

[73]郑勇,王宏,董波,王晓,李晨,“Hie-sql:历史信息增强网络用于上下文依赖的文本到SQL语义解析”,arXiv预印本arXiv:2203.07376,2022。

[74]崔浩,耿瑞,任强,李波,李宇,孙杰,黄世辉,施立,朱鹏,朱晓,“动态混合关系网络用于跨领域上下文依赖的语义解析”,ArXiv预印本,2021。

[75]蔡勇,万晓,“IGSQL:基于数据库模式交互图的语音识别生成神经模型”,在EMNLP会议论文集中,2020。

[76]王睿哲,凌志,周军,胡亚,“跟踪多轮文本到SQL语义解析的交互状态”,在AAAI会议论文集中,2021。

[77]王睿哲,凌志,周建博,胡亚,“跟踪多轮文本到SQL语义解析的交互状态”,在AAAI会议论文集中,2021。

[78]巴加瓦塔卢,诺塞特,唐德雷,“探索和挖掘维基百科上的表格的方法”,在KDD会议论文集中,2013。

[79]莱姆伯格,里茨,梅塞尔,比泽尔,“包含时间和上下文元数据的大型公共网页表格语料库”,在第25届国际万维网会议伴随研讨会论文集中,2016。

[80]巴加瓦塔卢,诺塞特,唐德雷,“表格:网页表格中的实体链接”,在ISWC会议论文集中,2015。

[81]帕里克,王晓,格赫曼,法鲁奎,丁格拉,杨洋,达斯,“ToTTo:一个受控的表格到文本生成数据集”,在EMNLP会议论文集中,2020。

[82]孙阳,严志,唐东,宁。段和秦博,“基于内容的表检索用于网络查询”,神经计算,2019年。

[83]邓晓,阿哈迈德·A·阿瓦达尔拉,梅克C,波洛佐夫O,孙浩,理查森M,“结构基的文本到SQL预训练”,在ACL会议论文集中,2021年。

[84]余涛,张荣,波洛佐夫A,梅克C,阿哈迈德·A·阿瓦达尔拉,“分数:对话语义解析中上下文表示的预训练”,在ICLR会议论文集中,2021年。

[85]杨伟,徐鹏,曹勇,“层次化神经数据合成用于语义解析”,ArXiv预印本,2021年。

[86]王波,尹伟,林晓伟,熊超,“学习合成数据用于语义解析”,在ACL会议论文集中,2021年。

[87]舒春,张勇,董晓,史鹏,余涛,张荣,“逻辑一致性文本生成来自语义解析”,在ACL发现会议论文集中,2021年。

[88]刘强,陈宝成,郭江,齐亚迪,林志良,陈伟,黄军,“Tapex:通过学习神经SQL执行器进行表预训练”,2021年。

[89]彭宁顿J,索赫R,曼宁C·D,“Glove:词表示的全局向量”,在EMNLP会议论文集中,2014年。

[90]艾斯赫尔斯洛姆J,戈尔M,穆勒T,科恩W,“MATE:多视图注意力以提高表变换器的效率”,在EMNLP会议论文集中,2021年。

[91]刘明,刘洋,古亚尔N,加兹维尼扬M,穆罕默德A,列维O,斯托亚诺夫V,泽特莱莫伊尔L,“BART:去噪序列到序列预训练用于自然语言生成、翻译和理解”,在ACL会议论文集中,2020年。

[92]施鹏,吴鹏,王志强,朱浩,李阿哈迈德·A,王军,唐纳德·D·多斯,贝克。向阳,“利用生成增强的预训练学习语义解析的上下文表示”,发表于AAAI会议,2021年。

[93]杨杰,古普塔,苏阿德亚,何亮,戈尔,保罗,“Tableformer:用于表-文本编码的鲁棒变压器建模”,ArXiv预印本,2022年。

[94]谢涛,吴晨超,史鹏,钟睿,施洛拉克,山口哲人,吴春生,钟明,尹梦溪,王思仪等,“Unifiedskg:用文本到文本语言模型统一和多任务结构化知识定位”,ArXiv预印本,2022年。

[95]王博,拉帕塔,提托伊,“语义解析领域泛化的元学习”,发表于AACL会议,2021年。

[96]塔马尔,约兰,卡特瓦,拉哈夫,王勇,阿西,伊哈尔科,豪吉希兹,伯兰特,“Multimodalqa:文本、表格和图像上的复杂问答”,发表于ICLR会议,2021年。

[97]佛罗里迪利,奇里阿蒂,“GPT-3:其本质、范围、限制及其后果”,《心智与机器》,2020年。

[98]陈明,图雷克,君浩,袁强,多潘德奥普蒂诺,卡普兰,埃德金斯,布尔达,约瑟夫,布鲁曼等,“评估基于代码的大型语言模型的性能”,arXiv预印本 arXiv:2107.03374,2021年。

[99]拉贾库马尔,李荣,巴丁诺,“评估大型语言模型的文本到SQL能力”,2022年。

[100]何伟,戴勇,杨明,孙军,黄锋,司立,李勇,“面向任务的对话理解与生成的统一对话模型预训练”,发表于SIGIR会议,2022年。

[101]何伟,戴勇,郑勇,吴志超,曹志刚,刘鹏,杨明,黄锋,司立等。"银河系:一个用于面向任务的对话的生成预训练模型,结合半监督学习和显式策略注入,"收录于AAAI会议论文集,2022年。

标签:文本,解析,Methods,表格,Text,查询,SQL,自然语言
From: https://blog.csdn.net/sinat_37574187/article/details/143489176

相关文章

  • arkUI:文本框、文本域的创建和常见用法(TextInput 、TextArea)
    arkUI:文本框、文本域的创建和常见用法(TextInput、TextArea)1主要内容说明2例子2.1文本框、文本域的创建(TextInput、TextArea)2.1.1源码1(文本框、文本域的创建)2.1.2源码1运行效果2.2设置文本框的输入类型2.2.1源码2(设置输入框的输入类型)2.2.2源码2运行效果2.3......
  • SQL注入其他情况
    宽字节注入当某字符的大小为两个字节时,被称为宽字节。宽字节注入是利用数据库在处理GBK等宽字节编码时的特性,通过特定的输入绕过过滤。当发现网站对敏感字符进行转义过滤,且数据库使用的是gbk编码GBK双字节编码:一个汉字用两个字节表示,首字节对应0x81-0xFE,尾字节对应0x40-0xFE......
  • 数据库操作与数据管理——Rust 与 SQLite 的集成
    第六章:数据库操作与数据管理第一节:Rust与SQLite的集成在本节中,我们将深入探讨如何在Rust中使用SQLite数据库,涵盖从基本的CRUD操作到事务处理、数据模型的构建、性能优化以及安全性考虑等方面。SQLite是一个轻量级的关系型数据库,适合嵌入式应用和小型项目。我们将利......
  • Java毕设项目案例实战II基于Java+Spring Boot+Mysql的果蔬作物疾病防治系统的设计与实
    目录一、前言二、技术介绍三、系统实现四、核心代码五、源码获取全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末一、前言随着现代农业的快速发展,果蔬作物的健康生长与高效管理......
  • Java毕设项目案例实战II基于Java+Spring Boot+Mysql的公司资产网站设计与实现(开发文档
    目录一、前言二、技术介绍三、系统实现四、核心代码五、源码获取全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末一、前言在当今信息化高速发展的时代,企业资产的高效管理和精确......
  • SQL注入学习笔记
    BUUSQLCOURSE1一道很入门的的SQL手工注入,所用到的知识点也就只有union和group_concat联合注入和输出,带给我的主要收获是解读了题解代码后初步理解了查数据库名->表名->列名—>具体元素的三板斧,和具体查询原理0unionselectdatabase(),group_concat(table_name)frominform......
  • IDEA连接mysql数据库
    再开始之前,我们需要下载mysql的数据库驱动jar包,下载地址如下:http://dev.mysql.com/downloads/connector/j/?os=26打开网址后选择第二个下载,下载后解压即可,解压后打开文件,后缀为.jar的即驱动jar包首先,我们在idea中新建一个project,这里我命名为test,大家还可以把project放到自己......
  • 开源数据库 - mysql - innodb源码阅读 - master线程(一)
    masterstruct/**Themasterthreadcontrollingtheserver.*/voidsrv_master_thread(){DBUG_TRACE;srv_slot_t*slot;//槽位THD*thd=create_internal_thd();//创建内部线程ut_ad(!srv_read_only_mode);//断言srv_read_only_m......