一般与数据库系统的交互有两种方式:第一是通过写SQL语句;第二是通过用户界面。那么能够有第三种方式?通过自然语言的方式。围绕该任务的研究,学术界已经有一些成果,具体可以进行调研。
该比赛通过使用金融和通用领域的表格数据作为数据源,提供在此基础上标注的自然语言和SQL语句的匹配对。
训练集 | 测试集1 | 测试集2 |
---|---|---|
4w | 0.5w | 0.5w |
训练数据的一个样本如下:
{
"nl": "((项目名称) 等于世茂茂悦府 并且(容积率) 大于 1) 套均面积 是多少", # 基于模板自动生成的自然语句
"table_id": "a1b2c3d4", # 相应表格的id
"question": "世茂茂悦府新盘容积率大于1,请问它的套均面积是多少?", # 自然语言问句
"sql":{ # 真实SQL
"sel": [7], # SQL选择的列
"agg": [0], # 选择的列相应的聚合函数, '0'代表无
"cond_conn_op": 0, # 条件之间的关系
"conds": [
[1,2,"世茂茂悦府"], # 条件列, 条件类型, 条件值,col_1 == "世茂茂悦府"
[6,0,1]
]
},
"sql_nl": "SELECT col_8 FROM Table WHERE (col_2 == '世茂茂悦府' and col_7 > 1)" # 真实SQL的字符串形式
}
其中,测试数据的输入只有table_id和question两个字段。在训练数据中,需要重点关注nl字段应该怎样使用?
(1)Logic Form Accuracy:预测完全正确的SQL语句,其中,表的列的顺序并不影响准确率的计算。
(2)Execution Accuracy: 预测的SQL的执行结果与真实的SQL的执行结果一致。