【Text2SQL 经典模型】HydraNet
论文:Hybrid Ranking Network for Text-to-SQL
⭐⭐⭐
arXiv:2008.04759
HydraNet 也是利用 PLM 来生成 question 和 table schema 的 representation 并用于生成 SQL,并在 SQLova 和 X-SQL 做了改进,提升了在 WikiSQL 上的表现。
一、Intro
论文总结了 WikiSQL 上做 Text2SQL 的 3 个挑战:
- 如何融合来自 NL question 和 table schema 的信息,这是由 encoder 处理的;
- 如何保证输出的 SQL 查询是可执行且准确的,这是由 decoder 处理的;
- 如何利用 PLM。
本篇模型主要解决第 3 个问题,同时顺带解决了前两个问题。本论文认为,之前的方法没有很好地将 task model 和 PLM 对齐,从而导致 PLM 的力量被 task model 削弱,比如 SQLova 和 X-SQL 都是在 BERT 编码结果上施加了另外的 pooling 层(如添加 LSTM 操作等),这带来了信息丢失和不必要的复杂性。但本文是充分利用 BERT 的功能,认为 [CLS] 的 output representation 捕获了 question 和 columns 的所有融合信息,这也正是 decoder 所需要的 column vector,因此,本文工作没有应用进一步的 pooling 或者额外的复杂曾,这让模型结构更加简单高效。
二、HydraNet
HydraNet 将 Text2SQL 视为一个多任务学习问题。
2.1 PLM 的 encode
给定一个 question q q q 和候选列 c 1 ∼ c k c_1 \sim c_k c1∼ck。
针对每一个 column c i c_i ci,我们为它构造一个 pair:

其中:
- Concat 表示字符串的拼接,本文使用空格连接
- ϕ c i \phi_{c_i} ϕci 表示 column c i c_i ci 的类型:string、real 等
- t c i t_{c_i} tci 表示 c i c_i ci 的 table name
然后,将 concat 的拼装结果作为 x,question 作为 y,得到下面的 token 序列:

将上面的 token seq 输入给 BERT 做编码,从而得到 seq representation。
2.2 Tasks
本文考虑没有嵌套结构的 SQL query,这里将一个 SQL 表述为以下的形式:

也就是一个 SQL 包括 SELECT、FROM、WHERE 这三个部分。
我们将上面的 SQL query 中的 objects 分为两类:
- 与特定 column 有关联的 objects:比如 aggregator、value text span
- 与特点 column 无关的全局 objects:比如 select-num(select 从句的个数)和 where-num(where conditions 的个数)
2.2.1 对与 column 有关的 objects 的预测
对于每个 col-question 的 pair ( c i , q ) (c_i, q) (ci,q),对于上面 1 中的与 column 有关的 objects 的预测可以被视为对 sentence pair 的分类或者 QA task。
使用 BERT 输出的 seq representation 来做预测:
- 对于一个 aggregator a j a_j aj 的预测:将 h [ C L S ] h_{[CLS]} h[CLS] 经过一个仿射变换再经过一个 softmax 后做分类。
- 对一个 condition operator o j o_j oj 的预测:也是将 h [ C L S ] h_{[CLS]} h[CLS] 经过一个仿射变换再经过一个 softmax 做分类。
- 对 value text span 的 start index 和 end index 的预测:分别计算 question 中每个 token 作为 start index 和 end index 的概率,并选择概率最大的作为 start 和 end 形成 text span。
2.2.2 对于与 column 无关的 objects 的预测
为了预测 select-num n s n_s ns,计算出概率 P ( n s ∣ q ) P(n_s | q) P(ns∣q),然后能够让这个概率最大的 n s n_s ns 值就是预测的结果。这个概率的计算公式为:

其中, P ( n s ∣ c i , q ) P(n_s | c_i, q) P(ns∣ci,q) 可以被视为一个 sentence pair 的分类; P ( c i ∣ q ) P(c_i | q) P(ci∣q) 可以被视为 column c i c_i ci 和 question q q q 的 similarity,它的具体计算可以参考下一节。
与 n s n_s ns 类似,where-num n w n_w nw 的预测方式也是几乎一模一样。
2.2.3 Column Ranking
对于所有候选的所有 columns,我们需要计算出两个 rank:SELECT-Rank 和 WHERE-Rank,是根据是否存在于 SELECT 或 WHERE 语句中的分数的排名。
对于 SELECT-Rank 的排名分数的计算方式如下:

也就是利用 h [ C L S ] h_{[CLS]} h[CLS] 来计算。同样,WHERE-Rank 的分数计算也是如此。
以上这个公式也就是计算出的 P ( c i ∣ q ) P(c_i | q) P(ci∣q),可以用于上一节的计算。
基于排名分数,就可以做排名了。做出排名后,SELECT-Rank 的前 select-num 就可以作为选出的 SELECT 中的 columns 结果了,另外的 WHERE 的 columns 的选择也是如此。
2.3 Execution-guided decoding
论文还使用 Execution-guided decoding 来防止生成的 SQL 出现错误。
三、总结
在 WikiSQL 上做了实验,发现 HydraNet 的性能优于其他方法。尤其值得注意的是,其表现甚至与使用了 MT-DNN 作为 PLM 的 X-SQL 效果一样好,尽管 MT-DNN 明显比 BERT-Large 要好。
另外,HydraNet 的架构更加简单,参数也更少,它只在 PLM 的输出中增加了 Dense 层。这样得到的 HydraNet 泛化性更好。
总的来说,本文提出的 HydraNet 更好的利用了 BERT-style 的 PLM,保持了架构的简单,并在 WikiSQL 排行榜上表现出很好的效果。但是,HydraNet 所支持的语法仍较为简单,仍然需要扩展。
相关文章:
【Text2SQL 经典模型】HydraNet
论文:Hybrid Ranking Network for Text-to-SQL ⭐⭐⭐ arXiv:2008.04759 HydraNet 也是利用 PLM 来生成 question 和 table schema 的 representation 并用于生成 SQL,并在 SQLova 和 X-SQL 做了改进,提升了在 WikiSQL 上的表现。 一、Intro…...
Mysql-根据字段名查询字段在哪些表里
SELECT * FROM information_schema.COLUMNS WHERE COLUMN_NAMElabel_name;...
牛逼!50.3K Star!一个自动将屏幕截图转换为代码的开源工具
1、背景 在当今快节奏的软件开发环境中,设计师与开发者之间的协同工作显得尤为重要。然而,理解并准确实现设计稿的意图常常需要耗费大量的时间和沟通成本。为此,开源社区中出现了一个引人注目的项目——screenshot-to-code,它利用…...
八种单例模式
文章目录 1.单例模式基本介绍1.介绍2.单例模式八种方式 2.饿汉式(静态常量,推荐)1.基本步骤1.构造器私有化(防止new)2.类的内部创建对象3.向外暴露一个静态的公共方法 2.代码实现3.优缺点分析 3.饿汉式(静态…...
禅道密码正确但是登录异常处理
禅道密码正确,但是登录提示密码错误的异常处理 排查内容 # 1、服务器异常,存储空间、数据库异常 # 2、服务异常,文件丢失等异常问题定位 # 1、df -h 排查服务器存储空间 # 2、根据my.php排查数据库连接是否正常 # 3、修改my.pho,debugtrue…...
Go微服务: Nacos的搭建和基础API的使用
Nacos 概述 文档:https://nacos.io/docs/latest/what-is-nacos/搭建:https://nacos.io/docs/latest/quickstart/quick-start-docker/有很多种搭建方式,我们这里使用 docker 来搭建 Nacos 的搭建 这里,我们选择单机模式…...
基于Hadoop的城市公共交通大数据时空分析
基于Hadoop的城市公共交通大数据时空分析 “Spatio-temporal Analysis of Urban Public Transportation Big Data based on Hadoop” 完整下载链接:基于Hadoop的城市公共交通大数据时空分析 文章目录 基于Hadoop的城市公共交通大数据时空分析摘要第一章 引言1.1 研究背景1.2 …...
DNS服务的部署与配置(2)
1、dns的安装及开启 dnf install bind.x86_64 -y #安装 #Berkeley Internet Name Domain (BIND) systemctl enable --now named #启用dns服务,服务名称叫named firewall-cmd --permanent --add-servicedns #火墙设置 firewall-cmd --reload …...
MySql--SQL语言
目录 SQl---DDL 结构定义 创建、删除 数据库 代码 运行 设计表 数据类型 整数 浮点数 主键 约束 主键自增长 默认值 字段注释 创建、删除 表 代码 运行 代码 代码 运行 SQL---DML 数据操纵 插入数据 代码 运行 代码 运行 代码 运行 代码 …...
【网络安全】2030年十大新兴网络安全威胁
欧盟网络安全局(ENISA)已发布了一份全面的清单,列出了预计到2030年将影响数字领域的十大新兴网络安全威胁。 该预测是为期八个月的广泛研究的成果,融合了ENISA前瞻专家小组、CSIRTs网络以及欧盟CyCLONe专家的见解。 这项研究突显…...
python数据分析-CO2排放分析
导入所需要的package import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns import datetime %matplotlib inline plt.rcParams[font.sans-serif] [KaiTi] #中文 plt.rcParams[axes.unicode_minus] False #负号 数据清洗…...
2024宝藏工具EasyRecovery数据恢复软件免费版本下载
在这个数字化的时代,数据已经成为我们生活中的重中之重。无论是工作中的重要文件,还是手机中珍贵的照片,我们都依赖着这些数据。然而,数据丢失的情况时有发生,可能是误删,可能是设备故障,更可能…...
【EventSource错误解决方案】设置Proxy后SSE发送的数据只在最后接收到一次,并且数据被合并
【EventSource错误解决方案】设置Proxy后SSE发送的数据只在最后接收到一次,并且数据被合并 出错描述 出错原因与解决方案 出错描述 SSE前后端一切正常,但是fetchEventSource 的onmessage回调函数只在所有流都发送完毕后,才会执行一次。 前…...
如何在linux命令行(终端)执行ipynb 文件。可以不依赖jupyter
1.安装 runipy pip install runipy 2.终端运行 runipy <YourNotebookName>.ipynb 在终端命令行执行shell脚本,(也可以在crontab 中执行): (base) [recommendapp-0-5-B-006 script]$ cat run1.sh #!/bin/bashcd /home/recom…...
基于YOLOv8的车牌检测与识别(CCPD2020数据集)
前言 本篇博客主要记录在autodl服务器中基于yolov8实现车牌检测与识别,以下记录实现全过程~ yolov8源码:GitHub - ultralytics/ultralytics: NEW - YOLOv8 🚀 in PyTorch > ONNX > OpenVINO > CoreML > TFLite 一、环境配置 …...
驱动开发之新字符设备驱动开发
1.前言 register_chrdev 和 unregister_chrdev 这两个函数是老版本驱动使用的函数,现在新的 字符设备驱动已经不再使用这两个函数,而是使用 Linux 内核推荐的新字符设备驱动 API 函数。 旧版本的接口使用,感兴趣可以看下面这个博客&#…...
【JMU】21编译原理期末笔记
本拖延症晚期患者不知不觉已经有半年没写博客了,天天不知道在忙什么。 乘着期末周前赶紧先把编译原理上传了,我记得我这科是86分,有点小遗憾没上90,但是总体不错。 链接:https://pan.baidu.com/s/1gO8pT7paHv1lkM_ZpkI…...
就业信息|基于SprinBoot+vue的就业信息管理系统(源码+数据库+文档)
就业信息管理系统 目录 基于SprinBootvue的就业信息管理系统 一、前言 二、系统设计 三、系统功能设计 1前台功能模块 2后台功能模块 4.2.1管理员功能 4.2.2学生功能 4.2.3企业功能 4.2.4导师功能 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设…...
一.架构设计
架构采用 ddd 架构,不同于传统简单的三层的架构,其分层的思想对于大家日后都是很有好处的,会给大家的思想层级,提高很多。 传统的项目 现有的架构 采取ddd架构,给大家在复杂基础上简化保留精髓,一步步进行…...
<学习笔记>从零开始自学Python-之-实用库篇(一)-pyscript
由Anaconda创建的PyScript是一项实验性的但很有前途的新技术,它使python运转时在支撑WebAssembly的浏览器中作为一种脚本言语运用。 每个现代常用的浏览器现在都支撑WebAssembly,这是许多言语(如C、C和Rust)能够编译的高速运转时…...
嵌入式单元测试框架Unity的设计与应用
1. 嵌入式开发中的单元测试困境与Unity框架的诞生在嵌入式开发领域,单元测试一直是个令人头疼的问题。想象一下,你正在为一个只有32KB Flash和4KB RAM的MCU编写代码,突然发现需要引入单元测试框架——这就像试图在火柴盒里搭建一个完整的化学…...
别再乱用ref和reactive了!Vue3响应式API实战避坑指南(附代码对比)
Vue3响应式API深度解析:从原理到实战的避坑指南 在Vue3的日常开发中,ref和reactive这两个响应式API的使用频率极高,但许多开发者在使用过程中常常陷入各种"陷阱"。本文将深入剖析它们的底层机制,并通过实际案例展示如何…...
CppJieba中文分词架构深度解析与实战指南
CppJieba中文分词架构深度解析与实战指南 【免费下载链接】cppjieba "结巴"中文分词的C版本 项目地址: https://gitcode.com/gh_mirrors/cp/cppjieba CppJieba作为"结巴"中文分词的C高性能实现,为C开发者提供了工业级的中文分词解决方案…...
说话人识别中的性别差异:为什么你的模型对女声准确率更低?
说话人识别中的性别差异:为什么你的模型对女声准确率更低? 在语音技术领域,说话人识别系统已经取得了显著进展,但一个长期存在的问题是:为什么这些系统对女性声音的识别准确率往往低于男性?这种现象不仅存在…...
nixos-anywhere磁盘加密指南:如何实现全盘加密和安全密钥管理
nixos-anywhere磁盘加密指南:如何实现全盘加密和安全密钥管理 【免费下载链接】nixos-anywhere Install NixOS everywhere via SSH [maintainersMic92 Lassulus phaer Enzime a-kenji] 项目地址: https://gitcode.com/gh_mirrors/ni/nixos-anywhere nixos-an…...
不用单片机!纯数字电路实现篮球24秒倒计时器(附完整电路图)
纯硬件打造篮球24秒计时器:从零构建数字电路实战指南 篮球比赛的24秒规则是这项运动最具标志性的计时机制之一。对于电子爱好者而言,用纯硬件电路实现这一功能不仅是一次绝佳的学习机会,更能深入理解数字电路设计的精髓。本文将带你完整构建一…...
Qwen2.5-0.5B-Instruct实战:Python调用接口代码实例
Qwen2.5-0.5B-Instruct实战:Python调用接口代码实例 想快速上手一个轻量级但功能强大的AI模型吗?今天我们来聊聊阿里开源的Qwen2.5-0.5B-Instruct模型,并手把手教你如何用Python调用它的接口。这个模型虽然参数只有5亿,但在指令遵…...
企业降本利器:基于CosyVoice-300M Lite搭建内部语音系统
企业降本利器:基于CosyVoice-300M Lite搭建内部语音系统 1. 轻量级语音合成的企业价值 在数字化转型浪潮中,语音交互系统已成为企业提升服务效率的重要工具。从智能客服到内部通知,从有声内容生成到无障碍辅助,文本转语音&#…...
L2-047 锦标赛(递归解法)
L2-047 锦标赛分数 25作者 DAI, Longao单位 杭州百腾教育科技有限公司有 2k 名选手将要参加一场锦标赛。锦标赛共有 k 轮,其中第 i 轮的比赛共有 2k−i 场,每场比赛恰有两名选手参加并从中产生一名胜者。每场比赛的安排如下:对于第 1 轮的第 …...
Qwen3-TTS开源镜像部署:RabbitMQ消息队列解耦高并发语音合成任务
Qwen3-TTS开源镜像部署:RabbitMQ消息队列解耦高并发语音合成任务 1. 项目概述与核心价值 Qwen3-TTS-12Hz-1.7B-VoiceDesign是一个功能强大的语音合成模型,支持10种主要语言(中文、英文、日文、韩文、德文、法文、俄文、葡萄牙文、西班牙文和…...
