Text2SQL学习整理(三)SQLNet与TypeSQL模型

导语

上篇博客:Text2SQL学习整理(二):WikiSQL数据集介绍简要介绍了WikiSQL数据集的一些统计特性和数据集特点,同时简要概括了该数据集上一个baseline:seq2sql模型。本文将介绍seq2SQL模型后一个比较知名的模型SQLNet。

Sqlnet: Generating structured queries from natural language without reinforcement learning

SQLNet简介

SQLNet模型是紧随WIkiSQL数据集之后的一个比较知名的Baseline。由于WikiSQL数据集中的SQL比较简单,如下图所示为一个WIkiSQL中的示例,因而SQLNet将预测一个SQL语句转换为预测构成SQL语句的六部分任务分别解决。

image.png

如下图所示,SQLNet将WikiSQL中的SQL语句分为以下几个部分:包括SELECT后的聚合符、使用的column、WHERE子句后的column、操作符OP以及VALUE等。

image.png

SQLNet模型

SQLNet使用slot filling的思想,引入了一个sketch(即上图所示的模板),申明需要预测的所有slot。

在SQLNet中,一共有以下六个模块需要预测:

  • SELECT_COL(主句中填哪一个列名)
  • AGG(主句中使用哪一个聚合函数)
  • #COND(WHERE子句的条件数量)
  • COND_COL(某个WHERE子句的条件为哪个column)
  • OP(某个WHERE子句的条件使用哪个运算符,如><=)
  • COND_VAL(某个WHERE子句的条件值)

通过这样建模,Text2SQL任务转换为分别填充模板中的各个slot的任务。

在预测时,各个slot之间值的预测其实有依赖关系,比如预测WHERE子句时要预测的OP和VALUE其实高度依赖于WHERE子句中column的预测。因此,在预测时,SQLNet充分利用了依存关系图,预测某个slot的时只用与当前token预测相关的信息(模块)。

技巧

SQLNet中有两个重要的技巧:seq2set和column attention。其简要概况如下:

  • Seq2set:WHERE语句会包含有不同条件,多是并列关系,顺序不影响结果,问题转换为“预测WHERE语句中应该包含哪些columns”。
  • Column attention:对于特定column的预测,Question中不同部分起到的作用是不一样的,引入Attention机制来表示这种关联关系。即使用Question对每个column做一个attention。

结果

通过这些技巧的引入,SQLNet在该数据集上相比seq2sql取得了巨大提升,取得了当时的SOTA。

image.png

TypeSQL: Knowledge-based Type-Aware Neural Text-to-SQL Generation

TypeSQL简介

之前的两种模型完全忽略了各个column的数据类型,但数据类型其实是一个很重要的信息,比如在预测WHERE子句时,只有数值类型的column才可以比较大小,字符串类型的值则不行。基于以上想法,TypeSQL充分利用了question中每个单词的类型信息(比如某个单词为列名、整数值等),并取得了新的SOTA。

类型信息的获取和利用

TypeSQL模型中的类型信息是通过将question先分词再在Freebase、table的column name和Table content之中search得到的。

image.png

与SQL Net一样采用slot filling的思想,填充sketch的各个slot,并大幅度精简用到的BiLSTM(12->6)。 为了更好地建模文本中出现的罕见实体和数字,TypeSQL显式地赋予每个单词类型。

其类型识别过程如下:将问句分割n-gram (n取2到6),并搜索数据库表、列。对于匹配成功的部分赋值column类型赋予数字、日期四种类型:INTEGER、FLOAT、DATE、YEAR。对于命名实体,通过搜索FREEBASE,确定5种类型:PERSON,PLACE,COUNTREY,ORGANIZATION,SPORT。这五种类型包括了大部分实体类型。当可以访问数据库内容时,进一步将匹配到的实体标记为具体列名(而不只是column类型)。

模型架构

SQLNet为模版中的每一种成分(共6种)设定了单独的模型,而TypeSQL对此进行了改进,对于相似的成分,例如SELECT_COL 和COND_COL以及#COND(条件数),这些信息间有依赖关系,通过合并为单一模型,可以更好建模。TypeSQL使用3个独立模型来预测模版填充值:

  • MODEL_COL:SELECT_COL,#COND,COND_COL
  • MODEL_AGG:AGG
  • MODEL_OPVAL:OP, COND_VAL

结果

实验结果如下,可以看到,TypeSQL通过对类型信息的有效利用,提升了模型性能,取得了新的SOTA。

image.png

总结

SQLNet和TypeSQL是WikiSQL提出早期两个重要的baseline。SQLNet从WikiSQL数据集SQL的特点出发,将Text2SQL任务转变为了slot filling的分割部分任务,对后续的研究产生了很大影响;而TypeSQL则抓住前人的工作中对类型信息的忽略,引入类型信息取得了新的SOTA。这也启发我们在后续工作中,要善于总结问题的特点,总结和发掘前人的疏忽和不足之处进行创新。

本篇博客介绍了WIkiSQL提出早期的一些工作,那时像BERT之类的预训练模型还未广泛应用,下一篇博客将介绍几个使用预训练模型的方法。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

盲盒电商:万物皆可盲盒

随着社会的进步和消费观念的改变&#xff0c;盲盒已经成为了年轻人喜爱的消费方式之一。从玩具、文具到美妆、服饰&#xff0c;甚至是旅行、餐饮等领域&#xff0c;盲盒的形态和内容也在不断变化和丰富。今天&#xff0c;我们就来聊聊这个充满惊喜和未知的盲盒世界。 一、盲盒的…

JDK bug:ciObjectFactory::create_new_metadata:原因完全解析

文章目录 1、问题2.详细日志2.关键日志3.结论4.JDK&#xff1a;bug最终bug链接&#xff1a; 京东遇到过类似bug各位大佬如果有更详细的解答可以留言。 1、问题 服务不通&#xff0c;接口404&#xff0c;查看日志有一下截图&#xff0c;还有一个更详细的日志 2.详细日志 # #…

Missing artifact org.wltea.analyzer:ik-analyzer:jar:5.0

没有找到【org.wltea.analyzer】 找到了【org.wltea.ik-analyzer】 https://github.com/wks/ik-analyzer https://github.com/wks/ik-analyzer.git https://code.google.com/archive/p/ik-analyzer/downloads?page2 C:\Users\Administrator\Desktop\ik-analyzer-master>m…

java实现回文数算法

判断一个数是否为回文数可以使用以下算法&#xff1a; 将数字转化为字符串&#xff1b;初始化左右两个指针&#xff0c;分别指向字符串的首尾&#xff1b;循环比较左右指针指向的字符&#xff0c;如果相等则继续比较&#xff0c;直到左右指针相遇或者发现不相等的字符为止&…

《opencv实用探索·二十一》人脸识别

Haar级联分类器 在OpenCV中主要使用了两种特征&#xff08;即两种方法&#xff09;进行人脸检测&#xff0c;Haar特征和LBP特征。用的最多的是Haar特征人脸检测。 Haar级联分类器是一种用于目标检测的机器学习方法&#xff0c;它是一种基于机器学习的特征选择方法&#xff0c;…

【halcon深度学习】create_dl_model_detection

基本介绍 create_dl_model_detection 不是一个封装的库函数&#xff0c;是一个算子。用于创建用于目标检测或实例分割任务的深度学习模型。 输入参数&#xff1a; Backbone (input_control): 指定用作背骨网络的深度学习分类器&#xff0c;充当模型的基础。用户可以选择不同的…

python+pytest接口自动化之测试函数、测试类/测试方法的封装

前言 今天呢&#xff0c;笔者想和大家聊聊pythonpytest接口自动化中将代码进行封装&#xff0c;只有将测试代码进行封装&#xff0c;才能被测试框架识别执行。 例如单个接口的请求代码如下&#xff1a; import requestsheaders {"user-agent": "Mozilla/5.0…

国标28181平台只能连接视频监控吗?

在一些视频监控项目中&#xff0c;国标28181平台成为了必不可少的工具。这个平台的主要作用在于将分布在不同区域的视频监控录像机、摄像头等设备进行联网管理&#xff0c;同时还能将视频监控连接到上一级的国标监控平台。 可以说&#xff0c;国标监控平台是一个非常重要的承上…

【QT】解决QTableView修改合并单元格内容无法修改到合并范围内的单元格

问题:修改合并单元格的内容 修改合并单元格的内容时,希望直接修改到合并范围内的单元格,Qt没有实现这个功能,需要自己写出 Delegate来实现 方案:Delegate class EditDelegate : public QStyledItemDelegate {public:EditDelegate(QTableView *view): tableView(view){}pu…

【Spring Security】让你的项目更加安全的框架

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是Java方文山&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的专栏《MyBatis-Plus》。&#x1f3af;&#x1f3af; &am…

【halcon深度学习之那些封装好的库函数】determine_dl_model_detection_param

determine_dl_model_detection_param 目标检测的数据准备过程中的有一个库函数determine_dl_model_detection_param “determine_dl_model_detection_param” 直译为 “确定深度学习模型检测参数”。 这个过程会自动针对给定数据集估算模型的某些高级参数&#xff0c;强烈建议…

kafka offset sasl加密连接

kafka-tool&#xff08;offset&#xff09; 进行SCRAM连接&#xff0c;直接上图 填写jaas的认证&#xff08;账密 引用包&#xff09;

【Java】网络编程-UDP字典服务器客户端简单代码编写

上文讲了UDP回响服务器客户端简单代码编写 本文将讲述UDP字典服务器客户端简单代码编写。所谓回显&#xff0c;就是指客户端向服务器发送一个报文&#xff0c;从服务器那里得到一条一模一样的回响报文 而我们的字典功能呢&#xff0c;则是实现了输入中文&#xff0c;得到对应…

力扣 面试经典150算法题

1合并两个有序数组88. 合并两个有序数组-CSDN博客简单23

Backend - Django 项目创建 运行

目录 一、配置环境 二、创建 Django 项目 &#xff08;一&#xff09;新建文件夹 &#xff08;二&#xff09;打开文件夹 &#xff08;三&#xff09;打开运行终端 &#xff08;四&#xff09;创建基础项目 &#xff08;五&#xff09;创建app 1. 安装Django &#xf…

分析某款go扫描器之四

一、概述 上文提到实现IP的探测存活以及tcp扫描的实现&#xff0c;这部分来分析实现本机网卡信息获取&#xff0c;以及维护一张mac地址表以及ip扫描端口状态表&#xff0c;同时实现syn扫描功能。 项目来源&#xff1a;https://github.com/XinRoom/go-portScan/blob/main/util…

PY32F072片内闪存读写 HAL库

我这个hal库底层是一次写一页&#xff0c;擦除也是以页为单位的。这个芯片太偏了&#xff0c;有点小恶心。 flash.c uint8_t flash_read(uint32_t add) {uint8_t temp;temp *(__IO uint8_t *)(add);return temp; }void flash_read_buf(uint32_t add, uint8_t *data, uint8_t…

【ICCV 2023】MPI-Flow:什么,只需要单张图片就能训练光流估计模型了?

ICCV 2023 | MPI-Flow&#xff1a;从单视角构建的多平面图像中学习光流 引言&#xff1a;主要贡献&#xff1a;Motivation&#xff1a;算法细节&#xff1a;Optical Flow Data GenerationIndependent Object MotionsDepth-Aware Inpainting 实验结果&#xff1a; 来源&#xff…

Python实现多元线性回归模型信用卡客户价值预测项目源码+数据+项目设计报告

多元线性回归——信用卡客户价值预测 一、背景 这里以信用卡客户的客户价值为例来解释客户价值预测的具体含义&#xff1a; 客户价值预测就是指预测客户在未来一段时间内能带来多少利润&#xff0c;其利润可能来自信用卡的年费、取现手续费、分期手续费、境外交易手续费等。分…

《C++ Primer》第13章 拷贝控制(三)

参考资料&#xff1a; 《C Primer》第5版《C Primer 习题集》第5版 13.5 动态内存管理类&#xff08;P464&#xff09; 某些类需要在运行时分配可变大小的内存空间。这种类通常可以用使用标准库容器来保存它们的数据。有些时候&#xff0c;我们希望类自己进行内存分配&#…