【Text2SQL】Spider 数据集
论文:Spider: A Large-Scale Human-Labeled Dataset for Complex and Cross-Domain Semantic Parsing and Text-to-SQL Task
⭐⭐⭐⭐⭐
EMNLP 2018, arXiv:1809.08887
Dataset: spider
GitHub: github.com/taoyds/spider
一、论文速读
本文提出了 Text2SQL 方向的一个经典数据集 —— Spider 1.0,其难度远大于 WikiSQL,包含了 200 个数据库,覆盖了 138 个不同的领域,平均每个数据库由 27.6 个 columns 和 8.8 个外键,总共由 10,181 个 questions 以及 5,693 个对应的复杂 SQL 查询构成。
1.1 数据集的特点
数据集由 11 名计算机学生构建,在做数据标注时,确保了以下三个方面:
- SQL 模式的覆盖:每个数据库的示例覆盖了常见的 SQL 模式,包含多列的 SELECT 和 aggregation、WHERE、GROUP BY、HAVING、ORDER BY、LIMIT、JOIN、UNION、LIKE 等等,且每个 table 都至少出现在一个 query 中。
- SQL 一致性:有些 question 可能有多种 SQL 查询写法,该工作设计了标注协议,当存在多个等效 query 时,所有标注者都选择相同的 SQL 查询模式。
- 问题清晰化:不会创建模糊有歧义的问题,比如“最受欢迎”这种没有明确定义的问题;也没有需要数据库之外的常识才能回答的问题,因为这脱离了“语义解析”的训练目标。
标注工作可以借助 sqlite-web 来打开数据库并查看。
1.2 任务的定义
模型将被在不同的复杂 SQL、复杂数据库、复杂 domains 上被测试,要求模型能够对 question 理解语义,并对新的数据库有泛化能力。
任务不评估模型生成 value 的能力,因为这个 benchmark 侧重评估预测出正确的 SQL 结构和 columns,数据集中也被排除了需要常识推理和数学计算的 querys。
论文工作还对数据库的 table names 和 column names 做了清洗,让这些名字清晰且自成一体。比如将 stu id 转为 student id
二、评价指标
本论文给出了三个 metrics:Component Matching、Exact Matching 和 Execution Accuracy。
2.1 Component Matching
Component Matching 衡量的是 prediction 和 ground-truth SQL 的不同 component 的平均精确匹配效果。
SQL 中每个 keywords 视为一种 component,并将其分解为含有多个 sub-component 的 bag。比如 SELECT avg(col1), max(col2), min(col1) 被分解为一个 bag:(avg, min, col1), (max, col2),然后查看 prediction 和 ground-truth SQL 的 bag 是否相同。
keywords 指的是包括所有不带 column name 和 operatiors 的 SQL 关键字,如 SELECT、WHERE 等。
被分解后,每一个 component 被分解为一个 bag,这个 bag 中的每一个元素对应一个 sub-component,这个 sub-component 也是被分解为一个 bag。
为了报告一个 model 在每个 component 上的整体表现,我们会计算每个 exact set matching 的 F1 score。
2.2 Exact Matching
Exact Matching 衡量的是两个 SQL 是否整体上等同。按照上一节的描述,只有当两个 SQL 在所有 component 上都精确匹配的情况下,这个样本预测才算做正确。
2.3 Execution Acc
Execution Acc 比较的两个 SQL 执行的结果集是否相同。
- Exact Matching 可能会产生 false negative
- Execution Acc 可能会产生 false positive
三、数据集示例
根据 SQL component 数量、conditions 等等,将 SQL queries 分成了四个难度:easy、medium、hard 和 extra hard。
下图展示了四个 level 的示例:

当时论文测试了已有的几个 Text2SQL 模型,也发现都没有表现很好,也说明了 Spider 数据集的难度较高。
四、实验结论
论文使用 SQLNet、TypeSQL 等模型测试了一波,发现以下整体的结论:
- 所有模型的整体表现都很低,说明 Spider 具有挑战性,尤其是 WHERE 子句的预测,因为 WHERE 子句更有可能有多个 columns 和 operators。
- 目前的模型在 test split 上拓展到新数据库时都表现较差,这说明 Spider 为模型泛化到新的数据库提出了挑战。
- 数据库的模式复杂性也会影响模型的性能,实验也发现,随着数据库的外键数量增多,表现也会下降。
五、代码
GitHub 首页中给出了 example 的格式,也给出了用于评估的脚本 evaluation.py。
相关文章:
【Text2SQL】Spider 数据集
论文:Spider: A Large-Scale Human-Labeled Dataset for Complex and Cross-Domain Semantic Parsing and Text-to-SQL Task ⭐⭐⭐⭐⭐ EMNLP 2018, arXiv:1809.08887 Dataset: spider GitHub: github.com/taoyds/spider 一、论文速读 本文提出了 Text2SQL 方向的…...
语雀——云知识库/笔记
对于日常进行学习/创作或是记录学习、工作内容与心得的群体来说,能够及时同步的云笔记应用有着广泛的应用场景。近期,我也探索了许多款不同的软件应用,今天来分享一款很有特点的应用——语雀。 语雀,为每一个人提供优秀的文档和知…...
Java学习:电影查询简单系统
1.创建一个movice的对象来存放电影 里面设置构造器(有参和无参) package com.movie;public class movice {//创建一个movice的对象存放电影private int id;private String name;private double price;private double score;private String diector;pri…...
在Mac电脑下怎么部署QAnything?
在Mac电脑下部署QAnything,可以选择使用纯Python环境进行部署,这种方式不依赖GPU,适合在Mac等笔记本电脑上运行。以下是基于QAnything的纯Python环境安装教程的步骤[18]: 安装要求 Python 3.10(建议使用Anaconda3来管…...
单条16g和双条8g哪个好
单条16g和双条8g各有优劣,具体选择要根据个人需求和电脑配置来决定。 以下是一些参考信息: •单条16g内存的价格比双条8g内存的价格低,而且16g的内存容量大,一条内存十分的方便。 •两条8g内存可以组成双通道,电脑运行速度要快一些。 •对于普通使用电脑的人群与热衷于…...
Microsoft VBA Excel 去重小工具
问题简述 在本工作表中,A1:B3单元格样式如下,通过名称管理器B列的单元格被命名为"LinkFile"、“SheetName”、“InputArea”,请实现以下功能:读取Excel文件中的数据,去除重复的数据,并记录每个数…...
数据库管理-第194期 网络加速RDMA初探(20240526)
数据库管理194期 2024-05-26 数据库管理-第194期 网络加速RDMA初探(20240526)1 概念2 发展3 使用总结 数据库管理-第194期 网络加速RDMA初探(20240526) 作者:胖头鱼的鱼缸(尹海文) Oracle ACE A…...
C++小游戏 合集
生化危机 #include<conio.h> #include<string.h> #include<stdio.h> #include<stdlib.h> #include<windows.h> #include<time.h> #include<direct.h> int n,round,gold0; bool f1,f2,f3,deadfalse,PC_64Bit; char str[4]; struct n…...
【Python爬虫篇】Selenium在获取网页数据方面的使用及采集中国大学课程评论数据
1 selenium概述 1.什么是selenium? (1)Selenium是一个用于Web应用程序测试的工具。 (2)Selenium 测试直接运行在浏览器中,就像真正的用户在操作一样。 (3)支持通过各种driver&#…...
【JavaScript】文件下载
文件下载的消息格式 服务器只要在响应头中加入 Content-Disposition: attachment; filename"kxx" 即可触发浏览器的下载功能其中: attachment 表示附件,浏览器看到此字段,触发下载行为(不同的浏览器下载行为有所区别&…...
利用Python去除PDF水印
摘要 本文介绍了如何使用 Python 中的 PyMuPDF 和 OpenCV 库来从 PDF 文件中移除水印,并将每个页面保存为图像文件的方法。我们将深入探讨代码背后的工作原理,并提供一个简单的使用示例。 导言 简介:水印在许多 PDF 文件中都很常见&#x…...
Unity Assembly Definition Dotween 引用
原理: 具体Unity程序集原理用法,暂时留坑,不介绍了,相信有很多人也写过了 这里简单放个官方API链接 https://docs.unity3d.com/cn/current/Manual/ScriptCompilationAssemblyDefinitionFiles.html 现象 :Dotween引用…...
重开之数据结构(二刷)
引言: 由于前段时间学习效率不高,导致后面复习前面数据结构没有一个大纲,因此打算重新来学习以下数据结构,期望再次把数据结构学透,并有深刻的印象.并且记录每一次的学习记录 以便于后续复习 二分查找 需求:在有序数组arr内,查找target值 如果找到返回索引位置如果找不到返回…...
JVM(三)
在上一篇中,介绍了JVM组件中的类加载器,以及相关的双亲委派机制。这一篇主要介绍运行时的数据区域 JVM架构图: JDK1.8后的内存结构: (图片来源:https://github.com/Seazean/JavaNote) 而在运行时数据区域中&#…...
【二叉树】:LeetCode:100.相同的数(分治)
🎁个人主页:我们的五年 🔍系列专栏:初阶初阶结构刷题 🎉欢迎大家点赞👍评论📝收藏⭐文章 1.问题描述: 2.问题分析: 二叉树是区分结构的,即左右子树是不一…...
[AI Google] 介绍 VideoFX,以及 ImageFX 和 MusicFX 的新功能
VideoFX 是来自 labs.google 的最新实验,您可以查看音乐效果和图像效果的新更新,现在在 110 多个国家可用。 生成式媒体正在改变人们构思创意并增强我们的创造力能力的方式。我们致力于与创作者和艺术家合作构建人工智能,以更好地理解这些生成…...
[7] CUDA之常量内存与纹理内存
CUDA之常量内存与纹理内存 1. 常量内存 NVIDIA GPU卡从逻辑上对用户提供了 64KB 的常量内存空间,可以用来存储内核执行期间所需要的恒定数据常量内存对一些特定情况下的小数据量的访问具有相比全局内存的额外优势,使用常量内存也一定程序上减少了对全局…...
python使用base加密解密
原理 base编码是一种加密解密措施,目前常用的有base16、base32和base64。其大致原理比较简单。 以base64为例,base64加密后共有64中字符。其加密过程是编码后将每3个字节作为一组,这样每组就有3*824位。将每6位作为一个单位进行编码…...
简述vue.mixin的使用场景和原理
Vue.mixin的使用场景 Vue.mixin是Vue的全局混入功能,它提供了一种非常灵活的方式来分发Vue组件中的可复用功能。使用Vue.mixin可以为Vue实例和组件添加全局的方法、属性、钩子函数等。具体的使用场景包括: 全局设置默认属性或方法:例如&…...
C# WPF入门学习(四)—— 按钮控件
上期介绍了WPF的实现架构和原理,之后我们开始来使用WPF来学习各种控件。 一、尝试插入一个按钮(方法一) 1. VS2019 在界面中,点击工具栏中的视图,在下拉菜单中选择工具箱。 至于编译器中的视图怎么舒服怎么来布置&am…...
从零搭建工业级Java Agent:Claude Code架构拆解完整教程
引言:随着AI Agent技术的爆发,越来越多开发者想从0到1掌握Agent的设计与落地,但市面上大多教程停留在“概念讲解”,缺乏与真实项目结合的实操指导。本文基于Claude Code(Java版)项目,拆解12节渐…...
Omni-Vision Sanctuary 赋能前端设计:自动生成 UI 组件与视觉素材实战
Omni-Vision Sanctuary 赋能前端设计:自动生成 UI 组件与视觉素材实战 1. 前端设计的效率困境 每天早上9点,前端开发团队的设计评审会总是充满火药味。"这个按钮样式还需要再调整一下"、"图标风格不太统一"、"背景图看起来不…...
Nunchaku FLUX.1 CustomV3批量处理技巧:高效生成1000+图像的方法
Nunchaku FLUX.1 CustomV3批量处理技巧:高效生成1000图像的方法 1. 引言 如果你正在使用Nunchaku FLUX.1 CustomV3生成图像,可能会遇到这样的困扰:每次只能生成几张图片,想要大批量产出内容时,需要反复手动操作&…...
DISCO/TSK机型切割道与切痕标注及对称中心定位系统
DISCO/TSK机型切割道与切痕标注及对称中心定位系统 摘要 在半导体晶圆划片工艺中,切割道(Scribe Line)与切痕(Kerf)的精确检测与定位对于保证芯片分割质量、减少崩边及提高良率至关重要。本文针对DISCO、TSK等主流划片机机型,提出了一套基于图像处理的切割道与切痕自动…...
次元画室Java后端集成指南:SpringBoot构建AI绘画服务
次元画室Java后端集成指南:SpringBoot构建AI绘画服务 如果你是一名Java开发者,正在琢磨怎么把那个很火的“次元画室”AI绘画能力塞进自己的SpringBoot应用里,那你来对地方了。我最近刚做完一个类似的项目,从零开始把AI绘画服务集…...
字符串拼接用“+”还是 StringBuilder?别再凭感觉写了辜
前言 Kubernetes 本身并不复杂,是我们把它搞复杂的。无论是刻意为之还是那种虽然出于好意却将优雅的原语堆砌成 鲁布戈德堡机械 的狂热。平台最初提供的 ReplicaSets、Services、ConfigMaps,这些基础组件简单直接,甚至显得有些枯燥。但后来我…...
AI民主化:让每个人都能开发AI应用,是理想还是泡沫?
在人工智能(AI)技术飞速发展的今天,“AI民主化”已成为热门议题——它承诺让非专业开发者也能轻松创建AI应用,打破技术壁垒。然而,作为软件测试从业者,我们不禁要问:这究竟是推动创新的理想愿景…...
示波器带宽选200MHz还是500MHz?手把手教你根据信号速率和PCB布线选择合适仪器
示波器带宽选200MHz还是500MHz?从信号完整性到实战选型指南 当你在实验室调试一块基于FPGA的高速数字电路板时,突然发现信号波形出现难以解释的振铃和过冲。此时你面前摆着两台示波器:一台200MHz带宽的经济型型号,另一台500MHz带宽…...
如何处理phpMyAdmin提示配置文件读取失败_文件属组与读写权限调整
根本原因是PHP进程无法读取config.inc.php文件,主因是系统级权限问题:Web服务器用户(如www-data)无读取权限,或文件权限为666/660等不安全组合,或SELinux/AppArmor拦截,或符号链接目标权限错误。…...
从付费软件到自主开发:我用AI和FFmpeg实现了一个录屏工具粱
我为什么会发出这个疑问呢?是因为我研究Web开发中的一个问题时,HTTP请求体在 Filter(过滤器)处被读取了之后,在 Controller(控制层)就读不到值了,使用 RequestBody 的时候。 无论是字…...
