0717-7821348
爱彩人网

爱彩人网

您现在的位置: 首页 > 爱彩人网
爱彩人网-自然语言到 SQL 句子,微软只用六个子使命,成果逾越人类水平
2019-11-12 22:35:03

作者 | 幻风

修改 | 唐里

论文标题:X-SQL:reinforce schema representation with context

论文地址:https://arxiv.org/pdf/1908.08113

1、布景介绍

假如有人问现在是一个什么样的年代?那么很多人都会回复现在是一个大数据的年代,如此海量的数据,咱们将其大多数都存储在数据库中。在日常日子中咱们常常和数据库进行交互,比方网络购物、订票、订餐等等,绝大多数操作都是在后台封装好的SQL 模板,这样咱们的操作常常会受限于预先设好的SQL模板,不具备灵活性,为了处理这个问题,咱们能够运用NL2SQL的技能计划,用户只需求经过天然言语表达目的,NL2SQL会将其转换为结构化查询句子SQL,这样会大大缩短用户与数据库之间的间隔。

爱彩人网-自然语言到 SQL 句子,微软只用六个子使命,成果逾越人类水平

在天然言语处理范畴,上述天然言语-SQL使命被称为语义解析,即把天然言语主动转化为一种机器能够了解并履行的SQL表达方法。

2、问题难点

结构化查询言语SQL是由人类规划的,它句法要求严厉,一条SQL句子往往由多个部分组成,互相之间互相相关,一旦某个部分呈现问题,那么全体都会履行失利,所以如何将天然言语主动转为SQL表达而且正确履行是十分困难的。

本文咱们将介绍微软在该范畴的最新发展,它将天然言语到 SQL 句子的生成分解为六个子使命,互相之间互相束缚,确保模型输出空间最大极限地满意SQL言语要求。该使命由 Pengcheng He, Yi Mao, Kaushik Chakrabarti, Weizhu Chen 四位研究员完结,而且在数据集WikiSQL上达到了现在最佳体现,逾越人类水平。

3、数据集WikiSQL介绍

WikiSQL 是 Salesforce 在 2017 年提出的大型标示 NL2SQL 数据集,也是现在规划最大的 NL2SQL 数据集。它包括了 24,241 张表、80,645 条天然言语问句及相应的 SQL 句子。该数据集不触及高档用法,Question 所对应的正确表格现已给定,不需求联合多张表格,图一是其间的一条数据样例,包括一个 table、一条 SQL 句子、SQL句子所对应的天然言句子子及该条SQL句子的履行成果。

图一

4、首要思路

针对天然言语到sql的解析问题,本论文提出了一种新的网络体系结构x-sql。x-sql提出运用bert风格的预练习模型(MT-DNN)的上下文输出来增强结构方法表明,并结合类型信息来学习用于下流使命的新方法表明。由于SQL语法的一部分受限于结构化数据方法的类型,例如,聚合器min只与数字列一同呈现,而不能与字符串的类型列一同呈现,所以咱们有必要要对其进行束缚,论文中显性的将列类型添加到模型中。

本论文中模型包括三层结构,分别是SequenceEncoder、ContextEnhancedSchemaEncoder、OutputLayer(输出层),其间输出层完结SQL句子的生成,咱们将其分为6个子使命(select-column, select-aggregation, where-number, where-column, where-operator, and where-value),这六个使命互相之间互相结合,互相限制。下面咱们将依照论文对这三层结构,6个子使命进行解析。

5、三层结构

爱彩人网-自然语言到 SQL 句子,微软只用六个子使命,成果逾越人类水平

榜首层结构是Sequence Encoder(序列编码器),在该结构中,咱们为每个表添加一个empty列,然后段编码替换为类型编码,学习四个类型:question,categorial column,numerical column和empty column,该模型输出h_[CTX], h_q1, , h_qn, h_[SEP], h_C11, , h_[SEP], h_C21, h_[SEP], , h_[EMPTY], h_[SEP],其间问题中每一个词编码为h_qi,然后h_cij表明列 i 编码第 j 个符号,由于每个列名或许包括多个符号。

第二层结构是Context Enhanced Schema Encoder,该结构用于增强在equence Encoder(序列编码器)得到的H_[CTX],尽管在序列编码器的输出中现已捕获了某种程度的上下文,但这种影响是有限的,由于自我重视往往只重视某些区域。另一方面,[ctx]中捕获的大局上下文信息具有满足的多样性,因而用于弥补序列编码器中的方法表明。经过这种方法能够捕获到哪一个查询词与哪一列最相关,然后得到增强的语义表明HCi它的核算进程如下图所示:

第三层结构是Output Layer,它的中心是完结sql句子的生成,它将SQL句子分为六个子使命,关于每个子使命首要运用下面的子网络结构得到运用交融hci和hctx的rCi,它的模型图如下所示:

需求留意的是每个子使命都具有一个这样的子网络,核算是针对每个子使命独自进行的,以便更好地将方法表明与每个子使命应该重视的天然言语问题的特定部分对齐。该子结构的核算组织如下所示:

当咱们完结这个子结构之后,咱们就能够完结之后的六个子使命了

6、六个子使命

榜首个使命S-COL,这个使命表明SQL句子查询表的哪一列,咱们运用前面得到的rci来完结这个子使命,运用softmax来找到最或许的列,核算公式如下所示:

第二个子使命S-AGG,这个使命表明对榜首个子使命运用什么函数操作,比方min、max,这儿就需求留意咱们前面说到字符串函数不能够运用min、max的问题,为了处理这个问题,我么们需求显式的将使命一得到的列类型Ectype嵌入到模型中,与其他子使命不同,咱们在这儿运用hci而不是rci,它的核算公式如下所示:

其间 E_Ci^T 便是使命一的类型,从公式能够看出来,这儿就相当于给使命二添加了类型束缚,使得使命二猜测的函数操作不能够和使命一得到的列类型相对立。

其他4个使命w-num、w-col、w-op和w-val一同决议了SQL句子的where部分,其间w-num决议了对表的几列进行束缚,w-col表明对哪几列进行束缚,w-op表明对这几列的操作符,比方>、<、=等等,w-val表明对这几列进行束缚的值。

首要这w-col、w-op和w-val这三个使命是依靠w-num的,由于w-num决议了对几列进行束缚,这样它们三个只需求取softmax最大的那几个就能够了。然后w-col和w-op也进行依靠,这个和使命二w-agg相同,字符串类型的列是不能够运用<或许>的,可是本论文试验进程中,这儿并没有多少改善,所以咱们这儿能够不进行束缚。

最终一个使命便是w-val,这个值是多少,只能来源于query的句子,所以这儿咱们猜测value值在query句子中的开始方位,核算公式如下:

至此停止,本论文的三层模型和六小使命就介绍完结了,咱们前面介绍爱彩人网-自然语言到 SQL 句子,微软只用六个子使命,成果逾越人类水平过它的模型作用现已逾越人类体现了,咱们来一下它的试验成果。

7、试验成果

由于在这个论文之前,在该数据集上的爱彩人网-自然语言到 SQL 句子,微软只用六个子使命,成果逾越人类水平最佳体现的算法模型是SQLNet以及SQLova,所以本论文只能它们两个进行了比较,咱们能够看出在验证集和测验会集X-SQL模型都有一个全面的进步。在没有EG的情况下,x-sql在逻辑方法精度上肯定进步了2.6%(83.3对80.7),在测验集上的履行精度进步了2.5%。假如运用了EG,xsql在逻辑方法准确性上依然高出2.4%。

由于本使命运用六个子使命完结,所以关于SQLova与X-SQL在每个子使命的作用,咱们能够看到每个子使命的准确性,并展现了共同的改善。特别是,使命w-col显现在没有eg的情况下肯定有1.1%的增益,在有eg的情况下肯定有1.7%的增益。另一个明显的改善是W-VAL使命,在没有EG的情况下肯定添加了1.2%,而在有EG的情况下肯定添加了2.0%。

8、总结

由于SQL句子的严厉语法规范性,本使命将问题进行拆分,而且互相之间进行束缚,然后得到了一个好的模型学习,在WikiSQL数据集上取得了一个好的发展,咱们能够考虑是否默写使命能够运用这种方法,比方NL2java,NL2python等等,或许咱们能够添加更多的子使命,然后加强束缚空间,得到愈加严厉的SQL句子。

尽管本使命取得好的作用,可是却有一些问题,比方为什么运用六个子使命,这是由于这个数据集只触及到单表查询,想对来说语法比较简单,所以咱们运用六个子使命就能够完结,可是假如有的数据集规划到多表联合查询,那么六个子使命是远远不够的,那么此刻添加更多的子使命是否能够处理多表查询的使命,仍是会成为担负,这些都是咱们需求忧虑的,可是不管怎样本使命所需的的成果证明这个模型作用和思维是不错的,咱们能够学习或许进行晋级,以此来协助咱们更好的处理自己的使命。

”检查NBA 史上实力最弱的球队是哪个?用 Python + SQL 咱们找到了答案