【Text2SQL 论文】SQLova:首次将 PLM 应用到 NL2SQL 中

news2025/2/28 15:53:43

论文:A Comprehensive Exploration on WikiSQL with Table-Aware Word Contextualization

⭐⭐⭐⭐

KR2ML Workshop at NeurIPS 2019, arXiv:1902.01069

Code: SQLova | GitHub

参考文章:将预训练语言模型引入WikiSQL任务 | CSDN

一、论文速度

这篇论文对 SQLNet 进行改进,首次尝试引入 PLM 来获得 context embedding。在实现思路上与 SQLNet 类似,也是先预先构建一个 SQL sketch,然后再填充 slots。

本文提出的模型 SQLova 分为两个 layers:encoding layer 和 NL2SQL layer:

  • encoding layer:使用 BERT 来获得 table-aware 和 context-aware 的 question word representation
  • NL2SQL layer:使用上一层获得的 encoded representation 来生成 SQL query

在 NL2SQL layer 中,思路与 SQLNet 类似,使用了多个 model 来填充 SQL sketch 中的不同 slots 从而生成 SQL。

二、SQLova

分别介绍 SQLova 的两个 layers。

2.1 encoding layer

WikiSQL dataset 的输入是 question 和 table headers,输出是生成的 SQL query 和相应的执行结果,如下图所示:

20240524102543

我们需要将 question 和 table headers 使用 [SEP] 分隔符连接起来,开头再加一个 [CLS],然后输入给 BERT,BERT 的最后两层输出被拼接起来作为 encoded representation。如下图所示:

20240524103014

这样,通过 encoding layer,我们借助 BERT 对 question 和 table headers 进行编码,得到了一个 table-aware representation

2.2 NL2SQL layer

对于上一层得到的 table-aware representation,还需要使用 LSTM 做进一步的上下文编码,这里使用的是 100 维的两层 BiLSTM:一个 question encoder LSTM-q,一个 header encoder LSTM-h

  • E n E_n En 表示 question 的第 n 个 token 经过 LSTM-q 后的 encoding vector
  • D c D_c Dc 表示 header c 的经过 LSTM-h 的 encoding vector

之后,我们就使用这两个 encoding 来交给不同的 model 预测 slots,如下图所示(从上往下看,BERT 的输出经过 LSTM 再去预测 slots):

20240524104715

NL2SQL layer 的 6 个 sub-module 不共享参数。这里还用到了 SQLNet 提出的一个关键技术 Column Attention 机制。

2.3 Execution-guided decoding

SQLOVA 使用了 Execution-guided decoding 技术,以减少不可执行的 query 语句。

所谓 Execution-guided decoding 就是在输出返回结果时对检查生成的 SQL 序列是否是一条语法正确的 SQL 语句,使模型最终输出的 SQL 语句一定是可以无语法错误执行的。它是通过将候选列表中的 SQL 查询按顺序提供给执行器来执行的,并丢弃那些执行失败或返回空结果的查询。该技术可以参考论文 Robust Text-to-SQL Generation with Execution-Guided Decoding.

三、实验

文章还给出了 human 的 performance,从结果来看,SQLova 已超过了人类表现。

同时,文章还进行了充分的消融实验以检验各个模块的有效性。可以看出,预训练模型 BERT 的引入对结果有很大提升。即使用词语的上下文对 logical form 的 acc 有很大贡献。

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

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

相关文章

ZEDmini使用完全指南

ZEDmini使用 ZED stereolabs 开箱测评 使用说明 ubuntu18.04nvidiacuda10 ubuntu18.04ZED SDK安装和使用 Ubuntu16.04安装NVIDIA显卡驱动 查看显卡信息 redwallredwall-G3-3500:~/catkin_ws$ lspci | grep VGA 00:02.0 VGA compatible controller: Intel Corporation Device …

XV7011BB陀螺仪传感器广泛用于工业应用

陀螺仪传感器作为一种重要的惯性传感器,在航空航天、智能手机与可穿戴设备、工业控制与机器人、汽车行业、医疗仪器等多个领域都有着重要的应用,为这些领域的发展和创新提供了关键支持。 Epson陀螺仪传感器系列以其优异的性能和可靠性著称&#xff0c…

【20天拿下Pytorch:Day 8】模型层layers

文章目录 1. 内置模型层1.1 基础层1.2 卷积网络相关层1.3 循环网络相关层1.4 Transformer相关层 2. 自定义模型层 深度学习模型一般由各种模型层组合而成。 torch.nn中内置了非常丰富的各种模型层。它们都属于nn.Module的子类,具备参数管理功能。 注:这…

最新 ROS 2 Jazzy Jalisco 发布!支持 Ubuntu 24.04

系列文章目录 前言 世界海龟日快乐 今天,ROS 2 发布团队很高兴地宣布 ROS 2 的第十个版本:Jazzy Jalisco(代号 jazzy)。 除了之前分享的官方徽标,我们还发布了全新的 Jazzy Jalisco 图标。 Jazzy Jalisco 是一个长期支…

2024电工杯A题保姆级分析完整思路+代码+数据教学

2024电工杯A题保姆级分析完整思路代码数据教学 A题题目:园区微电网风光储协调优化配置 接下来我们将按照题目总体分析-背景分析-各小问分析的形式来 总体分析: 题目要求对园区微电网进行风光储协调优化配置,具体涉及三个园区&#xff08…

小蓝和小青在做数字破解游戏

小蓝和小青在做数字破解游戏,设某图案由m*n的0和1点阵组成,依照以下规则破解连续一组数值,从点阵图第一行第一个符号开始计算,从左到右,由上至下。第一个数表示连续有几个0,第二个数表示接下来连续有几个1,…

链表经典OJ问题【环形链表】

题目导入 题目一:给你一个链表的头节点 head ,判断链表中是否有环 题目二:给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 NULL。 题目一 给你一个链表的头节点 head ,…

什么是物联网通信网关?-天拓四方

在信息化、智能化的时代,物联网技术的广泛应用正在逐渐改变我们的生活方式。物联网通过各种传感器和设备,将现实世界与数字世界紧密相连,从而实现智能化、自动化的生活和工作方式。作为物联网生态系统中的重要组成部分,物联网通信…

Q-Learning学习笔记-李宏毅

introduction 学习的并不是policy,而是学习critic,critic用来评价policy好还是不好;一种critic:state value function V π ( s ) V^\pi(s) Vπ(s)是给定一个policy π \pi π,在遇到state s s s之后累积的reward的…

并发控制利器Semaphore

并发控制利器:Semaphore详解与应用 简介 Semaphore 是Java并发编程中的一个重要工具,用于管理对共享资源的访问权限,确保系统资源不会因过度访问而耗尽。形象地说,Semaphore 可以比喻为交通信号灯,它控制着能够同时进…

Spring Cloud 系列之Gateway:(9)初识网关

传送门 Spring Cloud Alibaba系列之nacos:(1)安装 Spring Cloud Alibaba系列之nacos:(2)单机模式支持mysql Spring Cloud Alibaba系列之nacos:(3)服务注册发现 Spring Cloud 系列之OpenFeign:(4)集成OpenFeign Spring Cloud …

探索 JavaScript 新增声明命令与解构赋值的魅力:从 ES5 迈向 ES6

个人主页:学习前端的小z 个人专栏:JavaScript 精粹 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结,欢迎大家在评论区交流讨论! ES5、ES6介绍 文章目录 💯声明命令 let、const🍟1 let声明符&a…

【区块链】caliper压力测试

本文上接postman接口测试 参照工程项目使用Caliper测试工具对食品安全溯源系统智能合约生成新食品(newFood)功能进行压力测试 首先启动webase python3 deploy.py startAll vim /opt/bencahmark/caliper-benchmark/networks/fisco-bcos/test-nw/fisco-bcos.json 命令便捷查…

刷代码随想录有感(75):回溯问题——非递减子序列

题干&#xff1a; 代码&#xff1a; class Solution { public:vector<int> tmp;vector<vector<int>> res;void backtracking(vector<int> nums, int start){if(tmp.size() > 2){res.push_back(tmp);}unordered_set<int> uset;for(int i sta…

JMeter 基本使用【Windows Jmeter GUI 图形界面】

1.安装jmeter GUI图形界面 需要安装JDK 官方网址: Apache JMeter - Apache JMeter™ linux tgz windows zip 2. 目录及文件 bin: 核心可执行文件&#xff0c;包含配置 extras&#xff1a;插件扩展包 lib&#xff1a;核心依赖包 ext&#xff1a;核心包 junit&#xff1a;单…

低代码开发:成本革命,还是技术幻象?

在当今快速发展的数字化时代&#xff0c;企业面临着不断增长的技术需求和日益紧缩的预算压力。开源低代码开发平台&#xff08;YDUIbuilder&#xff09;应运而生&#xff0c;承诺以更低的成本和更快的速度交付应用程序。但低代码开发真的能减少成本吗&#xff1f;本文将深入探讨…

uniapp集成websocket不断线的处理-打牌记账

背景 近期在开发打牌记账微信小程序时&#xff0c;我们将房间这个业务场景做成了类似聊天室功能。 对房间内发生的动作&#xff0c;都能实时对其他人可见。 如:转账&#xff0c;离开&#xff0c;加入&#xff0c;结算等动作 其他人员都能实时接收到推送消息&#xff0c; 这个时…

自媒体多平台互助平台_互赞互关,视频快速起流

首先&#xff0c;视频爆流的关键规则是什么&#xff1f; 平台根据视频的点赞/评论数据计算视频热门程度&#xff0c; 视频播放留存与收藏等等也在考核范围内&#xff0c; 不过&#xff0c;互关互赞不一定符合推流&#xff01;这你要清楚&#xff01;&#xff01; 目前我还不能准…

Doris【部署 03】Linux环境Doris数据库部署异常问题收集解决(不断更新)

Linux环境Doris数据库部署异常问题 1.FE1.1 Unknown system variable character_set_database1.2 notify new FE type transfer: UNKNOWN1.3 mysql_load_server_secure_path1.4 Only unique table could be updated1.5 too many filtered rows 2.BE2.1 Have not get FE Master …