摘要

本文首要介绍了Text-to-SQL研讨的界说、含义、研讨办法以及未来展望,首要是对Text-to-SQL范畴进行一个初步的知道和了解,合适初学者入门了解。

1 引言

作为Text-to-SQL范畴的小白,学习该范畴的最好方式便是看最新的总述文章,一般来说,总述文章都是由该范畴的多位大牛综合上百篇文章构成的总结、沉积和思考。经过学习总述文章,咱们能够快速对该范畴有一个大局的知道,站得高看得远仍是很有道理的。一同学习总述文章,咱们能够站在巨人的肩膀上,了解该范畴的最新发展,防止出现凭空捏造的状况。

那么今日我首要以2022年的2篇总述文章为主,简略介绍一下该研讨范畴。

  • 1.第一篇总述文章标题为《A Survey on Text-to-SQL Parsing: Concepts, Methods, and Future Directions》,意思便是Text-to-SQL解析的概念、办法和未来方向。
  • 发表期刊/会议:IEEE Transactions on Knowledge and Data Engineering,简称为TKDE,归于CCF-A类期刊,归于数据库/数据挖掘/内容检索上的顶刊!(如果不知道期刊会议等级能够经过ccf.atom.im/这个链接查询)。
  • 发表时间:2022年
  • 论文作者:Bowen Qin, Binyuan Hui, Lihan Wang, Min Yang, Jinyang Li, Binhua Li, Ruiying Geng, Rongyu Cao, Jian, Sun, Luo Si, Fei Huang, Yongbin Li(能够看出团队阵容仍是很强壮的)
  • 作者单位:中科院、阿里巴巴达摩院、香港大学
  • 文章链接:arxiv.org/pdf/2208.13…
  • 2.第二篇总述文章标题是《Recent Advances in Text-to-SQL: A Survey of What We Have and What We Expect》,意思便是Text-to-SQL范畴的最新进展:关于咱们所具有该范畴的常识以及和所期盼的发展方向的总述。
  • 发表期刊/会议:International Conference on Computational Linguistics,简称COLOING,归于CCF-B类会议,归于人工智能范畴/NLP范畴有重要影响力的会议。(一般来说,ACL、NAACL、EMNLP、COLING被称为是NLP范畴的四大顶会。)
  • 发表时间:2022年
  • 论文作者:Naihao Deng、Yulong Chen、 Yue Zhang
  • 作者单位:密歇根大学(美国)、西湖大学
  • 文章链接:arxiv.org/pdf/2208.10…

2 Text-to-SQL是什么?

了解一个研讨范畴,首先需求搞了解使命是什么?确定使命的输入输出边界是什么?也便是了解what?

Text-to-SQL(简写为T2S,或者是Text2SQL),顾名思义便是把文本转化为SQL言语,更学术一点的界说是:把数据库范畴下的自然言语(Natural Language,简写为NL)问题,转化为在联系型数据库中能够履行的结构化查询言语(Structured Query Language,简写为SQL),因而T2S也能够被简写为NL2SQL。

举个比方比较直观,T2S使命给定一个表格Table,输入便是一段自然言语文本,输出便是SQL句子,如图1(Sun, Tang et al., 2018)所示:用户想要查询 “由安娜开始演唱的歌曲总数是多少?”,经过T2S使命解析后,输出SQL句子,履行模块再在数据库中履行SQL,返回履行成果:1。

  • 输入:自然言语问题:“what ‘s the total number of songs originally performed by anna nalick?”

  • 输出:SQL句子:“SELECT COUNT Song choice WHERE Original artist = anna christine nalick”

Text-to-SQL小白入门(一)综述文章学习

图1 Text-to-SQL比方

再举个中文场景的比方,比方给定如下表1,用户查询问题:“新浪网的周涨跌幅是多少?”,输出SQL句子“SELECT 周涨跌幅 FROM 表1 WHERE 称号 = ‘新浪’”,经过数据库SQL履行器后,得到输出-4.52.

  • 输入:“新浪网的周涨跌幅是多少?”

  • 输出:“SELECT 周涨跌幅 FROM 表1 WHERE 称号 = ‘新浪’”

Text-to-SQL小白入门(一)综述文章学习

表1 测试表

前不久,github上有个比较有意思的项目叫DB-GPT,专注于做数据库场景下的安全可靠隐私的大模型,现在已经有5.7k的star,能够直接体验一下T2S的功能,这儿贴上几张效果图,详情能够参阅点击前面的超链接进入运用。

  • 如图2所示,依据自然言语生成SQL(这便是前面说到的T2S)

Text-to-SQL小白入门(一)综述文章学习

图2 DB-GPT中生成SQL效果图

  • 如图3所示,与数据对话,直接查看成果(把主动生成的SQL句子在数据库中履行并展示到网页)

Text-to-SQL小白入门(一)综述文章学习

图3 DB-GPT中与数据对话效果图

3 Text-to-SQL有什么用?

咱们前面说到了T2S的界说,了解了T2S最基础的概念是什么,那么接下来了解一下研讨T2S的价值是什么,有什么含义,能够在哪些范畴发挥作用,也便是了解why?

T2S能够让非专家用户无需吃力地查询表,并在各种现实生活运用程序中发挥核心作用,如智能客户服务、智能问答和机器人导航等。

  • 智能客户服务:假定一家电子商务公司具有很多的客户数据,包含客户的订单信息、客户的问题和反馈等。这些数据一般存储在联系型数据库中,但是这些数据关于客户服务来说,查询和剖析起来比较困难。因而,该公司选用Text-to-SQL技能将自然言语文本数据转化为结构化数据,以便更容易地进行查询和剖析。例如,客户服务人员能够经过Text-to-SQL查询体系快速地检索出最近一段时间内提出的问题,并依据问题的类型、等级和优先级进行分类和处理。此外,Text-to-SQL还能够将自然言语问题转化为结构化问题,方便数据库进行问题的剖析和处理,然后进步客户服务的功率和质量。
  • 智能问答:智能问答体系一般需求很多的自然言语文本数据,以便能够了解用户的问题并给出相应的答案。Text-to-SQL能够将这些自然言语文本数据转化为结构化数据,以便更容易地进行查询和剖析。例如,智能问答体系能够经过Text-to-SQL查询体系快速地检索出用户的问题,并依据问题的类型、关键词和语义等信息进行分类和处理。此外,Text-to-SQL还能够将自然言语问题转化为结构化问题,方便数据库进行问题的剖析和处理,然后进步智能问答体系的功率和准确性。
  • 机器人导航:机器人导航体系需求能够了解环境中的自然言语信息,以便能够感知环境并做出相应的决议计划。Text-to-SQL能够将这些自然言语信息转化为结构化数据,以便更容易地进行查询和剖析。
  • 其他

4 Text-to-SQL办法调集

前面咱们已经了解了T2S使命的界说以及价值,那么最重要的便是学习如何去做?如何完成T2S?也便是how?

在了解T2S办法之前,先了解一下数据集和评测方针。

4.1 数据集

在TKDE总述文章中,常见的数据集有GenQuery、Scholar、WikiSQL、Spider、Spider-SYN、Spider-DK、Spider-SSP、CSpider、SQUALL、DuSQL、ATIS、SparC、CHASE等,如图4所示。

Text-to-SQL小白入门(一)综述文章学习

图4 T2S数据集汇总示意图

由图4可知,数据集的分类有单范畴和交叉范畴;有单轮对话和多轮对话;有简略问题和杂乱问题;有中文言语和英文言语;有单张表和多张表等。

在COLING总述文章中,最新的T2S相关数据集首要有Spider、WikiSQL、Squall、KaggleDBQA、IMDB、Yelp、Advisiing、MIMICSQL、SEDE等,如图5所示。文章中把数据集首要划分为3类:单域数据集、跨域数据集和其他数据集。

Text-to-SQL小白入门(一)综述文章学习

图5 T2S最近几年的数据集汇总示意图

接下来结合两个总述文章,介绍几个要点数据集:WikiSQL、Spider、CHASE等。

4.1.1 WikiSQL

WikiSQL数据集是现在规模最大的T2S数据集,由2017年美国的Salesforce公司提出,场景来源于 Wikipedia,归于单范畴。数据标示选用外包。

  • 包含了80654个自然言语问题,77840个SQL句子。

  • 包含了26521张数据库表,1个数据库只有1张表。

  • 猜测的SQL句子方式比较简略,基本为一个SQL主句加上0-3个WHERE子句条件约束构成,如图6所示

Text-to-SQL小白入门(一)综述文章学习

图6 WikiSQL数据集SQL句子统计

4.1.2 Spider

Spider数据集是多数据库、多表、单轮查询的T2S数据集,也是业界公认难度最大的大规模跨范畴评测榜单,由2018年耶鲁大学提出,由11名耶鲁大学学生标示。

  • 10181个自然言语问题,5693个SQL句子。

  • 触及138个不同范畴的200多个数据库。

  • 7000个问题用于练习train,1034用于开发development,2147用于test。

  • 难易程度分为:简略、中等、困难、特别困难,如图7所示。

Text-to-SQL小白入门(一)综述文章学习

图7 Spider数据集SQL句子示例

4.1.3 CHASE

CHASE数据集是首个跨范畴、多轮Text2SQL中文数据集,由2021年微软亚洲研讨院、北航和西安交大提出,相关论文被2021ACL接纳。

  • 跨范畴,包含280个不同范畴的数据库,且 train/dev/test 不重复;
  • 大规模,包含5459个多轮问题组成的列表,总共17940个<query, SQL>二元组,多轮对话如图8所示,用户的第一个输入“哪所大学培养了最多MVP球员”归于独立问题,没有可参阅的上下文;紧接着第二个问题“状元呢”直接省掉了主语“大学”,完好的问题应该是“哪所大学培养了最多状元”,模型需求结合前史信息才能生成正确的SQL。第三个问题同样相似。

Text-to-SQL小白入门(一)综述文章学习

图8 Spider数据集多轮对话问答示例

  • 多轮交互,同一个列表的问题之间会有实体省掉等交互现象,相似于 SParc 和 CoSQL;
  • 中文数据集,问题和数据库表名、列名、其中的元素都是中文,相比之下,CSpider仅仅将表名、列名字段翻译为中文。
  • 标示信息丰厚,除了 query 和 SQL,CHASE 额外标示了(1)上下文依靠联系,包含 Coreference 共指、Ellipsis 省掉;(2)形式链接联系,关于 query 中说到的表名和列名信息进行了标记。

4.2 评测方针

现在来说,没有彻底一致的规范度量,现在广泛运用的是履行准确率(Execution Accuracy,简称EX)和逻辑方式准确率(Exact Match,简称EM)。

4.2.1 履行准确率

  • 界说:计算SQL履行成果正确的数量在数据会集的份额。
  • 缺陷:存在高估的或许。由于一个彻底不同的非规范的SQL或许查出于与规范SQL相同的成果(例如,空成果),这时也会判为正确。
  • 举个比方:假如有个学生表,咱们想要查询学生表中年纪等于19的学生姓名,就如“SELECT sname FROM Student where age = 19;”所示,经过数据库履行规范SQL后得到成果为null;此时Text-to-SQL模型猜测的SQL为“SELECT sname FROM Student where age = 20;”,经过数据库履行后也得到成果为null。虽然猜测的SQL跟标示的SQL不一致,但是成果是一样的,依据履行准确率方针来比较,那么就以为模型猜测是正确的。
# groundtruth_SQL
SELECT sname FROM Student where age = 19;
# SQL履行成果
null
# predict_SQL
SELECT sname FROM Student where age = 20;
# SQL履行成果
null

4.2.2 逻辑方式准确率

  • 界说:计算模型生成的SQL和标示SQL的匹配程度。
  • 缺陷:存在低估的或许。如一个SQL履行成果是正确的,但于标示SQL的字符串并非彻底匹配,例如,仅仅select 列的顺序不同或SQL查询意图彻底相同的不同SQL。为了处理一部分该问题,有研讨指出了一种查询匹配精度query match accuracy:将生成的SQL和标示SQL都以规范方式表明,再计算两者匹配精度。这种办法只处理了由于排序问题而导致的误判。另外,经过对列和表进行排序并运用规范化别号来对SQL进行规范化,也能够消除不同SQL格局导致的误判问题。
  • 举个比方:同样地,假如有个学生表,咱们想要查询学生表中年纪等于19的学生姓名和学生学号。,就如“SELECT sname FROM Student where age = 19;”所示,经过数据库履行规范SQL后得到成果为(张三,123456);此时Text-to-SQL模型猜测的SQL为“SELECT sno,sname FROM Student where age = 19;”,经过数据库履行后也得到成果为(123456,张三),如果从逻辑方式准确率方针来看,由于SQL并不是一摸一样,虽然两者仅仅挑选顺序的语序问题,所以会以为模型猜测是过错的。
# groundtruth_SQL
SELECT sname,sno FROM Student where age = 19# SQL履行成果
张三,123456
# predict_SQL
SELECT sno,sname FROM Student where age = 19# SQL履行成果
123456,张三

4.3 研讨办法

4.3.1 根据模版和匹配的办法

由于输出SQL本质上:是一个契合语法、有逻辑结构的序列,自身具有很强范式结构,所以能够采纳根据模板和规矩的办法。简略SQL句子都能够笼统成如下图9:

Text-to-SQL小白入门(一)综述文章学习

图9 简略SQL模板示例

  • AGG表明聚合函数,如求MAX,计数COUNT,求MIN。
  • COLUMN表明需求查询的方针列。
  • WOP表明多个条件之间的相关规矩“与and /或 or”
  • 三元组 [COLUMN, OP, VALUE] 构成了查询条件,别离代表条件列、条件操作符(>、=、<等)、条件值。
  • *表明方针列和查询条件不止一个!

根据模板和匹配的办法,是前期的研讨办法,适用于简略SQL,界说后的sql准确率高;不合适杂乱SQL,没有界说模板的SQL不能识别。

4.3.2 根据Seq2Seq结构办法

关于T2S研讨而言,本质上归于自然言语处理(Natural Language Processing,NLP),而在NLP范畴中,常见的使命能够大概分为如下四个场景,1、N和M代表的是token的数量。

  • 1 -> N:生成使命,比方输入为一张图片,输出图片的文本描述。
  • N -> 1:分类使命,比方输入为一句话,输出这句话的情感分类。
  • N -> N:序列标示使命,比方输入一句话,输出该句话的词性标示。
  • N -> M:机器翻译使命,比方输入一句中文,输出英文翻译。

能够发现的是,T2S使命是契合N -> M机器翻译使命的,处理机器翻译使命最干流的办法是根据Seq2Seq结构办法,Seq2Seq是一种根据序列到序列模型的神经网络架构,它由两个部分组成:编码器Encoder和解码Decoder。因而,T2S最干流的办法也是根据Seq2Seq结构。

4.3.2.1 单轮对话T2S办法

  • Encoder
  • 输入数据表征:把自然言语问题和表结构信息进行编码。
  • 根据LSTM的办法。
  • 根据Transformer的办法。
  • 结构信息建模:使命本质上是一个高度结构化的使命,要点需求处理3个应战:
  • 链式结构linking structure,编码器需求将NL问题中说到的实体与所说到的形式表或列对齐。
  • 形式结构schema structure,编码的表明应该知道架构结构信息,如主键、外键和列类型。
  • 问题结构question structure,编码器应该能够感知NL问题的杂乱改变,即问题结构。
  • Decoder
  • 根据草图Sketch-based办法。
  • 内容:1.将SQL生成的进程分解为子模块,比方select列,AGG聚合(aggregate)功能,where 值。2.每个子模块对应于要填充的猜测槽的类型,比方select槽,AGG槽等,每个槽都有独立的模型,不共享练习参数,独立负责终究SQL的一部分。3.把子模块终究调集起来,生成SQL。
  • 优点:速度很快,确保契合正确的SQL语法规矩。
  • 缺陷:很难处理杂乱的SQL句子,比方嵌套查询,多表衔接等等。
  • 适用数据集:在WikiSQL数据集盛行;不适用于spider数据集。
  • 根据生成generation-based办法。
  • 内容:根据Seq2Seq模型来解码SQL。
  • 优点:更合适于杂乱SQL场景。
  • 缺陷:或许生成的SQL不契合语法,所以引入了深度遍历优先的笼统语法树abstract syntax tree。
  • 适用数据集:spider数据集也适用。

4.3.2.2 多轮对话T2S办法

  • Encoder

  • 多轮输入表征Multi-turn input representation。如图10所示,研讨了不同上下文信息编码办法对多回合T2S解析功能的影响,包含(a)接触每个问题序列中的一切NL问题作为输入,(b)运用回合级编码器处理每个问题,以及(c)设计一个门机制,以平衡每个前史问题的重要性。

Text-to-SQL小白入门(一)综述文章学习

图10 多轮对话不同上下文信息编码示例

  • 多轮结构建模Multi-turn Structure Modelling。
  • linking structure:R2SQL专注于上下文链接结构的独特性,引入了一种新颖的动态图结构来有效地对上下文问题、数据库形式及其之间的杂乱链接结构进行建模。运用衰减机制来评价前史链接对当时转弯的影响。
  • schema structure形式结构。IGSQL提出了一种数据库形式交互图编码器,用于将数据库形式项与前史项一同取得,然后坚持上下文一致性。跨回合形式交互图层和回合内形式图层别离运用上一回合和当时回合来更新形式项表明。IST-SQL处理了受面向使命的数据生成使命启示的多回合文本到SQL解析使命。IST-SQL界说、跟踪并利用多回合文本到SQL解析的交互状况,其中每个交互状况都由根据从前猜测的SQL查询的状况更新机制更新。
  • Decoder
  • 关于多回合设置,大多数以前的办法运用具有注意力机制的LSTM解码器,以发生根据前史NL问题、当时NL问题和表形式的SQL查询。解码器将当时NL问题、SQL状况、形式状况和上次猜测的SQL查询的编码表明作为输入,并在解码进程中运用查询修改机制来修改从前生成的SQL查询,一同兼并NL问题和形式的上下文。关于SQL查询,运用单独的层来猜测SQL关键字、表名和问题标记。softmax操作终究用于生成输出概率分布。

4.3.3 模型预练习办法

4.3.3.1 预练习数据结构

练习数据不足是学习强壮的预练习表格言语模型的一个重要应战。当运用于SQL解析使命的下游文本时,预练习数据的质量、数量和多样性对预练习言语模型的总体功能有严重影响。虽然从Web(例如维基百科)搜集很多表格很容易,但在搜集的表格上取得高质量的NL问题及其相应的SQL查询是一个劳动密集型和耗时的进程。最近,有很多的研讨能够手动或主动生成用于文本到SQL解析的预练习数据。接下来,咱们将从三个视点评论以前的预练习数据构建办法:表搜集、NL问题生成和逻辑方式(SQL)生成。

  • 表调集table collection
  • NL问题生成
  • SQL生成

4.3.3.2 输入编码input encoding

在文本到SQL的解析使命中,输入一般包含两部分:NL问题和表形式,输出或许是SQL查询。然而,文本数据、选项卡数据和SQL查询是异构的,它们具有不同的结构和格局。具体来说,表格数据一般分布在二维结构中,有数值和单词,而SQL查询一般由SQL关键字(如“SELECT”、“UPDATE”、“DELETE”、“INSERT INTO”)和形式元素组成。因而,在这三种类型的数据上开发一个联合推理结构是非常重要的。

  • 文本数据编码
  • 表格数据编码

4.3.3.3 预练习的方针

大多数现有的文本到SQL解析的预练习模型选用单个Transformer或根据编码器-解码器结构的Transformer作为骨干,并选用不同类型的预练习方针来捕捉文本到SQL的解析使命的特征。预练习方针可分为五个首要类别,包含掩蔽言语建模(MLM)、形式链接、SQL履行器、文本生成和上下文建模。

  • 屏蔽言语建模masked language modeling
  • 形式链接schema linking
  • SQL履行器
  • 文本生成
  • 上下文建模

5 Text-to-SQL未来展望

T2S方向未来发展放下首要有以下几个方向:

  • 高质量的练习数据生成
  • 处理大规模表格/数据库形态
  • 结构化表格数据编码
  • 异构信息建模
  • 跨范畴T2S
  • T2S模型的鲁棒性
  • 零样本/小样本学习
  • 上下文相关的T2S解析预练习
  • 模型可解释性
  • 数据隐私维护

参阅文献

1.Y. Sun, D. Tang, N. Duan, J. Ji, G. Cao, X. Feng, B. Qin, T. Liu, and M. Zhou, “Semantic parsing with syntax-and table-aware sql gener.,” in Proc. of the 56th Annu. Meeting of the Assoc. for Comput. Linguistics (Vol. 1: Long Papers), pp. 361–372, 2018.

2.Qin B, Hui B, Wang L, et al. A survey on text-to-sql parsing: Concepts, methods, and future directions[J]. arXiv preprint arXiv:2208.13629, 2022.

3.Deng N, Chen Y, Zhang Y. Recent advances in text-to-SQL: a survey of what we have and what we expect[J]. arXiv preprint arXiv:2208.10099, 2022.

4.www.bilibili.com/video/BV1At…

5.zhuanlan.zhihu.com/p/384293232

6..zhuanlan.zhihu.com/p/430369730

7.github.com/eosphoros-a…

8.github.com/eosphoros-a…