【P10】Bridging Textual and Tabular Data for Cross-Domain Text-to-SQL Semantic Parsing
作者:互联网
Bridging Textual and Tabular Data for Cross-Domain Text-to-SQL Semantic Parsing
Findings of EMNLP 2020
Implementation:https://github.com/salesforce/TabularSemanticParsing
Abstract
1 Introduction
针对不同的数据库(DB),近似的自然语言表达生成的 SQL 可能十分不同。因此,跨数据库 text-to-SQL 语义解析器不能仅简单地记住所看到的 SQL 模式,而是必须准确地建模自然语言问题、目标数据库结构以及两者的上下文。
最先进的跨数据库 text-to-SQL 语义解析器采用以下设计原则:
- 问题和模式(schema)表示相互关联;
- BERT等预训练模型可以通过增强对自然语言变化的泛化和捕捉长期依赖关系,显著提高解析准确性;
- 在数据隐私允许的范围内,利用可用的 DB 内容可以提高对 DB 的理解。
本文介绍了 text-DB 编码框架 BRIDGE,它整合了上述三个设计原则。
- 将关系数据库模式表示为串接在问题后的标记序列,用 BERT 和后续两个单层双向 LSTM 编码混合标记序列。每个模式组件(表或字段)仅使用混合序列中其特殊标记对应的隐藏状态来表示。
- BRIDGE用锚文本扩展了混合序列,锚文本自动提取问题中提到的DB单元值,隐式地实现 text-DB 对齐。
结合 pointer-generator 解码器和 schema-consistency driven search space pruning(模式一致性驱动的搜索空间修剪),取得了和 SOTA 相当的性能:
benchmark | dev | test |
---|---|---|
Spider(ensemble model) | 71.1% | 67.5% |
WikiSQL | 92.6% | 91.9% |
1通过深入的模型比较和错误分析,我们表明所提出的架构对于概括自然语言变化和记忆结构模式是有效的,但在组合概括方面存在困难,并且缺乏可解释性。这使我们得出结论,跨领域的文本到sql仍然提出了许多未解决的挑战,需要模型在训练数据经常稀少的情况下,对自然语言变化和结构组合进行泛化。
2 Model
BRIDGE模型——结合了基于BERT的编码器
和顺序 pointer-generator
,以执行端到端 cross-DB text-to-SQL 语义解析。
2.1 Problem Definition
给定自然语言问题 Q 和关系型数据库的模式(schema) S = ⟨ T , C ⟩ \mathcal{S}=\langle\mathcal{T}, C\rangle S=⟨T,C⟩,解析器需要生成相应的 SQL 查询 Y Y Y。
一个数据库中可能包含很多张表(tables),一张表又包含多个字段(fields),所以 T = { t 1 , … , t N } \mathcal{T}=\left\{t_{1}, \ldots, t_{N}\right\} T={t1,…,tN} , C = { c 11 , … , c 1 ∣ T 1 ∣ , … , c n 1 , … , c N ∣ T N ∣ } C=\left\{c_{11}, \ldots, c_{1\left|T_{1}\right|}, \ldots, c_{n 1}, \ldots, c_{N\left|T_{N}\right|}\right\} C={c11,…,c1∣T1∣,…,cn1,…,cN∣TN∣} 。每张表的表名和字段名都是文本字符。表中的字段可能有主键、外键,同时字段有不同的数据类型。
最新方法表明访问数据库内容可以显着提高系统性能。但为保护隐私,模型仅可以访问每个字段的值集(value set),而不是整个数据库的内容。 把这些 value sets 叫做 picklists。
2.2 Question-Schema Serialization and Encoding
如图,作者将Q和S拼接为一个混合的问题-模式序列,作为编码器的输入:
X
=
[
C
L
S
]
,
Q
,
[
S
E
P
]
,
[
T
]
,
t
1
,
[
C
]
,
c
11
…
,
c
1
∣
T
1
∣
[
T
]
,
t
2
,
[
C
]
,
c
21
,
…
,
[
C
]
,
c
N
∣
T
N
∣
,
[
S
E
P
]
\begin{aligned} X=&[\mathrm{CLS}], Q,[\mathrm{SEP}],[\mathrm{T}], t_{1},[\mathrm{C}], c_{11} \ldots, c_{1 \mid T_{1}\mid} \\ &[\mathrm{T}], t_{2},[\mathrm{C}], c_{21}, \ldots,[\mathrm{C}], c_{N\left|T_{N}\right|},[\mathrm{SEP}] \end{aligned}
X=[CLS],Q,[SEP],[T],t1,[C],c11…,c1∣T1∣[T],t2,[C],c21,…,[C],cN∣TN∣,[SEP]
每个表名前面都有特殊标记[T],每个字段名前面都有[C]。
- X X X首先输入BERT,随后经过一层Bi-LSTM获得序列的初始编码表示 h X h_X hX。
- h X h_X hX中的问题片段继续通过一层Bi-LSTM获得Q的最终编码 h Q h_Q hQ 。
- 每个表/字段使用对应于其特殊标记 [T] / [C] 的 h X h_X hX切片表示。
Meta-data Features
相比于表名,字段名多了主键、外键等属性。为了利用这些特征(meta-data),论文中用了一层前馈网络(
g
(
R
4
n
→
R
n
)
g\left(\mathbb{R}^{4 n} \rightarrow \mathbb{R}^{n}\right)
g(R4n→Rn))对表名、字段名进一步编码。
h
S
t
i
=
g
(
[
h
X
p
;
0
;
0
;
0
]
)
h
S
c
i
j
=
g
(
[
h
X
q
;
f
p
r
i
u
;
f
f
o
r
v
;
f
t
y
p
e
w
]
)
=
ReLU
(
W
g
[
h
X
m
;
f
p
r
i
u
;
f
f
o
r
v
;
f
t
y
p
e
w
]
+
b
g
)
h
S
=
[
h
t
1
,
…
,
h
t
∣
T
∣
,
h
c
11
,
…
,
h
c
N
∣
T
N
∣
]
∈
R
∣
S
∣
×
n
,
\begin{aligned} \boldsymbol{h}_{S}^{t_{i}} &=g\left(\left[\boldsymbol{h}_{\mathrm{X}}^{p} ; \boldsymbol{0} ; \boldsymbol{0} ; \boldsymbol{0}\right]\right) \\ \boldsymbol{h}_{S}^{c_{i j}} &=g\left(\left[\boldsymbol{h}_{\mathrm{X}}^{q} ; \boldsymbol{f}_{\mathrm{pri}}^{u} ; \boldsymbol{f}_{\mathrm{for}}^{v} ; \boldsymbol{f}_{\mathrm{type}}^{w}\right]\right) \\ &=\operatorname{ReLU}\left(\boldsymbol{W}_{g}\left[\boldsymbol{h}_{\mathrm{X}}^{m} ; \boldsymbol{f}_{\mathrm{pri}}^{u} ; \boldsymbol{f}_{\mathrm{for}}^{v} ; \boldsymbol{f}_{\mathrm{type}}^{w}\right]+\boldsymbol{b}_{g}\right) \\ \boldsymbol{h}_{S} &=\left[\boldsymbol{h}^{t_{1}}, \ldots, \boldsymbol{h}^{t|\mathcal{T}|}, \boldsymbol{h}^{c_{11}}, \ldots, \boldsymbol{h}^{c_{N\left|T_{N}\right|}}\right] \in \mathbb{R}^{|\mathcal{S}| \times n}, \end{aligned}
hStihScijhS=g([hXp;0;0;0])=g([hXq;fpriu;fforv;ftypew])=ReLU(Wg[hXm;fpriu;fforv;ftypew]+bg)=[ht1,…,ht∣T∣,hc11,…,hcN∣TN∣]∈R∣S∣×n,
- 表名:表名没有额外特征,后三个维度均用零向量替代。
- 字段名:这里的 f p r i , f f o r , f t y p e f_{pri},f_{for},f_{type} fpri,ffor,ftype分别表示各个字段的主键、外键、类型特征, h X q \boldsymbol{h}_{\mathrm{X}}^{q} hXq表示字段特征。将4个向量横向顺序拼接。
- 各个表名、字段名都进行 g 函数转化,纵向拼接得到模式(schema)的最终编码 。
2.3 Bridging
仅对表名/字段名及其关系进行建模并不足以捕捉模式(schema)的语义及其与Question的依赖关系,即缺少 Q 和 S 的交互。
-
解决方法:使用锚文本(anchor text)将问题 Q 中包含的值提及(value mentions)与数据库字段(DB fields)链接起来。锚文本为BERT提供了其他词汇线索,来标识Q中的相应提及(mentions)。
-
具体实现:将问题 Q 中的每一个 token,与数据库表中每一列的所有 value 值进行字符串模糊匹配,匹配上的 value 值将被插入到序列 X 中(在相应的字段名称之后,并由特殊标记[V]分隔)。
-
举例:
如图,问题 Q 和表格“Properties”、“Reference Property Types”相关联。其中 Q 包含的两个单词“houses”和“apartments”与两张表中的同名字段“Property type code”有重合单元值。字段名“Property type code”本身没有在问题Q中出现,若让模型直接推理出“houses”、“apartments”和“Property type code”相关,难度很大。
2.4 Decoder
解码器的目的是从编码特征中还原出相应SQL。
相比于前人的工作(RAT-SQL、IRNet等),BRIDGE解码器设计非常简洁,仅使用了一层带多头注意力机制的 LSTM pointer-generator 网络。
在每一个step中,解码器从如下动作中选择1种:
- 从词汇表 V 中选择一个token(SQL关键字)
- 从问题 Q 中复制一个token
- 从模式 S 中复制一个组件(字段名、表名、单元值)
从数学定义上分析,在每一个时刻
t
t
t ,给定解码状态
s
t
s_t
st和编码表示
[
h
Q
;
h
S
]
∈
\left[\boldsymbol{h}_{Q} ; \boldsymbol{h}_{S}\right] \in
[hQ;hS]∈
R
(
∣
Q
∣
+
∣
S
∣
)
×
n
\mathbb{R}^{(|Q|+|S|) \times n}
R(∣Q∣+∣S∣)×n,按照[4]中的方式计算多头注意力:
e
t
j
(
h
)
=
s
t
W
U
(
h
)
(
h
j
W
V
(
h
)
)
⊤
n
/
H
;
α
t
j
(
h
)
=
softmax
j
{
e
t
j
(
h
)
}
z
t
(
h
)
=
∑
j
=
1
∣
Q
∣
+
∣
S
∣
α
t
j
(
h
)
(
h
j
W
V
(
h
)
)
;
z
t
=
[
z
t
(
1
)
;
⋯
;
z
t
(
H
)
]
\begin{array}{l} e_{t j}^{(h)}=\frac{\boldsymbol{s}_{t} W_{U}^{(h)}\left(\boldsymbol{h}_{j} W_{V}^{(h)}\right)^{\top}}{\sqrt{n / H}} ; \quad \alpha_{t j}^{(h)}=\operatorname{softmax}_{j}\left\{e_{t j}^{(h)}\right\} \\ \boldsymbol{z}_{t}^{(h)}=\sum_{j=1}^{|Q|+|\mathcal{S}|} \alpha_{t j}^{(h)}\left(\boldsymbol{h}_{j} W_{V}^{(h)}\right) ; \quad z_{t}=\left[z_{t}^{(1)} ; \cdots ; z_{t}^{(H)}\right] \end{array}
etj(h)=n/H
stWU(h)(hjWV(h))⊤;αtj(h)=softmaxj{etj(h)}zt(h)=∑j=1∣Q∣+∣S∣αtj(h)(hjWV(h));zt=[zt(1);⋯;zt(H)]
其中
h
∈
[
1
,
。
。
。
,
H
]
h∈[1,。 。 。 ,H]
h∈[1,。。。,H]是头数,
H
H
H是总头数。
α
t
j
(
h
)
\alpha_{t j}^{(h)}
αtj(h)表示从 Q 或 S 中复制相应 token 加入当前解码结果的权重。
解码由
V
V
V产生(即上述解码器动作1)的概率为:
p
g
e
n
t
=
sigmoid
(
s
t
W
g
e
n
s
+
z
t
W
g
e
n
z
+
b
g
e
n
)
\begin{array}{l} p_{\mathrm{gen}}^{t}=\operatorname{sigmoid}\left(s_{t} W_{\mathrm{gen}}^{s}+z_{t} W_{\mathrm{gen}}^{z}+b_{\mathrm{gen}}\right) \\ \end{array}
pgent=sigmoid(stWgens+ztWgenz+bgen)
总的输出分布为:
p
o
u
t
t
=
p
g
e
n
t
P
V
(
y
t
)
+
(
1
−
p
g
e
n
t
)
∑
j
:
X
~
j
=
y
t
α
t
j
(
H
)
,
p_{\mathrm{out}}^{t}=p_{\mathrm{gen}}^{t} P_{\mathcal{V}}\left(y_{t}\right)+\left(1-p_{\mathrm{gen}}^{t}\right) \sum_{j: \tilde{X}_{j}=y_{t}} \alpha_{t j}^{(H)},
poutt=pgentPV(yt)+(1−pgent)j:X~j=yt∑αtj(H),
其中,
P
V
(
y
t
)
P_{\mathcal{V}}\left(y_{t}\right)
PV(yt)是 softmax LSTM 的输出分布,
X
~
j
\tilde{X}_{j}
X~j是长度为
(
∣
Q
∣
+
∣
S
∣
)
(|Q|+|\mathcal{S}|)
(∣Q∣+∣S∣)的序列,其只包含
X
X
X中的 question words 和特殊标记[T]、[C]。
2.5 Schema-Consistency Guided Decoding
3 Related work
4 Experimental Setup
4.1 Dataset
4.2 Evaluation Metrics
4.3 Implementation details
5 Results
5.1 End-to-end Performance Evaluation
5.1.1 Spider
5.1.2 WikiSQL
5.2 Ablation Study
5.3 Error Analysis
5.3.1 Manual Evaluation
5.3.2 Qualitative Analysis
6 Conclusion
当数据充足而目标逻辑形式较浅时,sequence-to-sequence 模型是跨数据库语义解析的良好选择,实现更容易且解码效率更高。
后续计划:
- 进一步改进模型的组合泛化(compositional generalization)和可解释性。
- 研究BRIDGE的扩展应用,这些任务需要结合文本和表格的理解,如弱监督的语义分析和事实检查。
标签:Bridging,right,Semantic,boldsymbol,Tabular,SQL,mathrm,字段名,left 来源: https://blog.csdn.net/qq_42341984/article/details/113059271