百分点认知智能实验室:基于NL2SQL的问答技术和实践

编者按:NL2SQL是语义解析和智能问答领域的前沿问题,可以将人类的自然语言问句转化为结构化查询语句,是实现人类和数据库无缝交互和提高数据库分析效率的核心技术。
百分点认知智能实验室自成立以来,结合公司实际业务和项目需求,自主研发NL2SQL算法,并在各个公开数据集上取得了良好的效果,同时还在业务项目中积累了宝贵的实际落地经验,本文主要就NL2SQL技术路线的发展历史和实验室在工程实践中的落地经验进行分享。
本文作者:易显维、宁星星、镇诗奇、苏海波
一、NL2SQL问题描述
以往通过SQL查询业务数据或做数据分析时,一般要经历以下几个步骤:
总结要查询数据的需求;
后端工程师编写SQL并部署成服务和数据库连接;
前端工程师编写该SQL查询对应的界面;
运维工程师上线服务;
业务数据分析人员和用户登录页面执行查询语句显示数据。
例如,下图中对一个表格进行查询,针对该需求需要写成一条SQL语句才能在数据库中执行并得到答案。
在这里插入图片描述
Spider数据集中自然语言问题和对应的SQL那么,如何能够减少数据分析和查询时的工作量,最好是让用户只通过一个搜索框,输入查询语句,通过自然语言处理技术将输入转化为SQL,直接执行并显示答案,这就是NL2SQL要解决的问题,详见下图。
在这里插入图片描述
从上图可以看出,我们将以前研发SQL查询新需求的工作效率极大地提高了,并且很多非IT人士也能通过自然语言交互界面便捷快速地和数据库交互,业务流程速度大为提高。
二、NL2SQL数据集
研究任何一个机器学习算法问题都需要该领域的数据集,在此我们列举了NL2SQL中经常使用到的几个数据集。根据数据集中SQL涉及到的数据库表的个数不同,分为单表和多表;根据所生成的SQL结构中是否含有嵌套查询,将数据集分类为有嵌套和无嵌套。

  1. 单表无嵌套数据集
    ATIS&GeoQuery数据集:ATIS来源于机票订阅系统,由用户提问生成SQL语句,是一个单一领域且上下文相关的数据集。GeoQuery来源于美国的地理,包括880条的提问与SQL语句,是一个单一领域且上下文无关的数据集。
    WikiSQL数据集:ATIS和GeoQuery这两个数据集存在着数据规模小(SQL不足千句),标注简单等问题。于是,2017年VictorZhong等研究人员基于维基百科,标注了80654的训练数据,涵盖了26521个数据库,取名为WikiSQL。
    这个大型数据集一经推出,便引起学术界的广泛关注,因为它对模型的设计提出了新的挑战,需要模型更好地建构Text和SQL之间的映射关系,更好地利用表格中的属性,更加关注解码的过程。在后续工作中产生了一系列优秀的模型,如Seq2SQL、SQLNet、TypeSQL等,我们将在主流工作一章进行详细的介绍。项目链接:https://github.com/salesforce/WikiSQL。
  2. 多表嵌套数据集
    Spider数据集:由于WikiSQL数据集也存在着问题,它的每个问题只涉及一个表格,而且仅支持比较简单的SQL操作,这不是很符合日常生活中的场景。现实生活中存在着医疗、票务、学校、交通等各个领域的数据库,而且每个数据库又有数十甚至上百个表格,表格之间又有着复杂的主外键联系。
    于是,2018年耶鲁大学的研究人员推出了Spider数据集,这也是目前最复杂的Text-to-SQL数据集。它有以下几个特点:
    (1)领域比较丰富,拥有来自138个领域的200多个数据库,每个数据库平均对应5.1个表格,并且训练集、测试集中出现的数据库不重合。
    (2)SQL语句更为复杂,包含orderBy、union、except、groupBy、intersect、limit、having 关键字,以及嵌套查询等。
    研究人员根据SQL语句的复杂程度(关键字个数、嵌套程度)分为了4种难度,值得注意的是,WikiSQL在这个划分下只有EASY难度。Spider相比WikiSQL,对模型的跨领域、生成复杂SQL的能力提出了新的要求,目前的最佳模型也只有60%左右的准确度。挑战赛链接:https://yale-lily.github.io/spider。
    中文CSpider数据集:西湖大学在EMNLP2019上提出了一个中文Text-to-SQL的数据集CSpider,主要是选择Spider作为源数据集进行了问题的翻译,并利用SyntaxSQLNet作为基线系统进行了测试,同时探索了
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值