首届中文NL2SQL挑战赛亚军比赛攻略_BugCreater

news2024/9/20 10:58:53

关联比赛:  首届中文NL2SQL挑战赛

1. 任务描述

本次比赛的任务:根据Question、表格信息(包含列名、列类型、内容),预测对应的SQL语句(下图黄色部分)。比赛只涉及单表查询,需要预测的有4部分:挑选的列(sel),列上的聚合函数(agg),筛选的条件(conds),及条件间的关系(cond_conn_op)。

enter image description here

本次赛题将提供4万条有标签数据作为训练集,1万条无标签数据作为测试集。其中,5千条测试集数据作为初赛测试集,对选手可见;5千条作为复赛测试集,对选手不可见。

2. 评价指标

比赛的评分标准包括:
Logic Form Accuracy: 预测完全正确的SQL语句。其中,列的顺序并不影响准确率的计算。
Execution Accuracy: 预测的SQL的执行结果与真实SQL的执行结果一致。
排行榜以$Score_{lf}$与$Score_{ex}$的平均值排序。

3. 难点分析

NL2SQL方向有很多有代表性的数据集,任务最合适的类比数据集就是2017年salesforce提出的WikiSQL数据集,包含8w多数据和2w多表格。不过与其相比,此次比赛的数据集有4点不同:

  • 不限制使用表格内容信息
  • 存在conds value不能从question提取的样本
  • select agg存在多项
  • 没有conds缺失的样本

其中影响最大的就是train中25%左右样本conds value不能直接从question提取。

下表是我们对样本集的一些参数的分析,包括问题长度, 表格列数目 列总长度 最多sel和最多cond数目,这些参数决定了模型的超参数如何设置。

训练集验证集测试集
Num4152243964000(~5000)
Header num(max)232224
Header length(0.99)123136123
Sel num(max)/Cond num(max)3/42/3

4. 解题方案

我们拆解出多个子任务:

  • 把sel与agg结合当作多分类问题;
  • 把cond_conn_op当作多分类问题;
  • 把conds当作一个比较复杂的抽取问题

我们构建了多种类型神经网络模型,将这些任务进行联合学习。

enter image description here


 

enter image description here

enter image description here

改进点

  • 使用了12层transformer动态权重融合,极大的增强了模型的编码能力;
  • 通过列的shuffle进行数据增强,提高了模型的鲁棒性,对于sel、cond的列选择准确率有很好的提升效果;
  • 针对conds value不能从question提取的样本的问题,我们使用纯净的数据(conds value多能从question提取)训练模型。然后用训练好的模型预测不能提取的这批数据,选择置信度高的结果当作类标;
  • 在X-SQL的基础上,增加辅助任务。比如预测sel、cond的数目,可以作为我们后续融合的过滤条件。这两个任务的预测效果都非常好,可以达到99%以上。

5. 结果

enter image description here

enter image description here

查看更多内容,欢迎访问天池技术圈官方地址:首届中文NL2SQL挑战赛亚军比赛攻略_BugCreater_天池技术圈-阿里云天池

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1985032.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

pointofix下载与调整中文

想要在屏幕上批注,用pointofix最好,本篇文章告诉你如何下载pointofix和把pointofix语言弄成中文。 首先打开pointofix官网下载pointofix的安装包。 Pointofix - Herunterladen - Downloadhttps://www.pointofix.de/download.php点击这个pointofix180de…

基于CentOS Stream 9平台搭建Nacos2.4.0.1集群,并使用OpenResty反向代理集群,GRPC协议配置

目录展示 Nacos2.4.0.1集群搭建1. 下载2. 解压3.修改配置3.1分别修改下启动类中JDK路径以及启动大小3.2 分别配置数据源 修改端口去掉前面的#注释(修改数据库地址、数据库用户名、密码)If use MySQL as datasource:Count of DB:Connect URL of DB:密钥鉴…

SQL注入实例(sqli-labs/less-9)

0、初始页面 1、爆库名 使用python脚本 def inject_database1(url):name for i in range(1, 20):low 32high 128mid (low high) // 2while low < high:payload "1 and if(ascii(substr(database(),%d,1)) > %d ,sleep(2),0)-- " % (i, mid)res {"…

项目管理证书 PMP 的含金量高吗?详解分析

有用就是好的&#xff0c;我觉得PMP在项目管理领域非常实用。特别是对我这样刚入门的新手来说&#xff0c;PMP证书和项目管理思维方式对我有很大帮助。因为我刚开始接触这个领域&#xff0c;所以能够接受正确的思维指引&#xff0c;比起那些有经验但可能存在错误思维的经理来说…

word操作技巧

查看word的标题和大纲 参考自&#xff1a; ​​​

C++ 80行 极简扫雷

一共5346个字符&#xff0c;MinGW编译通过&#xff08;强烈不建议写这种代码&#xff01;&#xff01;&#xff01;&#xff09; 压行规则&#xff1a;一行不超过80个字符 代码&#xff1a; #include<windows.h> #include<stdio.h> #include<time.h> #def…

JVM知识总结(垃圾收集算法)

文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 垃圾收集算法 分代收集理论 分代思想就是将堆分为新生代和老年代…

Tkinter 转载 (来自C语言中文网)

一个最简单的Tkinter程序至少应包含以下4个部分&#xff1a; 导入tkinter模块、创建主窗口、也称root窗口&#xff08;即根窗口&#xff09;、添加人机交互控件&#xff0c;同时编写相应的事件函数、通过主循环&#xff08;mainloop&#xff09;来显示主窗口。 以上&#xff…

[Git] fatal: the remote end hung up unexpectedly

1 问题介绍 在使用Git进行代码管理和版本控制的过程中&#xff0c;许多开发者可能会遇到这样一个错误提示&#xff1a;fatal: the remote end hung up unexpectedly。这是一种常见的错误&#xff0c;通常出现在将本地代码推送&#xff08;push&#xff09;到远程仓库&#xff…

新加坡物理服务器详细测评数据

新加坡物理服务器因其地理位置优越、网络连接质量高以及数据中心设施完善等因素&#xff0c;成为了许多企业和个人选择托管其业务的理想之地。以下是对新加坡物理服务器的一些详细测评数据的科普文&#xff0c;旨在帮助读者更好地了解这类服务器的性能和特点。 新加坡物理服务器…

智能制造与工业物联网CC2530——串口通讯、定时器唤醒

一、项目目的&#xff1a; 1.1 任务1&#xff1a;ZigBee 模块串口通信 任务背景&#xff1a; 熟悉 ZigBee 模块的硬件接口是使用该技术的基础。通过学习如何利用 IAR 开发环境设计程序&#xff0c;可以实现 CC2530 与 PC 机终端之间的串口通信&#xff0c;从而更好地理解和应用…

中断、异常

文章目录 概念CPU怎么直到中断/异常跳过来执行哪一个函数呢&#xff1f;LR 中断硬件框架&#xff1a;对于F103这块芯片&#xff0c;如果要PA0发出中断&#xff0c;那要做的操作有&#xff1f;GPIO中断编程具体代码 概念 中断属于一种异常 保存现场、处理异常&#xff08;中断…

C# 植物大战僵尸---杂交版

开发框架&#xff1a;.Net Fra,ework4.0 游戏名称&#xff1a;植物大战僵尸-杂交版 游戏介绍&#xff1a;植物大战僵尸-杂交版是一款结合了经典塔防游戏《植物大战僵尸》的元素和创新杂交机制的游戏。玩家需要种植各种植或英雄物来抵御一波又一波的僵尸入侵。游戏的特色在于各…

迅为RK3588开发板可以实现双屏同显、双屏异显、三屏同显、三屏异显、标异屏切换

RK3588可以实现双屏同显、双屏异显、三屏同显、三屏异显、标异屏切换这主要取决于RK3588芯片内置了VOP控制器&#xff0c;支持三路视频同时输出可有效提高行业定制的拓展性。

《码农职场》(IT人求职就业手册)导读和理性书评

《码农职场》是为IT行业求职者量身定制的一本实用指南&#xff0c;涵盖了从求职准备到成功就业的全方位内容。书中分为“职前调整”和“就业指南”两大部分&#xff0c;每一部分都详尽地介绍了求职过程中的各个关键环节&#xff0c;旨在帮助求职者在竞争激烈的职场中脱颖而出。…

锡废水再生回收的回收处理

锡废水再生回收是一个涉及环境保护和资源再利用的重要过程&#xff0c;主要目的是从含有锡的废水中提取有价值的锡资源&#xff0c;同时减少环境污染。以下是对锡废水再生回收的详细解析&#xff1a; 一、锡废水再生回收的重要性 环境保护&#xff1a;回收废水中的锡可以减少对…

C# Null 合并运算符 ??

int&#xff1f; 在 C# 中&#xff0c;int? 是一个可空的 int 类型&#xff0c;它能够存储一个 32 位带符号整数或者 null 值。当你声明一个 int? 类型的变量并将其初始化为 null&#xff0c;你实际上是在创建一个可以容纳整数值的变量&#xff0c;但是初始时并没有赋予它任…

C++转Java基础知识

目录 1. Java基础知识 1.1 JDK和JVM 1.2 Java基础代码演示 1.3 Java中的注释 1.4 Java中的关键字 1.5 Java中的println和print的区别 2. Java中的数据类型 2.1 常量 2.2 标识符 2.3 变量 2.4 类型转换 2.5 自动类型转换 2.6 强制类型转换 3. 运算符 3.1 自增运算…

彻底删除和安装docker和docker-compose

一、Docker安装和卸载 1.1 离线安装docker 1.1.1 下载docker安装包 1.1.2 上传docker到服务器目录/opt/ 1.1.3 解压docker-19.03.9.tgz 进入opt目录解压docker-19.03.9.tgz 1.1.4 解压的docker文件夹全部移动至/usr/bin目录 1.1.5 将docker注册为系统服务 在/usr/lib/syst…

C++——多态经典案例(一)组装电脑

案例&#xff1a;小明打算买两台组装电脑&#xff0c;假设电脑零部件包括CPU、GPU和内存组成。 一台电脑使用intel的CPU、GPU和内存条 一台电脑使用Huawei的CPU、GPU和Intel的内存条 分析&#xff1a;使用多态进行实现 将CPU、GPU和内存条定义为抽象类&#xff0c;内部分别定义…