Text2SQL学习整理(四)将预训练语言模型引入WikiSQL任务

news2024/9/24 19:13:57

导语

上篇博客:Text2SQL学习整理(三):SQLNet与TypeSQL模型简要介绍了WikiSQL数据集提出后两个早期的baseline,那时候像BERT之类的预训练语言模型还未在各种NLP任务中广泛应用,因而作者基本都是使用Bi-LSTM作为基本组件搭建模型。

本篇博客将介绍两个借助预训练语言模型BERT来解决WIkiSQL数据集挑战的方法:SQLOVA和X-SQL模型。其中,SQLOVA这篇工作更是发表在了2019年的NIPS上,可以看出这个任务被越来越多人所关注。

A Comprehensive Exploration on WikiSQL with Table-AwareWord Contextualization

创新点

SQLOVA工作的创新点有两个:

  1. 借助预训练模型,达到人类表现;
  2. 给出了WikiSQL数据集上的人类表现。

模型架构

整个框架包含两个部分:

  • Table-aware Encoding Layer,用于获取表和上下文感知的question word表示;
  • NL2SQL Layer,用于从编码表示生成SQL查询。

输入模块

image.png

上图为一个WikiSQL数据集中的问题-SQL示例。表格的schema(即图中的表名、列名等)是一种结构性信息,而在利用BERT之类的预训练模型时,需要将所有输入全部转为一个序列。SQLOVA的转换方式如下:

image.png

可以看到,序列的开始部分是query(也即用户的自然语言问句Question),之后是数据库的各个列的名字。因为WIkiSQL是单表的数据库,所以不需要编码表名。在序列化过程中,SQLOVA利用了BERT中的[CLS]、[SEP]等特殊token作为分隔符。

image.png

如上图所示,输入Table-aware Encoding Layer将自然语言查询与整个表的所有header放在一起进行编码,用来表示问题与表两者信息之间存在交互。

NL2SQL模块

与之前的SQLNet类似,SQLOVA在生成SQL语句时采用slot filling的思想,还是分别用6个子模块来生成SQL语句的各个部分。

image.png

NL2SQL层的6个子模块不共享参数、代替使用pointer network推断Where_val,这里训练一个模块来推断start和end、where_val不仅依赖于where_col还依赖于where_op(比如text的类型不存在>或<)、当要结合question和header时,采用的是拼接操作而不是求和操作。

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已超过了人类表现。

image.png

Ablation Study

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

image.png

X-SQL: reinforce schema representation with context

创新点

X-SQL也是利用预训练语言模型的方法。它使用BERT风格预训练模型的上下文输出来增强结构化schema表示,并在下游任务中与类型信息一起学习一个新的schema表示。同时,这里不再使用BERT,而是使用MT-DNN(Multi-Task Deep Neural Networks for Natural Language Understanding一种多任务学习出来的语言模型,详见https://fyubang.com/2019/05/23/mt-dnn/)预训练模型。

模型架构

image.png

模型的整体架构如上图所示。

image.png

模型包括三个部分:

  1. 序列编码器:
  2. 上下文增强的schema编码器
  3. 输出层

序列编码器

序列编码器部分类似BERT,但主要改动如下:

  1. 给每个表增加了一个特殊的空列[EMPTY];
  2. 将segment embedding替换为type embeding,包括问题、类别列、数字列、特殊空列,共4种类型;
  3. 采用MT-DNN而不是BERT-Large来初始化。

上下文增强的schema编码器:

该模块根据表格每列的tokens的编码来得到相应列的表示hCi,利用attention。将每个列名对应的多个token输出的向量聚合并且在混入[CTX] token中的信息。

输出层

采用与之前同样的做法,最终输出时将任务分解为6个子任务,每个均采用更简单的结构,采用LayerNorm,输入为schema的表示hCi和上下文表示hCTX。

结果

通过这些改进,X-SQL将性能表现提升至90%以上,超过了SQLOVA。

image.png

总结

本文介绍了两个借助预训练语言模型BERT(MT-DNN)来表示schem和Question之间上下文关系表示的方法,通过预训练语言模型强大的表示能力,模型第一次在数据集上的表现超越了人类。足以见证当今NLP技术发展之迅速。

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

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

相关文章

头部首发优志愿头部u_sign生成与TLS指纹处理! + 数据可视化技术讲解【Python爬虫】

目录 针对大学名称 大学排名, 综合指数,学校情况等数据进行爬取 找对应得数据包 请求发现数据有加密 发现加密参数 搜索加密参数&#xff0c;好进行分析 分析过程 数据可视化 针对大学名称 大学排名, 综合指数,学校情况等数据进行爬取 首先进行鼠标右键&#xff0c;进行…

制作PPT找了一个校徽是方形的,如何裁剪为圆形的。

问题描述&#xff1a;制作PPT找了一个校徽是方形的&#xff0c;如何裁剪为圆形的。 问题解决&#xff1a;使用一个在线圆形裁剪软件即可。 网址为&#xff1a; https://crop-circle.imageonline.co/cn/#google_vignette

计算机组成原理综合2

21、和外存储器相比&#xff0c;内存储器的特点是________。C A. 容量大、速度快、成本低 B. 容量大、速度慢、成本高 C. 容量小、速度快、成本高 D. 容量小、速度快、成本低 22、某计算机字长16位&#xff0c;存储器容量64KB&#xff0c;若按字编址&#xf…

网络基础(十二):ACL与NAT

目录 一、ACL 1、ACL的概述 2、ACL的分类 3、ACL的应用 4、ACL的组成和基本原理 ​编辑 5、ACL的配置 5.1配置基本ACL 5.2配置高级ACL 二、NAT 1、NAT的概述 2、NAT的分类 3、NAT的工作原理 4、静态NAT的配置 5、动态NAT的配置 6、NAPT&#xff08;端口映射&am…

01AVue入门(持续学习中)

1.使用AVue开发简单的前端页面直接简单到起飞,他是Element PlusVueVite开发的,不需要向元素的前端代码一样一个组件要传很多参数,他可以使用Json文本来控制我们要传入的数据结构来决定显示什么 //我使用的比较新,我们也可以使用cdn直接使用script标签直接引入 2.开发中遇到的坑…

期货平仓日历(期货平仓日期汇总)

什么是期货平仓日历&#xff1f; 期货是一种高风险高收益的投资品种。而期货交易不同于股票等其他投资品种的交易&#xff0c;期货交易需要在一定时间内才能买卖。而期货平仓日历就是指期货交易中规定的所有合约的平仓日期汇总。 常见期货平仓日期和时间&#xff1f; 不同的…

KylinV10 安装 MySQL 教程(可防踩雷)

KylinV10 安装 MySQL 教程&#xff08;可防踩雷&#xff09; 1、直接用 apt 快捷安装 MySQL $ sudo apt-get update #更新软件源 $ sudo apt-get install mysql-server #安装mysql然后你会发现&#xff0c;KylinV10 安装畅通无阻&#xff0c;并没有设置密码的场景&#xff0c…

Vue: node-sass 无法为当前环境找到绑定, Windows64-bit, 重新安装node-sass失败

参照两位大神的文章总结: 参考1: 解决Node Sass could not find a binding for your current environment: Windows 64-bit with Node.js 14.x-CSDN博客 参考2: 前端开发环境搭建踩坑笔记——npm install node-sass安装失败的解决方案-CSDN博客 总结: 管理员运行 先卸载n…

测试自动化平台 | 测试开发工程师的进阶之路

一、测试工程师的现状 很多测试小伙伴在工作中有时会比较迷茫&#xff0c;不知该怎样突破瓶颈&#xff0c;更好的发展。 那么测试人员究竟该如何打破瓶颈继续向上提升呢&#xff1f;如果你苦于不知所措&#xff0c;又满怀斗志向上的话&#xff0c;不妨一起聊聊。测试职业发展…

Compose 组合项 - 滑动列表 LazyColumn、LazyRow

一、概念 可滚动&#xff0c;类似RecyclerView&#xff08; Column、Row 用 Modifier 设置滚动是相当于ScrollView&#xff09;。 从 Navigation 返回后丢失状态&#xff08;跳到头部&#xff09; &#xff1a;将 LazyListState 提升到 Screen 级别&#xff0c;不用放到 ViewMo…

【Axure RP9】实现登入效验及实现左侧菜单栏跳转各页面

目录 一 效验简介 1.1 校验好处 1.2 应用场景 二 登入校验 2.1 效果 2.2 实现流程 三 左边菜单栏左侧菜单栏跳转各页面 3.1 效果 3.2 实现图 一 效验简介 1.1 校验好处 提高安全性&#xff1a; 在传统的用户名和密码登录的基础上&#xff0c;引入了另一种或多种验证…

MyBatis-Plus是什么?能干嘛?

MyBatis-Plus是一个基于MyBatis的增强工具&#xff0c;旨在简化开发、提高效率。它提供了通用的mapper和service&#xff0c;可以在不编写任何SQL语句的情况下&#xff0c;快速实现对单表的CRUD、批量、逻辑删除、分页等操作。 MyBatis-Plus的主要特性包括&#xff1a; 无侵入…

【PostgreSQL内核学习(十八)—— 存储管理(存储管理的体系结构)】

存储管理 概述存储管理器的体系结构存储管理器的主要任务读写元组过程 声明&#xff1a;本文的部分内容参考了他人的文章。在编写过程中&#xff0c;我们尊重他人的知识产权和学术成果&#xff0c;力求遵循合理使用原则&#xff0c;并在适用的情况下注明引用来源。 本文主要参考…

最新鸿蒙HarmonyOS 使用Progress、Toggle开发一个接单界面

Progress 进度条组件&#xff0c;用于显示内容加载或操作处理等进度。 接口 Progress(options: {value: number, total?: number, type?: ProgressType}) Toggle组件提供勾选框样式、状态按钮样式及开关样式。 接口 Toggle(options: { type: ToggleType, isOn?: boolean …

SpringBoot actuator应用监控

文章目录 引入依赖端点(Endpoints)端点种类端点开启配置暴露端点手动暴露端点 端点保护引入spring security依赖配置security 端点响应缓存访问端点路径修改CORS跨域支持健康信息(/actuator/health)自定义healthInfo 应用信息(/actuator/info) 监控信息可视化引入依赖配置查看配…

【LeetCode刷题】--245.最短单词距离III

245.最短单词距离III class Solution {public int shortestWordDistance(String[] wordsDict, String word1, String word2) {int len wordsDict.length;int ans len;if(word1.equals(word2)){int prev -1;for(int i 0;i<len;i){String word wordsDict[i];if(word.equa…

Unity中Shader测试常用的UGUI功能简介

文章目录 前言一、锚点1、锚点快捷修改位置2、使用Anchor Presets快捷修改3、Anchor Presets界面按下 Shift 可以快捷修改锚点和中心点位置4、Anchor Presets界面按下 Alt 可以快捷修改锚点位置、UI对象位置 和 长宽大小 二、Canvas画布1、UGUI中 Transform 变成了 Rect Transf…

One Wire协议解析

引言 One Wire是一种串行扩展总线技术&#xff0c;由DALLAS公司推出。它采用一根信号线进行通信&#xff0c;既传输时钟信号又传输数据&#xff0c;而且能够进行双向通信。由于其节省I/O口线、资源结构简单、成本低廉、便于总线扩展和维护等诸多优点&#xff0c;One Wire在许多…

go语言指针变量定义及说明

go语言指针主要需要记住两个特殊符号&#xff0c; 一个是 & 用来获取变量对应的内存地址 另一个是 * 用来获取指针对应的变量值 下面是个最简单的go语言指针说明 package mainimport "fmt"//指针为内存地址func main() {var a string "指针对应的变量&…

2023数字化发展推动家庭教育走向科学评价

近年来,随着人工智能、大数据、区块链等新一代数字技术的教育应用,在实践探索中形成了无感式数据采集、智能化诊断分析、即时性精准反馈等新样态,为破解教育评价难题提供了新的可能。 过去,传统教育评价体系是学校以及家庭教育最核心的焦虑和压力来源之一。“唯分数论”以及“…