NL2SQL总结
简介
NL2SQL实际上是将自然语言(NL)转化为SQL语句的缩写,本质上是将用户的自然语言转化为计算机可以理解的规范化的语义表示(formal meaning represention)。对于当前的自然语言任务中的语义理解有着很大的帮助,借此,正好我们看了几篇关于NL2SQL的论文,于是与大家进行分享。
目前比较火热的数据集有WiKiSQL,Sprider,WiKiTableQuestion,ATIS等等,中文数据集有中文首届NL2SQL挑战赛的公开数据,各个数据集有各自的特点。
1.WiKiSQL
该数据集合是2017年提出的大型标注NL2SQL数据集,也是目前规模最大的NL2SQL数据集,它包含24,241张表,80,645条自然语言文问句,以及相应的SQL语句,目前学术预测率能改哦到达91%。
该数据机上的问题长度基本为8-15个词居多,查询长度8-11个词居多,表的列数5-7个居多。另外大多数问题是what类型,其次是which,name,how money,who等类型。
2. Spider
该数据集是耶鲁大学2018年提出的一个较大的规模的NL2SQL数据集,该数据集合包含10,181条自然语言问句。分布在200个对立的数据库中的5,693条SQL,内容覆盖了138个不同的领域,虽然数据集的数量不如WiKiSQL,但是Spider应用更多关于SQL的用法,例如Group By,Order By ,Having等等高阶操作。甚至需要join不同的表,更加天河实际应用场景,所以难度更大,,准确度只有54.7%
3. NL2SQL实现简述
对于NL2SQL各个系统,在内部实现上,整个结构到哦是大同小异的,只是技术不同而已。下图描述从问题到SQL生成的核心细节,简单来说,就是将NL2SQL分成几个子句的识别。包含Select子句,Where子句,当然还有grroup by,limit等等,每个部分会牵扯到很多的细节,例如table的识别,属性的识别,适当的添加索引。下图通过深度学习方法,基于编码器-解码器实现Nl2SQL,