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
NL2SQL领域:RAT-SQL论文笔记_第1张图片

3.2 关系定义

关系一:schema内部的关系
下图分别表示了几种关系的定义:数据库同表字段之间的关系,字段和表之间的关系,不同表之间的字段关系
NL2SQL领域:RAT-SQL论文笔记_第2张图片
关系二: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语句的语法树。)
NL2SQL领域:RAT-SQL论文笔记_第3张图片
其中action分为三类:APPLYRULE,SELECTCOLUMN,SELECTTABLE。
APPLYRULE是利用上下文无关语法(CFG)展开一个非终结节点,SELECTCOLUMN与SELECTTABLE则是在所有列/表上计算一个概率分布,并利用到了问句与schema的对齐矩阵Lcol,其计算方法与Relation-aware自注意力类似,用到了encoder最后一层的输出。

你可能感兴趣的:(sql,自然语言处理,数据库)