NL2SQL领域:RAT-SQL论文笔记

RAT-SQL: Relation-Aware Schema Encoding and Linking for Text-to-SQL Parsers

以关系感知的方法对数据库模式编码和链接的text-to-SQL模型

1.问题聚焦:

Schema Encoding:对表结构(表名、列名、列类型、主键、外键等等)进行编码
Schema Linking:把Question中表述的内容与具体的表名和列名对齐

2.主要创新点:

  • 包含“问题-字段关系”的自注意力机制:在Encoder中加入relation-aware self-attention组成RAT层代替transformer层对输入进行encode,relation一共有33种,每两个单词之间都会有一个relation。利用schema linking同时把显式关系(schema)和隐式关系(question和schema之间的linking)都考虑在encoding中,完善了模型的表示能力。假设一共有R种不同的关系,rij可以定义为R个特征向量的拼接,对于每一种关系,如果xi和xj有这一关系,就将对应的特征向量作为参数进行学习,否则就置为零向量。
  • 构造数据逻辑Graph,图顶点集合Vq由三部分组成:column names,table names以及question words。对于column,同时在顶点label中加入column type。边集合Eq 由三部分组成:首先是Database Schema所定义的表连接关系,table和column的包含关系等等;其次是通过schema linking得到的question和schema之间的对应关系;最后是为辅助relation-aware self-attention而定义的Auxiliary Relations。
  • 抽象语法树生成SQL:在encoder输出的向量之上通过一系列的预测动作来构造AST(Abstract Syntax Tree):首先,用APPLYRULE来生成基本结构;然后,用SELECTTABLE或者SELECTCOLUMN来完成table name或column name的选择填充。AST生成后,可进一步推断出最终的SQL query。

3.实现思路:

自然语言问题 ——>向量化(利用bert获得问句的列名、表名等要素)
——>transfomer编码(利用relation-aware self-attention,同时把显式关系和隐式关系都考虑在encoding中)
——>解码(AST抽象语法树生成SQL)

3.1 关系感知的自注意力 Relation-Aware Self-Attention

前面提到,问题中的词数据库字段之间假设一共有R种不同的关系,rij可以定义为R个特征向量的拼接,对于每一种关系,如果xi和xj有这一关系,就将对应的特征向量作为参数进行学习,否则就置为零向量。
下列公式中,attention score的计算和value的加权求和,都加入了代表xi和xj的关系rij
在这里插入图片描述

3.2 关系定义

关系一:schema内部的关系
下图分别表示了几种关系的定义:数据库同表字段之间的关系,字段和表之间的关系,不同表之间的字段关系
在这里插入图片描述
关系二:Schema Linking - schema与自然语言问句中的词的关系
文中用到了两种方法来确定。

  • Name-Based Linking 对齐名称:通过名字匹配,用问句中的n-gram词组与列名/表名进行匹配,分为完全匹配、部分匹配、不匹配三种关系。
  • Value-Based Linking 对齐值:通过数值匹配,如果某一个词在某一列的数据中出现了,那么这个词与这一列记为COLUMN-VALUE这一关系,这一匹配的好处在于可以找到一部分隐含的关系。
3.3 encoder编码

先通过多个双向LSTM或者BERT得到问句中的词q,表名t,列名c的初始表示,并将所有的表示作为输入X,之后通过若干个有Relation-aware自注意力的Transformer层,得到encoder的输出。
在这里插入图片描述

3.4 decoder解码

RAT-SQL的解码器还是使用一种tree-structured结构。它首先生成SQL对应的AST(抽象语法树),然后在将AST转回SQL。(将SQL的生成转换为一个action的序列,并用LSTM以深度优先生成SQL语句的语法树。)
SQL语句的语法树
其中action分为三类:APPLYRULE,SELECTCOLUMN,SELECTTABLE。
APPLYRULE是利用上下文无关语法(CFG)展开一个非终结节点,SELECTCOLUMN与SELECTTABLE则是在所有列/表上计算一个概率分布,并利用到了问句与schema的对齐矩阵Lcol,其计算方法与Relation-aware自注意力类似,用到了encoder最后一层的输出。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值