【Text2SQL 经典模型】TypeSQL

论文:TypeSQL: Knowledge-Based Type-Aware Neural Text-to-SQL Generation

⭐⭐⭐

Code: TypeSQL | GitHub

一、论文速读

本论文是在 SQLNet 网络上做的改进,其思路也是先预先构建一个 SQL sketch,然后再填充 slots 从而生成 SQL。

论文发现:在 question 中往往包含与特定数据相关的 rare entity 和 number,这对于在 SQL 查询中推断 column name 和 WHERE condition value 很重要,但这些 entity 和 number 缺乏准确的 embedding。为了解决这个问题,本工作为 question 的每个 word 分配了一个 type:知识图谱中的 entity、“COLUMN” 或者一个 number,如下图的最下面的 input 所示,为 question 的每个 word 都分配了一个 type:

具体来说,首先对 question 做分词,切分成长度为 2~6 的 n-grams,然后:

  • 使用 gram 检索数据库的 table schema,如果能检索到相应的 column name,那就将其 type 标注为 COLUMN
  • 为 number 和 date 标注为以下四个类别之一:INTEGERFLOARDAREYEAR
  • 为了识别命名实体,用 gram 作为 keyword 在 Freebase 上做检索五类实体:PERSONPLACECOUNTRYORGANIZATIONSPORT,并做相应的 type 标注,这五类实体已经可以覆盖了数据集中的绝大多数实体

由此,我们才可以看到上图中对 question 的 type 标注结果。

拓展来开的话,如果 database 的内容也可以访问,那我们在做 type 标注时,还会将 gram 从 table schema、column content 和 column label 中做检索,并将 type 标注为具体的 column name。比如上图中,question 中的 mort drucker 可以被标注为 artist,因为我们能在数据库中检索到这个 gram 并发现对应的 column name 为 artist

对 question 做完 type 标注后,在之后做编码时,就可以将 question 中的原 token 和对应的 type 一起做 embedding,并将两个 embedding 连接在一起做 encode 并进一步处理。

在之后填充 SQL sketch 做 slots 预测时,原来的 SQLNet 模型是为五种 slots 设计了五个 model 来分别训练和预测,而本文的 TypeSQL 将其中功能相似的 model 做了合并,最终只需要 3 个 model 来完成填充任务,架构上做了简化。具体公式可以参考原论文。

二、总结

这篇论文的工作主要是对 SQLNet 做的改进,改进主要有如下:

  • 借助于数据库的 table schema 检索和 knowledge graph 的检索,为 question 的每个 word 标注一个 type,从而提高 embedding 的效果
  • 当 database content 可用时,type 标注时还会进一步对 column content 做检索,并为其标注 column name,这样当用户的 question 中的所提到的列名或者条目不精确时,也可以通过这个步骤来对应到具体的数据库 column,从而提高效果,实现所谓的“内容敏感性”。
  • 改进了 SQLNet 的 slots 填充步骤,减少了所需要的 model 数量,架构上也做了简化

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

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

相关文章

2024 HGDD 荣耀开发者日·成都站

HGDD 荣耀开发者日成都站 活动时间:2024 年 5 月 27 日 活动地点:成都市双流区 LA CADIERE 蔚蓝湖滨城 期待与大家的见面!

【oracle004】oracle内置函数手册总结(已更新)

1.熟悉、梳理、总结下oracle相关知识体系。 2.日常研发过程中使用较少,随着时间的推移,很快就忘得一干二净,所以梳理总结下,以备日常使用参考 3.欢迎批评指正,跪谢一键三连! 总结源文件资源下载地址&#x…

Ubuntu 20/22 安装 Jenkins

1. 使用 apt 命令安装 Java Jenkins 作为一个 Java 应用程序,要求 Java 8 及更高版本,检查系统上是否安装了 Java。 sudo apt install -y openjdk-17-jre-headless安装完成后,再次验证 Java 是否已安装 java --version2. 通过官方存储库安…

APH-Archives of Public Health

文章目录 一、期刊简介二、征稿信息三、期刊表现四、投稿须知五、投稿咨询 一、期刊简介 Archives of Public Health是一份范围广泛的公共卫生杂志,致力于出版公共卫生领域所有可靠的科学。该杂志旨在更好地了解人群的健康。该杂志有助于公共卫生知识,加…

2024.5.20 学习记录

1、react 原理(jsx的本质、事件机制原理、setState和batch Update、组件渲染更新和diff算法、fiber) 2、代码随想录贪心刷题

ArcGIS10.X入门实战视频教程(arcgis入门到精通)

点击学习: ArcGIS10.X入门实战视频教程(GIS思维)https://edu.csdn.net/course/detail/4046?utm_sourceblog2edu 点击学习: ArcGIS10.X入门实战视频教程(GIS思维)https://edu.csdn.net/course/detail/404…

银河麒麟操作系统下使用QT连接TiDB数据库开发步骤

目标:实现项目软件+硬件都运行在国产化操作系统平台上。 方法:在虚拟机中安装麒麟系统V10Sp1+Qt5.14.2+MySql8.0+TiDB软件,编译MySql驱动,测试连接TiDB数据库项目。 步骤: 1、使用虚拟机软件VMWare安装银河麒麟操作系统。 2、在银河麒麟系统上安装QT5.14.2软件。 3、…

Web Server项目实战3-Web服务器简介及HTTP协议

Web Server(网页服务器) 一个 Web Server 就是一个服务器软件(程序),或者是运行这个服务器软件的硬件(计算机)。其主要功能是通过 HTTP 协议与客户端(通常是浏览器(Brow…

[Cocos Creator 3.5赛车游戏]第5节 为汽车节点挂载自定义脚本

在前面的章节中您已经学会了如何创建一个汽车节点,这一章我们将会学习如何通过挂载自定义节点的方式让小车变得可控制,所以通过这一章的学习后,您将实现一个效果:开始运行后,小车每隔一帧就延y轴向上移动一段距离。在这…

顶顶通呼叫中心中间件-自动外呼输入分机号(比如隐私号)(mod_cti基于FreeSWITCH)

顶顶通呼叫中心中间件-自动外呼输入分机号(比如隐私号)(mod_cti基于FreeSWITCH) 比如有些人的号码是这样的就需要用上自动外呼输入分机号了 号码1:182XXXX8111-1234 号码2:182XXXX8222 如果号码是这样的就根据以下步骤配置 注意使用这个需要:…

Redis学习篇2:Redis在IEDA中的应用

本文继上文开始讲述了Redis在IDEA中如何应用以及集成进入spring开发环境,以及如何使用Redis客户端。上一个文章:Redis学习篇1:初识Redishttps://blog.csdn.net/jialuosi/article/details/139057088 一、Redis在java中的客户端 二、SpringDat…

树莓派 Raspberry Pi M.2 HAT+ 现已发售!原理图流出!

​Raspberry Pi M.2 HAT 使您能够将 M.2 M-key 外设(如 NVMe 驱动器和人工智能加速器)连接到 Raspberry Pi 5。它能够提供与这些外设之间的快数据传输(高达 500 MB/s),现在就可以从树莓派的授权经销商网络购买&#xf…

c语言:strcmp

strcmp函数是用于比较两个字符串的库函数,其功能是根据ASCII值逐一对两个字符串进行比较。 语法:strcmp(str1, str2) 返回值: 如果str1等于str2,则返回0。 如果str1小于str2,则返回负数(具体值取决于C…

注意力机制篇 | MSFE:即插即用的多尺度滑窗注意力(附源码实现)

前言:Hello大家好,我是小哥谈。多尺度滑窗注意力(Multi-Scale Sliding Window Attention,MSFE)是一种用于处理图像的深度学习模型。它通过引入多尺度特征提取和滑窗注意力机制来提高图像识别的准确性。在MSFE中,模型采用多尺度卷积神经网络来提取图像的特征,然后使用滑窗…

DELPHI通过WebService进行数据交互

WebService是一种可以跨语言和平台的数据交互模式,使用非常广泛,与JSon数据格式结合,更是当前非常流行的一种模式,本章针对DELPHI通过WebService进行数据的交互做一个相对简单例子应用。 本文使用的DELPHI 版本为:DEL…

pdf文件怎么编辑?分享3个专业的pdf软件!

在数字化时代,PDF文件已成为我们工作、学习中的得力助手。然而,面对需要修改的PDF文件,许多人却感到无从下手。今天,就让我们一起探索如何轻松编辑PDF文件,并介绍几款实用的编辑软件,让你轻松应对各种PDF编…

OpenAI宫斗剧番外篇: “Ilya与Altman联手对抗微软大帝,扫除黑恶势力”,“余华”和“莫言”犀利点评

事情是这样的。 小编我是一个重度的智谱清言用户,最近智谱清言悄悄上线了一个“划词引用”功能后,我仿佛打开了新世界的大门。我甚至用这个小功能,玩出来了即将为你上映的《OpenAI宫斗剧番外篇》。 3.5研究测试:hujiaoai.cn 4研…

蓝牙Classic加密算法设计和实现,SAFER+,E0,E1,E2,E3(python)

概述 之前用python给大家实现了所有LE相关加密工具算法。bobwenstudy/BluetoothCryptographicToolbox: LE SMP加密算法设计和实现(python) (github.com),最近重温了下Classic加密,顺便将Classic所有加密算法给实现了一遍。 在蓝牙Classic Spec中&#…

5.14.3 UNETR:用于 3D 医学图像分割的 Transformers

具有收缩和扩展路径的全卷积神经网络 (FCNN) 在大多数医学图像分割应用中表现出了突出的作用。在 FCNN 中,编码器通过学习全局和局部特征以及上下文表示来发挥不可或缺的作用,这些特征和上下文表示可用于解码器的语义输出预测。 在FCNN中,收缩…

对列表进行统计和计算

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 Python的列表提供了内置的一些函数来实现统计、计算的功能。下面介绍几种常用的功能。 (1)获取指定元素出现的次数 使用列表…