收藏 分销(赏)

基于中文自然语言的SQL生成综述.pdf

上传人:自信****多点 文档编号:2357568 上传时间:2024-05-28 格式:PDF 页数:11 大小:1.24MB
下载 相关 举报
基于中文自然语言的SQL生成综述.pdf_第1页
第1页 / 共11页
基于中文自然语言的SQL生成综述.pdf_第2页
第2页 / 共11页
基于中文自然语言的SQL生成综述.pdf_第3页
第3页 / 共11页
亲,该文档总共11页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、基于中文自然语言的 SQL 生成综述郑耀东,李旭峰,陈和平,贺桂娇(广州软件学院计算机系,广州510990)通信作者:郑耀东,E-mail:摘要:自然语言转为 SQL(NL2SQL)的研究有较高的应用价值,随着深度学习技术的成熟,越来越多的研究者开始将深度学习技术应用于 NL2SQL 任务中.本文梳理了英文和中文领域 NL2SQL 的研究现状,总结按年份发布的数据集和模型,对比当前 4 大中文 NL2SQL 数据集的特点,阐述了当前基于深度学习的 NL2SQL 任务的基本框架以及针对中文领域的单表简单问题和跨表复杂问题所适用的典型模型,介绍了一般常用的模型评测方法,并提出未来研究方向的展望.关

2、键词:NL2SQL;深度学习;中文数据集;自然语言处理引用格式:郑耀东,李旭峰,陈和平,贺桂娇.基于中文自然语言的 SQL 生成综述.计算机系统应用,2023,32(12):3242.http:/www.c-s- on SQL Generation Based on Chinese Natural LanguageZHENGYao-Dong,LIXu-Feng,CHENHe-Ping,HEGui-Jiao(DepartmentofComputerScience,SoftwareEngineeringInstituteofGuangzhou,Guangzhou510990,China)Abstr

3、act:TheresearchonnaturallanguagetoSQL(NL2SQL)hashighapplicationvalue.Withthematurityofdeeplearningtechnology,increasinglymoreresearchershavebeguntoapplydeeplearningtechnologytoNL2SQLtasks.ThisstudyreviewstheresearchstatusofNL2SQLinEnglishandChinesefieldsandsummarizesthedatasetsandmodelspublishedbyye

4、ar.Additionally,itcomparesthecharacteristicsofthefourmajorChineseNL2SQLdatasetsandexpoundsonthebasicframeworkofNL2SQLtasksbasedondeeplearningandtypicalmodelsforsimplesingle-tableproblemsandcomplexcross-tableproblemsinChineseNL2SQLfields.Finally,thecommonlyadoptedmodelevaluationmethodsareintroduced,a

5、ndfutureresearchdirectionsareputforward.Key words:naturallanguagetoSQL(NL2SQL);deepleaning;Chinesedataset;naturallanguageprocessing(NLP)1引言随着现代信息技术的发展以及数据的海量式增长,人们希望以更自然、便捷的方式从数据库中获取信息,NL2SQL(naturallanguagetoSQL)也称为 Text2SQL(texttoSQL)应运而生,旨在将用户熟悉的自然语言转换为 SQL 序列,继而完成数据库查询工作,从而打破人与结构化数据库之间的壁垒.NL2SQL

6、 问题可表示为:给定自然语言查询问句Q 以及相应的数据库表 T,由 NL2SQL 模型生成 SQL语句,其公式如式(1)所示:f(Q,T)SQL(1)早期的 NL2SQL 任务大多基于规则和流水线,所采用的数据集也是某个领域的简单数据集,研究方法难以复制.近几年,随着 WikiSQL 和 Spider 等大规模人工标注数据集的发布,以及深度学习和自然语言处计算机系统应用ISSN1003-3254,CODENCSAOBNE-mail:ComputerSystems&Applications,2023,32(12):3242doi:10.15888/ki.csa.009356http:/www.c

7、-s-中国科学院软件研究所版权所有.Tel:+86-10-62661041基金项目:广州软件学院科研项目(ky202113)收稿时间:2023-06-12;修改时间:2023-07-19;采用时间:2023-08-17;csa 在线出版时间:2023-10-20CNKI 网络首发时间:2023-10-2332专论综述SpecialIssue理技术的快速发展,NL2SQL 领域的研究受到广泛关注.研究者提出了一系列的新方法,不断地推进着这一领域的研究进展.本文对 NL2SQL 研究工作进行综述,并重点侧重于中文领域的研究.首先梳理了英文和中文领域 NL2SQL 的研究现状,总结了主要的方法和典型

8、模型.接着总结按年份发布的数据集和模型,对比当前 4 大中文 NL2SQL 数据集的特点.然后本文阐述了当前基于深度学习的 NL2SQL 任务的基本框架以及针对中文领域的单表简单问题和跨表复杂问题所适用的典型模型,并介绍了一般常用的模型评测方法.最后本文提出未来研究方向的展望.2NL2SQL 研究现状2.1 英文领域现状国外开展 NL2SQL 较早,早期传统的研究大多通过对特定数据库人工制定匹配规则的方式来完成.如LUNAR1、LADDER2、Chat-803、PRECISE4等.接着出现了针对数据集的研究,例如 ATIS5、GeoQuery6、JOBS6、Scholar7、Academic8

9、等.但针对这些数据集的研究并没有后来的 WikiSQL 或 Spider 那样得到广泛的应用.由于这些数据集仅关注单一领域,而且样本数太少,所提出的研究方法即使在特定领域表现良好,但通常不具备泛化能力和通用性.2017 年 Zhong等人提出了第 1 个大规模人工标注的 NL2SQL 数据集 WikiSQL9,研究者们开始基于 WikiSQL 数据集使用深度学习方法来解决 NL2SQL 方面的问题.对于WikSQL 的单表查询任务,基于草图和槽位填充的方法比较有效,典型的模型包括 SQLNet10、TypeSQL11、STAMP12、Coarse2Fine13、IncSQL14等.随着深度学习

10、的发展,Transformer 和 BERT 模型相继被提出并在自然语言处理任务上取得优异的成绩.Hwang 等人于 2019 年提出 SQLova 模型15,第 1 次把大规模预训练模型应用于 NL2SQL 任务.SQLova 使用 BERT 作为模型的输入表示层,以此取代 SQLNet中的词向量表示.SQLova 将预测 SQL 语句任务划分为 6 个子任务,并将自然语言问句和数据库表的列名均作为网络的输入进行编码.大规模预训练模型 BERT的引入,大幅提升了模型的语义分析能力,模型取得惊人的效果.He 等人提出 X-SQL 模型16,在预训练模型的选择上,采用了 MT-DNN 来代替 B

11、ERT,并在对列名编码时添加了上下文注意力机制,取得更好的效果.2020年,Lyu 等人提出 HydraNet 模型17,没有将所有列名和问句连接在一起做 BERT 编码,而是将每个列名分别与问句做编码,再通过规则按列输出组装成SQL 查询,取得更好的效果.2021 年,Xu 等人提出 SeaD 模型18,没有采用基于草图和槽填充的方法,而是直接训练序列到序列(Seq2Seq)的模型,使用 Transformer 作为基础架构,采用修改和删除列名以及打乱实体顺序的方式做数据增强,并使用一种条件敏感的执行指导策略来进行解码,从而最大化序列生成方法的潜能,在 Wiki-SQL 数据集上取得了最好成

12、绩.总结 WikiSQL 数据集主要模型的贡献和效果如表 1 所示.表 1WikiSQl 数据集主要模型的贡献和执行准确率模型名称提出年份模型主要贡献执行准确率(%)验证集测试集SeaD2021用新的模式感知去噪目标来训练模型,以提高NL2SQL任务的Seq2Seq生成性能92.993HydraNet2020每次编码NLQ和一列,将解码任务分为与具体列有关和无关的两类89.189.2X-SQL2019在预训练模型基础上,增加上下文增强层增强模式表示,提出一种基于KL散度的目标函数解决子任务分别优化的问题89.588.7SQLova2019基于草图,首次使用预训练模型BERT加强数据库和NLQ的

13、表示87.286.2IncSQL2018使用序列到动作的解码模型,保证了解码的上下文依赖8483.7Coarse2Fine2018提出了一种从粗到精的语义解析解码框架,分阶段生成where子句79.078.5TypeSQL2018利用列类型和schemalink等先验知识辅助编码过程,使模型更好地理解NLQ中稀有实体和数字74.573.5Seq2SQL2017将列名、NLQ和SQL关键字一起编码,设计3个子任务,where子句引入强化学习60.859.4SQLNet2017基于草图和槽填充思想,将NL2SQL任务转化为6个子任务69.868以上从 2017 年开展的基于深度学习的研究都是针对

14、WikiSQL 数据集,该数据集仅针对某个领域单个表做简单查询.Yu 等人于 2018 年提出更加复杂的 Spider数据集19,包含 oderby、groupby、join 以及嵌套查询.由于 SQL 更加复杂,以往针对 WikiSQL 数据集的模型不再适用.研究者们先后提出了 SyntaxSQLNet20、2023年第32卷第12期http:/www.c-s-计 算 机 系 统 应 用SpecialIssue专论综述33RCSQL21、IRNet22、RYANSQL23、SmBoP24、BRIDGE25、DT-Fixup26等模型,采用语法树、schemalinking 等技术提升模型效果

15、.随着图神经网络(graphneuralnetwork,GNN)在深度学习领域表现出优异的性能,越来越多的研究者开始在 NL2SQL 任务中利用图神经网络来表示关系型数据库的数据结构,以提升数据库信息的利用效率.GNN27、Global-GNN27、RAT-SQL28、Shadow-GNN29、LGESQL30、S2SQL31、INSL32等模型相继被提出,在 Spider 数据集上表现优异.SParC33和 CoSQL34数据集是对 Spider 数据集的扩展,具有上下文语义相关、跨域、多轮对话等特性,与实际的问答场景更加接近,新的数据集为该领域的研究带来更大的挑战.EditSQL35、Be

16、rtrand-DR36、HIE-SQL37、UniSAr38、RASAT39、CQR-SQL40等模型增强 SQL 在语境理解方面的解析能力,都取得了相对较好的效果.随着模型参数规模的增加,大语言模型(LLM)展现出涌现能力,Codex、chatGPT、GPT-4、PaLM、OPT 等大语言模型在零样本、小样本或上下文学习方面取得显著的成就.Pourreza 等人提出 DIN-SQL 模型41,Sun 等人提出 SQL-PaLM 模型42,在 Spider 数据集上都取得了最优成绩.Spider 数据集更加贴近实际应用场景,近几年的绝大部分工作都在 Spider 数据集上进行测试,由于难度较大

17、,在 Spider 数据集上模型的准确率要低于WikiSQL 数据集,总结主要模型的贡献和效果如表 2所示.英文 NL2SQL 的研究已经比较成熟,总结英文领域 NL2SQL 的主要方法和典型模型如表 3 所示.表 2Spider 数据集主要模型的贡献和执行准确率模型名称提出年份模型主要贡献执行准确率(%)验证集测试集SQL-PaLM2023应用大语言模型PaLM2的few-shot和微调能力78.2DIN-SQL+GPT-42023应用大语言模型GPT-474.2SSQL+ELECTRA2021将语法注入到question-schema图编码器,有效利用问句的语法依赖信息来提高性能76.47

18、2.1LGESQL+ELECTRA2021通过引入线性有向图,在简化图的同时突出边信息75.172RASAT+PICARD2022TransformerSeq2Seq架构,增强了关系感知自注意力75.370.9ShadowGNN+RoBERTa2020通过忽略数据库中语义项目的名称,在图投影神经网络中利用抽象模式来获得问题和模式的非词汇化表示72.366.1LGESQL+GloVe2021通过引入线性有向图,在简化图的同时突出边信息67.662.8SmBoP+BART2020在解码步骤构建前k个子树,并允许自底向上解码特定高度的子树6660.5BRIDGE+BERT2020用标记序列表示问句和

19、数据库schema,其中字段的子集用问句中的单元格值进行扩充,以解决跨数据库场景下问句和数据库的依赖关系65.559.2RAT-SQL2019引入了数据库模式图(schemagraph)来表示数据库结构60.653.7Global-GNN2019在GNN基础上,全局选择与问题相关的列和表,对候选结果进行重排52.747.4IRNet2019设计中间表示语言SemQL,可有效解决复杂SQL的生成问题53.246.7GNN2019数据库结构用图神经网络建模40.739.4EditSQL2019提出查询编辑机制,通过交互的方法来提高生成SQL的准确率36.432.9RCSQL2019基于自注意力机制

20、的数据库模式编码器,以递归方式支持嵌套查询28.524.3SyntaxSQLNet2018基于模版的方法,语法树18.919.7SQLNet2017基于草图和槽填充思想,将NL2SQL任务转化为6个子任务10.912.4TypeSQL2018利用列类型和schemalink等先验知识辅助编码过程,使模型更好地理解NLQ中稀有实体和数字88.2表 3英文 NL2SQL 方法和典型模型方法典型模型基于规则和流水线LUNAR、LADDER、Chat-80、PRECISE、Nchiql基于草图SQLNet、TypeSQL、STAMP、Coarse2Fine、IncSQL、X-SQL、SQLova、RY

21、ANSQL、SyntaxSQLNet多轮对话EditSQL、HIE-SQL、UniSAr、RASAT、CQR-SQL基于图神经网络GNN、Global-GNN、RAT-SQL、ShadowGNN、LGESQL基于大语言模型DIN-SQL、SQL-PaLM计 算 机 系 统 应 用http:/www.c-s-2023年第32卷第12期34专论综述SpecialIssue2.2 中文领域现状中文领域 NL2SQL 发展相对落后,一方面,中文语法和语义相对复杂,相比于英文,处理难度较大.另一方面,早期中文 NL2SQL 数据集的缺乏也在一定程度上限制了中文问答系统的发展.李保利等人于 1999 年提

22、出了 WTCDIS 接口43,能够处理省略及乱序的用户输入,但系统的可移植性差,不能直接迁移到其他领域上.孟小峰等人提出 Nchiql44,对自然语言问句进行语法和语义分析,首先将自然语言问句表示为语义依存树,然后将语义依存树转变为 SQL 查询.Shen 等人提出 SPSQL45,结合流水线方法和深度学习的方法,将任务分解为表选择、列选择、SQL 生成和值调整 4 个子任务,有效地提升了性能.2019 年,西湖大学 Min 等人将 Spider 数据集中的自然语言问句部分进行了中文翻译,发布了 CSpider46中文复杂 SQL 数据集.通过这个数据集应用 Yu 等人20的 SyntaxSQ

23、LNet 模型作为基线系统的测试,进一步探索了中文 NL2SQL 任务的挑战.2019 年 6 月,追一科技举办了首届中文 NL2SQL比赛,这让中文 NL2SQL 受到广泛关注.本次比赛还发布了首个大规模中文 NL2SQL 数据集 TableQA47,以金融和通用领域数据为数据源,方便后续研究者展开研究.主办方给出一个应用 SQLNet 模型的基线,SQLNet针对英文 WikiSQL 数据集效果较好,但在应用中文数据集时效果不佳.主要的挑战包括:where 条件值预测不够精准;问句中没有提到 SQL 语句中的选择列和条件列;问句和条件关系表示不一致等.另外,研究者在TableQA 数据集上

24、直接应用 SQLova 模型得到的效果虽然好于 SQLNet,但还有比较大的改善空间.Zhang等人在本次比赛提出的 M-SQL模型48,以哈工大讯飞联合实验室提出的中文 BERT 预训练模型作为编码器作初始化参数,搭建了多任务学习框架,通过联合学习提高了模型的准确度,获得了比赛的第一名.F-SQL49在 M-SQL 的基础上,使用门机制融合数据库模式和表内容,有效地增强了列表示,提高了 SQL 查询生成性能.2020 年,百度举行语言与智能技术竞赛,此次比赛提供大规模开放域的复杂中文NL2SQL 数据集DuSQL50.随数据集发布了 IRNet-Ext 模型,该模型为IRNet 模型的扩展版

25、本,以适应中文 DuSQL 数据集的特点.2021 年,微软研究院联合西安交大、北航等机构发布了 CHASE 数据集51,通过人工标注和审核丰富了问题的多样性和难度,也更加贴近实际应用场景.基于多轮对话的模型,如 UniSAr,除了适用于 WikiSQL、Spider 等英文数据集,在中文数据集 DuSQL 和 CHASE上也取得了较好的实验效果.汇总中文 NL2SQL 模型和主要贡献如表 4 所示.总结 NL2SQL 领域按年份发布的中、英文数据集和模型汇总如图 1 所示.表 4中文 NL2SQL 模型和主要贡献模型名称数据集提出年份模型主要贡献测试集执行准确率(%)SPSQL电力行业数据2

26、023结合流水线方法和深度学习的方法,将任务分解为表选择、列选择、SQL生成和值调整4个子任务95.6UniSArCHASE2022提出一种统一结构感知自回归语言模型,可以在一个统一的框架中解决跨各种设置的NL2SQL的问题42.2EditSQLCHASE2021随CHASE发布的基线模型37.7IRNet-ExtDuSQL2020针对中文语言的特点,在IRNet模型基础上做改进54.3F-SQLTableQA2020在M-SQL的基础之上,使用门机制融合数据库模式和表内容,有效地增强了列表示91.8M-SQLTableQA2020以中文BERT-wwm-ext模型作为预训练,搭建多任务学习框

27、架90.2SQLovaTableQA2020基于草图和中文BERT模型,在中文数据集上表现更好49.7SQLNetTableQA2020首次发布中文NL2SQL数据集,应用SQLNet模型作为基线30.1SyntaxSQLNetCSpider2019翻译英文Spider数据集,应用SyntaxSQLNet模型作为基线14.1Nchiql2001对自然语言问句进行语法和语义分析,将自然语言问句表示为语义依存树WTCDIS1999数据库汉语言查询接口,能够处理省略及乱序的用户输入2023年第32卷第12期http:/www.c-s-计 算 机 系 统 应 用SpecialIssue专论综述3520

28、17 以前SQLNet20172018201920202021LUNARLADDERChat-80EAADNchiqlPRECISESTAMPTypeSQLCoarse2FineIncSQLSyntaxSQLNetSQLovaX-SQLRCSQLIRNetGlobal GNNEditSQLRAT-SQLBertrand-DRRYANSQLHydraNetSmBoPBRIDGEM-SQLF-SQLDT-FixupShadowGNNLGESQLSeaD2022S2SQLHIE-SQLUniSArRASATCQR-SQLWikiSQLATISGeoQueryJOBSScholarAcademic模型

29、数据集SpiderCSpiderTableQASParCCoSQLDuSQLCHASE2023SPSQLINSLDIN-SQLSQL-PaLMSeq2SQL图 1NL2SQL 数据集和模型汇总3中文 NL2SQL 数据集随着近几年深度学习技术在自然语言处理领域的广泛应用,NL2SQL 任务取得了较大进展,而现阶段对 NL2SQL 任务的研究大部分还是基于英文数据集.对于中文 NL2SQL 技术的研究还处在初级阶段,相对于英文,中文表达更加多样化,机器理解更加困难.TableQA 数据集为中文领域公布的第 1 个大型NL2SQL 数据集,由追一科技公司于 2019 年天池大赛中发布.该数据集包含

30、金融以及通用领域的用户自然语言查询文本与 SQL 语句的标注匹配数据对,包含64891 个问题和相对应的 20311 个唯一 SQL 语句.和WikiSQL 数据集类似,TableQA 中的 SQL 语句仅适用于单个表,适用的范围较窄,无法进行多表 SQL 查询生成.CSpider 数据集为 Spider 数据集的中文翻译,由9691 个问句和 5263 个复杂 SQL 查询组成,涉及 166个数据库,880 个表涵盖 138 个不同的域.作者翻译了问句和数据库的内容,但保留了英文的数据表名和数据列名以方便工程应用,这也增加了问句和数据库对应的难度.另外,在翻译的过程中,对一些英文的地名和人名

31、进行了本地化处理.CSpider 根据 SQL 语句中出现关键字的数量、选择和条件的复杂度以及 groupby、orderby 和嵌套查询、聚合操作的应用等为依据将每个问题分为了简单、中等、困难、极难 4 个等级,方便更好地验证模型在不同查询上的性能.百度 2019 年在语言与智能技术竞赛中发布的DuSQL 是一个跨域的面向实际应用的数据集.包含200 个数据库、覆盖 164 个领域的 813 个表以及 23797个问句/SQL 对.数据源来自百度百科、贴吧以及权威网站等,该数据集更贴近真实应用场景,问题覆盖了匹配、计算、推理等实际应用中的常见形式.2021 年发布的 CHASE 数据集是一个

32、复杂的高质量多轮交互数据集.它由 280 个不同领域的数据库和5459 个问题序列以及 17940 个问句/SQL 对组成.CHASE 中的每个问题都有丰富的语义注释,包括其SQL 查询、上下文依赖和模式链接.作为第一个跨域的多轮 NL2SQL 中文数据集,作者翻译了英文多轮对话数据集 SParC,并做了修复和优化以组成 CHASE-T.CHASE-C 精选 DuSQL 中 120 个高质量数据库,包括体育、教育、娱乐等 60 个子领域,并做了人工审核和优化.NL2SQL 数据集有不同的分类方法,根据覆盖领域的数量,可以分为单领域和多领域;根据每个数据库包含表的数量,可分为单表和跨表;根据交互

33、方式,可分为单轮和多轮.表 5 所示为 4 个中文数据集的基本信息和分类.表 5中文 NL2SQL 数据集的基本信息和分类数据集发布机构发布年份问句/SQL对数据库个数表个数涉及领域交互方式单表/跨表TableQA追一科技20192031152915291多领域单轮单表CSpider西湖大学20199691166876多领域单轮跨表DuSQL百度202023797200813多领域单轮跨表CHASE微软研究院、西安交大、北航2021179402801280多领域多轮跨表计 算 机 系 统 应 用http:/www.c-s-2023年第32卷第12期36专论综述SpecialIssueNL2SQ

34、L 数据集的发展趋势是从单表、单领域、单轮、简单问题到跨表、多领域、多轮、复杂问题,任务难度也逐步提升.中文领域的 TableQA 到 CHASE,其难度也逐步加深,数据样例如表 6 所示.表 6中文 NL2SQL 数据集样例数据集问题/SQL对样例TableQA问句:净资产收益率达到20以上或者季度每股盈余达到1以上的有哪些证券?SQL:select证券代码from国内钢企ROE及PE表whereROE20orEPS1CSpider问句:1998参加全明星赛的球员的名字和姓氏是什么?SQL:selectname_first,name_lastfromplayerasT1joinall_sta

35、rasT2onT1.player_id=T2.player_idwhereyear=1998DuSQL问句:在年龄不到26岁获得欧洲杯金球奖的足球运动员中,给出获得金球奖不止5个的足球运动员的中文名字及其国籍SQL:selectT2.中文名,T2.国籍from欧洲杯金球奖asT1join足球运动员asT2on欧洲杯金球奖.运动员id=足球运动员.词条idwhereT2.年龄5CHASE问句:2019年哪个省份的生产总值最高?SQL:selectT2.名称from省生产总值asT1join省份asT2onT1.省份id=T2.省份idwhereT1.年份=2019orderbyT1.GDPDES

36、CLIMIT1问句:2015年的呢?SQL:selectT2.名称from省生产总值asT1join省份asT2onT1.省份id=T2.省份idwhereT1.年份=2015orderbyT1.GDPDESCLIMIT14中文 NL2SQL 典型模型和评测方法4.1 模型基本框架基于深度学习的研究方法,NL2SQL 的任务可被认为是一个类似机器翻译的序列到序列的生成任务,主要采用 Encoder-Decoder 框架,利用端到端的模型,实现将自然语言问句翻译为结构化的 SQL 语句序列,如图 2 所示.首先将自然语言问句和数据库表结构通过编码器编码为向量,再通过解码器解码后输出 SQL语句.

37、编码器 Encoder向量解码器 Decoder自然语言问句、数据库schemaSQL 语句输入:输出:图 2NL2SQL 任务 Encoder-Decoder 框架4.2 单表简单模型单表查询的问答是实际场景中应用十分广泛的一项 NL2SQL 任务,针对英文 WikiSQL 数据集的研究已经十分成熟.主流的方案采用槽位填充的方法,可以充分利用 SQL 语句的语法规则.SQL 语句具有固定的语法格式,按顺序,它由select、where、and/or 关键字组成,后面跟着要填充的内容.如图 3 所示为 SQLNet 模型,$agg 表示聚合函数、$column 表示列名、$op 表示运算符、$

38、value 表示值,“*”表示该部分出现多次.它将 NL2SQL 任务转化为 6 个子任务:select-column(列选择)、select-agg(列聚合)、where-number(条件数)、where-column(筛选条件对应列)、where-op(条件操作符)以及 where-value(条件值).SQLNet 为解耦出的每个子任务依据各自任务目标设计了不同输出层.select-column 的输出层对所有列执行分类任务,select-agg 的输出层对聚合函数(如 MAX、AVG、SUM、MIN、COUNT)执行分类任务,子任务间存在依赖关系.select$agg$columns

39、electwhere$column$op$valuewhere(and$column$op$value)*自然语言查询问句selectaggvalue1op1valuen.selectcolumncolumnnopncolumn1SQL 草图子任务依赖关系图 3SQLNet 模型和 SQLNet 类似,基于草图的研究都使用了类似的任务划分,比较知名的有 SQLova 和 X-SQL,这两个模型引入了预训练模型 BERT,效果更好并基本达到了 WikiSQL 数据集的极限.而当研究者把 SQLova、X-SQL 等模型直接应用在中文 TableQA 数据集上时,发现效果并理想.TableQA 比

40、 WikiSQL 更加复杂,需要添加两个额外的子任务:一个用于预测所选列的数量,另一个用于预测where子句中的条件关系.另外如果查询中存在多个值,并且这些值属于不同的列时,用SQLova 和 X-SQL 无法准确提取.而且,TableQA 中文的查询形式比较随意,问句中可能不会出现数据库的2023年第32卷第12期http:/www.c-s-计 算 机 系 统 应 用SpecialIssue专论综述37内容.Zhang 等人48扩展了 WikiSQL 模型框架,提出了 M-SQL.M-SQL 包含 8 个子模型,分别是 S-num(列数量)、S-col(列选择)、S-col-agg(列聚合)

41、、W-num-op(条件列的关系和个数)、W-col(条件列)、W-col-op(条件列操作)、W-col-val(条件列的值)和 W-cal-match(匹配条件列的值),其草图如图 4 所示.另外,针对传统模型无法准确提取包含多个值和多个列的样本的值的问题,M-SQL 改进了提取方法,将基于列的值提取分为两个模块:值提取和值列匹配.M-SQL 的基本框架是多任务学习架构.其整体架构如图 5 所示.总体模型由 3 部分组成,编码器层、表示层和子模型层.编码器使用了哈工大讯飞联合实验室提出的中文 BERT-wwm-ext 模型,和中文预训练模型ERNIE 类似,采用全词掩码策略,可以更好地学习

42、中文词向量表示.M-SQL 模型在处理中文单表简单查询任务中表现优异,可看作是当前中文 NL2SQL 单表查询任务的最佳方案.select($agg$column)*where$wop($column$op$value)*图 4M-SQL 模型 SQL 草图子模型S-sumW-num-opS-colS-col-aggW-col-valW-val-matchW-colW-col-op问句表式hXLS列表式编码器(BERT-wwm-ext)图 5M-SQL 模型架构4.3 跨表复杂模型与 NL2SQL 单表任务相比,多表任务数据集的整理要复杂很多,而且所对应的 SQL 查询形式也多种多样,涉及多关

43、键词组合、嵌套、多表连接等.IRNet设计了一种中间表示语言 SemQL,可以有效地解决复杂 SQL 的生成问题.如图 6 所示,SemQL 可看作是一个中间语言,承接了自然语言和 SQL 的连接,自然语言先生成 SemQL 的语法树,再通过对语法树的解析则可转换为 SQL.RAT-SQL 做 schemalinking 的方法和 IRNet 类似,不同的是 RAT-SQL 中引入了数据库模式图(schemagraph)来表示数据库的结构.一个数据库包含多个表,表间通过主、外键连接,把表名和列看作节点的话,一个数据库即可构成了一张图的形式.RAT-SQL 模型将 schemalinking 和

44、 schemagraph的信息嵌入 Transformer,Transformer 结构可看作是一系列自注意力层的叠加,编码时自然语言问句和表名、列名等 schema 融合一起作为输入,构建 relationembedding.解码时,通过树形解码器,生成 SQL 对应的抽象语法树,最后通过解析抽象语法树来生成最终的 SQL.编码和解码过程如图 7 所示.Show the names of students who have a grade higher than 5 and have at least 2 friends.(显示成绩高于 5 且有至少 2 个朋友的学生的姓名)select T

45、1.name from friend as T1 join highschooler as T2 on T1.student_id=T2.id where T2.grade 5 group by T1.student_id having count(*)=2NL:SQL:ZRselectfilterfilterfilterandAnoneTCTCTC A=Anonecountfriendgradehighschoolerfriend*name图 6SemQL 示例计 算 机 系 统 应 用http:/www.c-s-2023年第32卷第12期38专论综述SpecialIssue.How man

46、yairlines airlineidairlinenameairports city.自注意力层编码:解码:问句表名列名列名表名selectcount(*)where 0.8.=column?0.10.2树形解码器图 7RAT-SQL 编码和解码当前无论英文 Spider 还是中文 CSpider 和 DuSQL数据集,主流的方案都是基于 RAT-SQL 或者相关的改进模型,如 S2SQL、LGESQL 等.新的模型在语义理解、关系发现、编码解码能力方面都追求更好的表现.4.4 评测方法NL2SQL 任务的评测方法主要包括逻辑形式准确率(logicalformaccuracy)Acclf、执

47、行准确率(executionaccuracy)Accex、查询匹配准确率(query-matchaccuracy)Accqm等.逻辑形式准确率是指通过模型所生成的 SQL 语句与正确的 SQL 语句是否完全一致,包括 select 是否一致、agg 是否一致、conds 是否一致、value 是否一致等.式(2)为逻辑形式准确率的计算公式,其中 Nlf是逻辑形式上完全正确的样本个数,N 是样本总数.该评估方式的缺点是会过滤掉仅是由于 select 列的顺序不同或者条件的顺序不同但执行结果是正确的情况,因此会导致准确率虚低.Acclf=NlfN(2)执行准确率是指执行预测的 SQL 语句,数据库

48、返回正确结果的样本数占比.其公式如式(3)所示,其中Nex是执行结果预测正确的样本个数,N 是样本总数.执行准确率只要求最终由数据库执行引擎返回的结果与正确 SQL 语句所执行的结果一致,但无法保证生成的 SQL 是语义正确的,因此会导致准确率虚高.Accex=NexN(3)查询匹配准确率是指模型生成的 SQL 和正确的SQL 都以标准形式表示,再计算两者的匹配精度.其公式如式(4)所示,其中 Nqm是标准化后的预测的 SQL和正确 SQL 匹配的样本个数,N 是样本总数.Accqm=NqmN(4)实际应用中,针对 SQL 子句的评估,也经常采用拆分后做逻辑形式准确率评估的方法,如 AccS-

49、agg、AccS-col、AccW-num等分别评估单项的预测准确率.另外在子分类任务中也可以应用机器学习分类模型的常规评估方法如准确率、召回率、F1-score 等.5总结和展望将自然语言转换为 SQL 查询是一个语义分析问题,在智能问答、商业智能等领域都有实际的应用场景,当前学术界已经对 NL2SQL 任务进行了大量的研究,从早期的基于模板、规则和统计的模型,以及最近广泛使用的基于深度学习的方法,NL2SQL 在英文领域已经取得了显著的进展.中文 NL2SQL 任务的研究开展较晚,2019 年 TableQA 和 CSpider 数据集的发布,为中文 NL2SQL 任务的研究创造了有利条件

50、.近两年发布的 DuSQL 和 CHASE 更加丰富了中文数据集,包括了从单领域、单表、简单 SQL 到多领域、多表、复杂 SQL、单轮对话、多轮对话等不同维度的数据,场景逐步丰富,难易程度循序渐进,促进了该领域的发展.中文 NL2SQL 的研究才刚刚开始,未来可考虑从如下几个方面进行.(1)进一步提升模型的准确率.目前中文 NL2SQL任务的准确率还有较大的提升空间,特别是 CSpider 数据集标注为“困难”和“极难”的数据.而 CHASE 数据集由于难度较大,尤其是涉及多轮场景的数据,相关中文模型的研究就更少.(2)提升对中文语义的理解力.在实际应用中要考虑用户的表达歧义问题.在现实的应

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 论文指导/设计

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服