数据库由一张或多张表格构成,表格之间的关系通过共同的列(外键)关联,人们使用数据库来方便的记录和存储信息。SQL是广泛应用的关系型数据库查询语言,但是对于普通用户而言,编写SQL语句有一定的难度。
Text2SQL是近年来NLP领域一个比较热门的研究方向,该任务历史悠久,应用和落地性很强。该任务是在已知数据库的表名、列名其从属关系(这些统称为数据库的Schema)的前提下,将人类的自然语言问句(Question)转化为对应的数据库查询SQL语句。
如下图所示,模型接收一个Question问句和一个数据库作为输入,然后将其转化为可执行的结构化查询语句(即SQL语句)进行查询,最终返回结果给用户。
早期的Text2SQL数据集诸如ATIS(Airline Travel Information Systems,航空订票系统)、GeoQuery(地理查询系统)等都是限定于某个特定领域的数据库,仅能解决特定领域的问题,泛化性能较差。而现实世界中,关系型数据库已经广泛应用于社会的各行各业。为此,越来越多的多数据库、跨表查询的Text2SQL数据集被提出,比较知名的数据集有WikiSQL、Spider、SParC和CoSQL。这些数据集的提出极大地促进了该领域的发展,目前的SOTA模型也已经实现了非常好的表现。
这几个数据集的特性如下:
数据集 | 提出时间、会议 | 特点 |
---|---|---|
WikiSQL | arXiv,2017 | 多数据库、多表、单轮、简单语句 |
Spider | EMNLP,2018 | 多数据库、多表、单轮、复杂语句 |
SparC | ACL,2019 | 多数据库、多表、多轮、复杂语句 |
CoSQL | EMNLP,2019 | 多数据库、多表、多轮、对话形式、复杂语句 |
从上表可以看出,所提出的数据集越来越复杂,难度越来越大,同时也越来越接近于现实世界中的真实数据库。
以下为Spider论文中的一个示例:
可以看出,对于Hard和Very Hard难度的SQL语句,里面存在着许许多多的多表链接、子句嵌入等SQL高级形式,即使是一位经验丰富的数据库工程师也无法很快写出这样的语句。因而,Text2SQL任务不仅可以帮助非专业用户进行查询,而且可以协助数据库工程师来减轻他们的工作量。
本系列博客将沿着近年来对这几个知名数据集上的研究论文来进行阅读总结,并从中归纳该领域的研究脉络。下一篇博客将开始从WikiSQL数据集入手,介绍在该数据集上当前的研究进展。