1. 作者简介
2. 文献类型
NAACL 2018
3. 主要工作
- 提出一种新方法:TypeSQL;
- TypeSQL采用了一种基于草图的方法,并将任务视为一个插槽填充问题;
- TypeSQL显式地赋予每个单词类型。
4. 方法概述
- 方法:
首先通过类型识别对问题输入进行预处理。 然后使用两个双向LSTM分别对问题中的单词及其类型和列名进行编码。将LSTM的输出隐藏状态用于预测SQL草图中插槽的值。
- 模型介绍
- 输入预处理-类型识别:将问句分割n-gram (n取2到6),并搜索数据库表、列。对于匹配成功的部分赋值column类型赋予数字、日期四种类型:INTEGER、FLOAT、DATE、YEAR。对于命名实体,通过搜索FREEBASE,确定5种类型:PERSON,PLACE,COUNTREY,ORGANIZATION,SPORT。这五种类型包括了大部分实体类型。当可以访问数据库内容时,进一步将匹配到的实体标记为具体列名(而不只是column类型)
- 输入编码器:包含两个BI-LSTM,一个是输入query+type的编码器(左下方),另一个是表的列名的编码器(左上方)。
- 槽填充模型:包含三个模型(右侧),(1)Model_col:预测select的列、条件的数量、条件的列;(2)Model_agg:预测聚合函数;(3)Model_opval:预测运算符、条件的取值。

1. 三个模型使用相同的方法来计算加权问题和类型表示形式HQT / COL(SQLNet提出)。

1. MODEL_COL模块
模块需要预测三部分:$SELECT_COL,$COND_num和$COND_COL 这三个部分有个特点都是要结合question和表(所有列名)的特征。
预测$SELECT_COL:

预测$COND_num:
预测$COND_COL(这里在SQLNet中发现,SELECT_COL和COND_COL常常会预测相同的列名。所以这里作出了改变,在里面公式中新增了一个关于SELECT_COL列名的项.):
1. MODEL_AGG模块<br />这部分与SQLNet一样,都是预测{NULL,MAX,MIN,COUNT,SUM,AVG}中的一种。

1. MODEL_OPVAL模块
需要预测两部分:$OP;$COND_VAL。
$OP:预测{=,>,<}中的一种。
$COND_VAL(借鉴了Pointernetwork的思想来从输入的Question中考虑Value里的值。):
其中h是前一个生成的单词的隐状态。
5. 数据集
6. 实验结果
TypeSQL达到了82.6%的正确率
7. 未来工作
将来,我们计划通过在数据库拆分设置下探索其他更复杂的数据集来推进这项工作。 通过这种方式,我们可以在更现实的文本到SQL任务(包括许多复杂的SQL和不同的数据库)上研究通用模型的性能。
