赞
踩
本文主要介绍了Text-to-SQL研究的定义、意义、研究方法以及未来展望,主要是对Text-to-SQL领域进行一个初步的认识和了解,适合初学者入门了解。
Awesome-Text2SQL这个项目主要收集了针对大型语言模型和Text2SQL等的精选教程和资源,希望能够共同学习、共同推动Text2SQL领域进步!
作为Text-to-SQL领域的小白,学习该领域的最好方式就是看最新的综述文章,一般而言,综述文章都是由该领域的多位大牛综合上百篇文章形成的总结、沉淀和思考。通过学习综述文章,我们可以快速对该领域有一个全局的认识,站得高看得远还是很有道理的。同时学习综述文章,我们可以站在巨人的肩膀上,了解该领域的最新发展,避免出现闭门造车的情况。
那么今天我主要以2022年的2篇综述文章为主,简单介绍一下该研究领域。
了解一个研究领域,首先需要搞明白任务是什么?确定任务的输入输出边界是什么?也就是了解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。
图1 Text-to-SQL例子
再举个中文场景的例子,比如给定如下表1,用户查询问题:“新浪网的周涨跌幅是多少?”,输出SQL语句“SELECT 周涨跌幅 FROM 表1 WHERE 名称 = '新浪'”,经过数据库SQL执行器后,得到输出-4.52.
表1 测试表
前不久,github上有个比较有意思的项目叫DB-GPT,专注于做数据库场景下的安全可靠隐私的大模型,目前已经有5.7k的star,可以直接体验一下T2S的功能,这里贴上几张效果图,详情可以参考点击前面的超链接进入使用。
图2 DB-GPT中生成SQL效果图
图3 DB-GPT中与数据对话效果图
我们前面提到了T2S的定义,了解了T2S最基础的概念是什么,那么接下来了解一下研究T2S的价值是什么,有什么意义,可以在哪些领域发挥作用,也就是了解why?
T2S可以让非专家用户无需费力地查询表,并在各种现实生活应用程序中发挥核心作用,如智能客户服务、智能问答和机器人导航等。
前面我们已经了解了T2S任务的定义以及价值,那么最重要的就是学习如何去做?如何实现T2S?也就是how?
在了解T2S方法之前,先了解一下数据集和评测指标。
在TKDE综述文章中,常见的数据集有GenQuery、Scholar、WikiSQL、Spider、Spider-SYN、Spider-DK、Spider-SSP、CSpider、SQUALL、DuSQL、ATIS、SparC、CHASE等,如图4所示。
图4 T2S数据集汇总示意图
由图4知,数据集的分类有单领域和交叉领域;有单轮对话和多轮对话;有简单问题和复杂问题;有中文语言和英文语言;有单张表和多张表等。
在COLING综述文章中,最新的T2S相关数据集主要有Spider、WikiSQL、Squall、KaggleDBQA、IMDB、Yelp、Advisiing、MIMICSQL、SEDE等,如图5所示。文章中把数据集主要划分为3类:单域数据集、跨域数据集和其他数据集。
图5 T2S最近几年的数据集汇总示意图
接下来结合两个综述文章,介绍几个重点数据集:WikiSQL、Spider、CHASE等。
WikiSQL数据集是目前规模最大的T2S数据集,由2017年美国的Salesforce公司提出,场景来源于 Wikipedia,属于单领域。数据标注采用外包。
图6 WikiSQL数据集SQL语句统计
Spider数据集是多数据库、多表、单轮查询的T2S数据集,也是业界公认难度最大的大规模跨领域评测榜单,由2018年耶鲁大学提出,由11名耶鲁大学学生标注。
图7 Spider数据集SQL语句示例
CHASE数据集是首个跨领域、多轮Text2SQL中文数据集,由2021年微软亚洲研究院、北航和西安交大提出,相关论文被2021ACL接收。
图8 Spider数据集多轮对话问答示例
目前来说,没有完全统一的标准度量,目前广泛使用的是执行准确率(Execution Accuracy,简称EX)和逻辑形式准确率(Exact Match,简称EM)。
# groundtruth_SQL SELECT sname FROM Student where age = 19; # SQL执行结果 null # predict_SQL SELECT sname FROM Student where age = 20; # SQL执行结果 null
# groundtruth_SQL SELECT sname,sno FROM Student where age = 19; # SQL执行结果 张三,123456 # predict_SQL SELECT sno,sname FROM Student where age = 19; # SQL执行结果 123456,张三
因为输出SQL本质上:是一个符合语法、有逻辑结构的序列,本身具有很强范式结构,所以可以采取基于模板和规则的方法。简单SQL语句都可以抽象成如下图9:
图9 简单SQL模板示例
基于模板和匹配的方法,是早期的研究方法,适用于简单SQL,定义后的sql准确率高;不适合复杂SQL,没有定义模板的SQL不能识别。
对于T2S研究而言,本质上属于自然语言处理(Natural Language Processing,NLP),而在NLP领域中,常见的任务可以大概分为如下四个场景,1、N和M代表的是token的数量。
可以发现的是,T2S任务是符合N -> M机器翻译任务的,处理机器翻译任务最主流的方法是基于Seq2Seq框架方法,Seq2Seq是一种基于序列到序列模型的神经网络架构,它由两个部分组成:编码器Encoder和解码Decoder。因此,T2S最主流的方法也是基于Seq2Seq框架。
图10 多轮对话不同上下文信息编码示例
训练数据不足是学习强大的预训练表格语言模型的一个重要挑战。当应用于SQL解析任务的下游文本时,预训练数据的质量、数量和多样性对预训练语言模型的总体性能有重大影响。尽管从Web(例如维基百科)收集大量表格很容易,但在收集的表格上获得高质量的NL问题及其相应的SQL查询是一个劳动密集型和耗时的过程。最近,有大量的研究可以手动或自动生成用于文本到SQL解析的预训练数据。接下来,我们将从三个角度讨论以前的预训练数据构建方法:表收集、NL问题生成和逻辑形式(SQL)生成。
在文本到SQL的解析任务中,输入通常包括两部分:NL问题和表模式,输出可能是SQL查询。然而,文本数据、选项卡数据和SQL查询是异构的,它们具有不同的结构和格式。具体来说,表格数据通常分布在二维结构中,有数值和单词,而SQL查询通常由SQL关键字(如“SELECT”、“UPDATE”、“DELETE”、“INSERT INTO”)和模式元素组成。因此,在这三种类型的数据上开发一个联合推理框架是非常重要的。
大多数现有的文本到SQL解析的预训练模型采用单个Transformer或基于编码器-解码器框架的Transformer作为主干,并采用不同类型的预训练目标来捕捉文本到SQL的解析任务的特征。预训练目标可分为五个主要类别,包括掩蔽语言建模(MLM)、模式链接、SQL执行器、文本生成和上下文建模。
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.Recent Advances in Text-to-SQL: A Survey of What We Have and What We Expect_哔哩哔哩_bilibili
5.ACL 2021 | CHASE:首个跨领域多轮Text2SQL中文数据集 - 知乎
6..2021你还在手写SQL吗?万字综述Text to SQL技术 - 知乎
7.https://github.com/eosphoros-ai/DB-GPT/blob/main/README.zh.md
8.https://github.com/eosphoros-ai/DB-GPT-Hub/blob/main/README.zh.md
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。