NL2SQL(NaturalLanguagetoSQL)是一项将用户的自然语句转为可执行SQL语句的技术,有很大的实际应用价值,对改善用户与数据库之间的交互方式有很大意义。在本文中,追一科技介绍了NL2SQL的价值,及其过去、现在与未来,希望能有更多关于NL2SQL的落地场景研究。
NL2SQL的价值
在AI、区块链、IoT、AR等高新技术飞速发展的当下,数据库这一宝库似乎被大家遗忘在了角落。数据库存储了大量的个人或者企业的生产运营数据,我们每天都会和数据库产生或多或少的交互。通常,查询数据库中的数据需要通过像SQL这样的程序式查询语言来进行交互,这就需要懂SQL语言的专业技术人员来执行这一操作。为了让非专业用户也可以按需查询数据库,当前流行的技术方案设计了基于条件筛选的专门界面,用户可以通过点选不同的条件来查询数据库,比如下面这个筛选汽车的界面。
然而,在这个界面上操作,极大地限制了数据库查询的使用场景和查询界限。同时,即使对于精通数据库程序语言的专业人士,经常构思SQL语句、维护这样一个查询界面也是一项重复度较高的工作。
在CUI(ConversationUserInterface)的大背景下,如何通过自然语言自由地查询数据库中的目标数据成为了新兴的研究热点。NaturalLanguagetoSQL(NL2SQL)就是这样的一项技术,它可以将用户的自然语句转为可以执行的SQL语句。
Nothingisbetterthananexample.针对上图这样的数据库表格,用户可能会想知道「宝马的车总共卖了多少辆?」,其相应的SQL表达式是「SELECTSUM(销量)FROMTABLEWHERE品牌==」宝马」;」。而NL2SQL做的,就是结合用户想要查询的表格,将用户的问句转化为相应的SQL语句,从而得到答案「8」。
表格数据是信息在经过人为整理、归纳后的一种高效的结构化表达形式,信息的价值、密度和质量高于普通的文字文本。用很多文字才能描述清楚的信息,可能一张表格就够了。在行业研报、业绩报告、新闻公告、使用说明书等各种书面信息载体上,尤其是金融、快消等行业的各种报告中,充斥着许多表格形式的结构化数据。而当用户去查询表格中的内容时,需要肉眼去从表格中筛选满足条件的数据,准确率和效率都较低。通过NL2SQL,用户在查询这些表格的内容时,可以直接通过自然语言与表格进行交互,并得到结果,用户体验会很自然。比如下面这张出自某房地产行业研报的表格:
针对这张表格,用户可能会想问「哪些城市的全月销量同比超过了50%或者当日环比大于25%?相应的房产类型和销售面积情况如何?」这样的问题。通过NL2SQL模型,可以直接得到相应的SQL语句「select城市,类型,全月数值(万平)fromtablewhere全月同比(%)50or当日环比(%)25」,并进一步返回执行该SQL语句后的结果,如下表所示:
如今,在很多日常应用场景中,用户都会和数据库进行交互,比如订餐、订票、查天气、查报表等等,绝大部分的解决方案也是通过输入条件和点选条件来进行查询。即使部分场景已经进行了技术升级,可以通过对话机器人的方式来进行交互,但其背后仍然预设了不同的条件入口,需要模型通过一系列的实体识别、槽值提取等流程来填充预先规定好的SQL模板。对于这样的方案,不仅查询的信息和筛选的条件会局限于预先设好的字段,这些功能模块的开发和维护也需要大量的人力资源。而如果使用NL2SQL的技术方案,用户与数据库之间的距离可以进一步缩短,用户可以更自由地查询更多信息、表达自己更丰富的查询意图,还可以减轻目前技术方案的繁琐,解放程序员。
NL2SQL不仅可以独当一面,降低人机交互的距离和门槛,也可以与其它技术相辅相成。比如,现今的机器阅读理解技术已经可以在SQUAD1.0、SQUAD2.0等数据集上超越人类水平,还可以在其它各种形式的数据集上寻找答案,比如多段落、多文档、抽取式答案、生成式答案等形式。但目前机器阅读理解技术还不能对文章中出现的表格进行解读,如果用户想要的答案存在于文章中的表格内,那么现有的模型就都束手无策了。
然而表格数据在真实场景中存在很多,且表格中的数据很有价值,用户也会经常针对其中的数据进行提问。比如下图中的这一真实场景,用户如果想问「在哪些年里平均溢价率高于20%」这样的问题,依靠现有的机器阅读理解技术,在文本中是找不到答案的。而NL2SQL可以很好地弥补现有技术的不足,完善非结构化文本问答在真实落地场景中的应用,更充分地发掘此类结构化数据的价值。
研报部分来源于东吴证券《房地产行业年度策略》
存储在Excel中的表格数据也可以被利用起来。设想一下这样的场景,财务人员将日常的财务数据存储在Excel中,日积月累产生了大量的Excel文件。财务人员需要了解其中的数据时,首先要从层层深入的文件夹、密密麻麻的Excel中找到正确的文件,然后打开Excel文件去密集的单元格中找到想要的答案。在这个过程中找错文件是常事,效率十分低下。如果利用NL2SQL技术,这一场景就会非常的优雅高效:首先定位预处理存入数据库的表格,再执行查询逻辑,最后将结果直接返回。
我们可以期待,NL2SQL将改变传统的人与表格之间的交互方式,作为不可或缺的功能来改善人与机器之间的交流,让这场CUI升级革命可以走进更多的场景、行业,惠及更广泛的群体。
NL2SQL的历史与现在
早在上世纪中后期,人们就已经在尝试开发通过自然语言直接访问数据库中存储数据的界面了(NLIDB,NaturalLanguageInterfacestoDatabases),其中最知名的是二十世纪六十年代的LUNAR系统,它通过对问句的句式语法分析,来回答关于从阿波罗任务中带回的月岩的地质学分析问题。再比如二十世纪七十年代初的LADDER系统,它已经支持通过一定的语义语言从数据库提取信息。但这种系统对自然语言问题的解析并不依赖于句子成分,这要求每一个具有特定知识的数据库都需要特定的语义语法,所以该方法在普适性上不够完善。
受限于当时技术发展,NLIDB面临很大的挑战,系统语言的支持上限以及对于语言的理解上限不明确、语言上逻辑和含义的歧义、生僻词的出现等,以及替代品的发展(如Excel表格这种存储表格新形式的出现),这些都极大限制了这个领域的发展。
直到年AI的复苏和自然语言处理的创新,人们才慢慢把
转载请注明:http://www.0431gb208.com/sjszjzl/4441.html