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

关联比赛:  首届中文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.rhkb.cn/news/392493.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是DDoS攻击?怎么防御DDoS攻击?

在网络安全领域,DDoS 攻击一直是热门话题,随着网络技术的不断发展和网络环境的复杂化演变,DDoS 攻击变得愈加频繁、更具破坏性。根据 2023 年网络安全态势研判分析年度综合报告,全年全网网络层的 DDoS 攻击次数达 2.51 亿次&#…

【Kubernetes】k8s集群的pod基础

目录 一.Pod概述 1.什么是pod 2.k8s中pod的两种使用方式 3.pod容器的常规使用流程 4.创建pod的3种方式 二.Pod中容器概述 1.容器分类 2.Pod容器的3种镜像拉取策略 3.Pod容器的3种重启策略 4.pod的dns策略 一.Pod概述 1.什么是pod Pod是kubernetes中最小的资源管理组…

MySQL深分页和浅分页

前言 最近有面试过也遇到了问关于深分页问题,在这里简单从MySQL、ES等方面分享一下自己对该问题认识和总结。 一、深分页定义 可以从ES定义上来划分浅分页和深分页的边界,即页数超过10000页为深分页,少于10000页为浅分页。 二、MySQL深分…

初学Ubuntu及遇到的问题

初学Ubuntu及遇到的问题 Ubuntu的安装 1.安装VMware Workstation Pro(网上有很多资料,本文就不细说啦~~~) 2.在Ubuntu官网下载iso文件>https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/20.04/ iso文件随便放在哪个位置&#xff…

内网穿透原理,免费内网穿透(简单使用),公网主动访问内网。

内网穿透的本质就是流量转发,把一个电脑的网卡上的流量数据,转发到另一个网卡的流量数据。 实现原理 网络协议分层就是,物理层,数据链路层,网络层,传输层,应用层。我简单解释一下这些分层协议…

消灭星星游戏程序设计【连载十】——小星星的残影轨迹

消灭星星游戏程序设计【连载十】——小星星的残影轨迹 大家每次都可以在页面中下载本节内容的实现代码,一步一步从简单开始,逐步完成游戏的各种功能,如果大家有任何问题也欢迎留言交流。 游戏整体效果展示: 1、本节要达到的效果 …

MyBatis快速学习

目录 前言 MyBatis的具体使用 一些小工具:MyBatisX 常见问题: 1.表中字段名和实体属性名不一致 2.按条件查询(单条件)时的,查询条件怎么编写 3.按条件查询(多条件) 4.多条件查询时&…

pywinauto:Windows桌面应用自动化测试(七)

前言 上一篇文章地址: pywinauto:Windows桌面应用自动化测试(六)-CSDN博客 下一篇文章地址: 暂无 一、实战常用方法 1、通过Desktop快速获取窗口 通过之前章节我们了解到控制应用的方法为Application&#xff0…

10、springboot3 vue3开发平台-前端-elementplus, axios配置及封装使用, 包含token 存储

1. 准备工作 1.1 清除项目自带页面 删除views和components目录下所有东西&#xff1a; 1.2 修改App.vue <script setup lang"ts"></script><template><router-view></router-view> </template><style scoped></st…

基于R语言绘制GGE双标图2

参考资料&#xff1a; 严威凯等: 双标图分析在农作物品种多点试验中的应用【作物学报】 https://cran.r-project.org/web/packages/GGEBiplots/GGEBiplots.pdf 1、如何判断双标图是否充分体现数据中的规律 在对双标图的解释中&#xff0c;有一个隐含的假设&#xff0c;就是所…

COFFEE AI PARTNER -- 神奇的AI工具,相当我雇佣了一个AI员工,淘汰你的是会使用AI的人

COFFEE AI PARTNER介绍 COFFEE AI PARTNER是由 AI JAVA开发的一款生成式人工智能工具&#xff08;又名AI助手&#xff09;&#xff0c;尝试一下。 首先域名似乎正在备案中&#xff0c;企业邮箱似乎正在采购&#xff0c;目前服务地址是&#xff1a;COFFEE AI PARTNER-官网 官网…

git安装图文

1.下载 通过百度网盘分享的文件&#xff1a;git安装图文 链接&#xff1a;https://pan.baidu.com/s/17ZMiWUIULtrGGba5n-WLeA 提取码&#xff1a;anjm --来自百度网盘超级会员V3的分享 2.安装

【C语言篇】猜数字游戏(赋源码)

文章目录 猜数字游戏前言随机数生成randsrandtime设置随机数生成范围 猜数字游戏的实现 猜数字游戏 前言 在前两篇博客对于分支和循环语句进行了详细的介绍&#xff1a; 分支语句详解 循环语句详解 我们就可以写一写稍微有趣的代码了&#xff0c;比如&#xff1a; 写一个…

二分查找法

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 非常期待和您一起在这个小…

SQL各种注入详解加案例--持续更新

sql注入 联合查询注入案例手工注入判断是否有SQL注入漏洞 sqlmap工具注入 报错注入常用的函数updatexml()函数案例 floor()涉及的函数实现手工注入sqlmap工具注入 盲注布尔盲注案例手工注入脚本sqlmap自动化工具 时间盲注 post注入GET传参和POST传参案例手工注入sqlmap工具 二次…

使用 Python 制作一个属于自己的 AI 搜索引擎

1. 使用到技术 OpenAI KEYSerper KEYBing Search 2. 原理解析 使用Google和Bing的搜搜结果交由OpenAI处理并给出回答。 3. 代码实现 import requests from lxml import etree import os from openai import OpenAI# 从环境变量中加载 API 密钥 os.environ["OPENAI_AP…

MySQL:索引(Index)语句

索引的限制 每个表最多可以有 16 个索引&#xff08;InnoDB 表的限制&#xff09;。 单个索引最多可以包含 16 列。 索引列的最大长度为 767 字节&#xff08;对于 CHAR, VARCHAR, 和 BINARY 类型&#xff09;&#xff0c;3072 字节&#xff08;对于 BLOB 类型&#xff09;。…

浅谈取样器插件之bzm - Free-Form Arrivals Thread Group

浅谈取样器插件之bzm - Free-Form Arrivals Thread Group bzm - Free-Form Arrivals (Ultimate Thread Group) 是一个高级且灵活的线程组插件&#xff0c;专为Apache JMeter设计。它扩展了JMeter的标准线程组功能&#xff0c;允许用户以自由形式定义线程&#xff08;用户&…

SSM项目学习:用xml配置文件或注解开发实现控制反转和依赖注入

什么是SSM SSMSpring(Spring Framework)Spring MVC mybatis Spring Framework系统架构 Spring Framework学习线路 IoC(Inversion of Control)和DI(Dependency Injection) 他们解决的问题&#xff1a;代码耦合度高的问题&#xff0c;需要类自己new对象&#xff0c;修改部分代…

03、DQL(数据查询语句)

目录 1、编写顺序 2、基本查询 3、条件查询 4、聚合函数 5、分组查询 6、排序查询 7、分页查询 8、执行顺序 1、编写顺序 SELECT 字段列表 FROM 表名列表 WHERE 条件列表 GROUP BY 分组字段列表 HAVING 分组后条件列表 ORDER BY 排序字段列表 LIMIT 分页参数2、基本查…