用深度学习解决NL2SQL的启蒙算法——X-SQL

举报
风中凌乱纠结 发表于 2022/04/11 15:08:58 2022/04/11
【摘要】     随着各行各业的逐步信息化,从业人员对数据检索和数据分析的需求在不断地扩大。然而,要掌握这些能力却具有一定的门槛。NL2SQL技术就是为了降低数据库表格的使用门槛而出现的一种技术,旨在将自然语言形式的查询原语转换为适用于数据库的SQL语言形式。近年来,学术界涌现出了很多基于深度学习的NL2SQL方法,其中较为经典的方法就是X-SQL,要学习NL2SQL技术,X-SQL是一种比较好的启蒙...

    随着各行各业的逐步信息化,从业人员对数据检索和数据分析的需求在不断地扩大。然而,要掌握这些能力却具有一定的门槛。NL2SQL技术就是为了降低数据库表格的使用门槛而出现的一种技术,旨在将自然语言形式的查询原语转换为适用于数据库的SQL语言形式。近年来,学术界涌现出了很多基于深度学习的NL2SQL方法,其中较为经典的方法就是X-SQL,要学习NL2SQL技术,X-SQL是一种比较好的启蒙算法。 X-SQL架构主要包含三层:序列编码层(Sequence Encoder)、上下文模式增强编码层(Context Enhancing Schema Encoder)、输出层(Output Layer)。

一、序列编码层

该层采用了一个类似于BERT的预训练编码器,并做出了几点修改:

  1. 每个表格schema 都增加了一个[EMPTY]列,在推理时,如果[EMPTY]列的分数最高,则认为不存在where子句;
  2. 使用Type Embedding 替换 Segment Embedding Type Embedding 包括了四种类型:问题、categorial columnnumerical column以及空列;
  3. 基于多个GLUE任务训练了MT-DNN来替代BERT-large。这里还使用了一个小技巧,把[CLS]替换为[CTX]用来增强语义信息。

 

二、语境增强模式编码:

该层学习了一种增强每个字段的向量Hci,在上一层中,虽然已经有一部分语义信息被捕捉到了但还是非常有限的。语境增强编码方法认为,BERT形式的序列编码已经在自然语言侧已经达到了不错的效果,因此,为了更好地增强表格的模式信息,这层还融合了[CTX]向量的信息。

 

1.png


三、输出层:

输出层的主要任务就是生成SQL语句,该任务又由6个子任务组成,每个子任务都用于生成最终的SQL表达式的一部分。网络中采用了一个子网络可以表达为:

4.png

        可以转化为下图:

2.png


 

这个公式计算的内容是根据每个不同的子任务进行的:

 

  1. 计算S-COL

用于计算SQL语句需要查询的表字段,计算方式比较简单,公式如下:

5.png


  1. 计算S-AGG

用于计算查询字段对应的聚合操作。为了解决部分聚合操作无法作用于string类型的数据上的问题,增加了另外训练的类型embedding,这样做可以让聚合操作和预测字段的类型不出现低级矛盾。这里用了hci而不是rci因为这里需要结合的字段类型信息和第一层的是非常类似的。

6.png


4-6. 计算W-NUMW-COLW-OPW-VAL

用于计算组成WHERE部分的各个部分。

W-NUM:条件涉及的字段数目;

W-COL:条件包含的字段;

W-OP:条件的操作符;

        W-VAL:条件值;

首先,W-NUM确定了条件的数目n,另外三个任务在取值时只需取softmax的前n个结果即可。W-COL的计算与S-COL基本类似,计算公式如下:

7.png


W-OP计算条件中最可能的条件符,W-VALquery中抽取最有可能是条件值的部分:

8.png


 

实验结果:

3.png


上图是论文中提供的实验结果,实验在没有使用EG的情况下对比了SQLNetSQLova的结果,可以看出X-SQL在验证集和测试集上均带来了较大的提升。在测试集上,对比SQLova逻辑形式精度提高了2.6%执行精度提高了2.5%。另一方面,论文还对比了SQLovaX-SQL在使用EG的情况下的结果,在测试上,逻辑形式精度提高了2.4%执行精度提高了2.2%

 

总结:

X-SQL中较为重要的一点是提出了将NL2SQL任务拆分为多个子任务进行模型的学习,这一算法在后来的很多NL2SQL模型算法中均有体现。然而,X-SQL所解决的NL2SQL问题非常简单,数据集中WHERE子句仅有12条条件,条件之间的连接仅为and,缺少joingroup by等操作。

总而言之,虽然X-SQL存在很多不足,但它还是很好的学习NL2SQL的启蒙方法,同时,我们也可以将这种思想应用到其他的语义解析领域。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。