【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 数量,架构上也做了简化

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

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

相关文章

Epson推出多摄像头接口芯片S2D13P04

目前,汽车电子的发展日新月异,汽车显示控制器也更多地采用芯片集成化设计的趋势伴随着目前ADAS系统的发展,大量的摄像头和雷达传感器应用到汽车电子中。传统的系统集成方案通常采用多通道电路来处理多摄像头信号输入的方案,但是车…

Oracle体系结构初探:数据库启动与停止

往期内容 参数管理 控制文件添加 启动 在启动Oracle数据库时,我们一般会使用如下命令: startup 虽然命令只有一个,但其中却是经历了3个阶段,从下面执行 startup 命令返回也可以看出来。 总结为3个阶段: nomount&…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-22讲 RTC 时钟设置

前言: 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM(MX6U)裸机篇”视频的学习笔记,在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

GPT‑4o普通账户也可以免费用

网址 https://chatgpt.com/ 试了一下,免费的确实显示GPT‑4o的模型,问了一下可以联网,不知道能不能通过插件出图 有兴趣的可以试试

测试环境KDE组件漏洞修复

yarn白名单方案 解决漏洞: 方案: 此方式主要使用iptables的功能,对yarn的resourceManager服务的8088端口进行访问ip限制,目的限制8088端口只允许集群内ip访问。 #分别在两台resourceManager节点执行以下步骤ssh kde-offline1 #安装iptables服务,并启动设置为开机自启 yum …

【Android】WorkManager(章二)

剩余的三部分 官方文档 案例 实现下载器,并监听下载进度 界面 定义Worker 在官方案例的前提下,进行完善 下载download 下载进度 授予权限 开始工作并监听 完整代码 MainActivity.java package com.test.downloadworkerapplication;import static…

键盘盲打是练出来的

键盘盲打是练出来的,那该如何练习呢?很简单,看着屏幕提示跟着练。屏幕上哪里有提示呢?请看我的截屏: 截屏下方有8个带字母的方块按钮,这个就是提示,也就是我们常说的8个基准键位,我…

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

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

通联支付API集成(适用于SpringBoot)

目标: 学习如何使用Java与通联支付API进行交互 实现一个简单的支付下单和查询订单状态的示例 所需材料: 通联支付API文档 官方文档https://aipboss.allinpay.com/know/devhelp/main.php?pid38#mid313 通联支付加签代码SybUtil package com.allin…

从GPT-4o和Google I/O看AI技术变革与未来趋势

引言 在科技界的激烈竞争中,OpenAI 和 Google 这两大巨头不断推出新技术,引领着人工智能的发展。最近,OpenAI 发布了 GPT-4o,恰逢 Google I/O 大会前一天,这一发布会似乎有意“截胡” Google I/O。今天,我…

python实现520表白图案

今天是520哦,作为程序员有必要通过自己的专业知识来向你的爱人表达下你的爱意。那么python中怎么实现绘制520表白图案呢?这里给出方法: 1、使用图形库(如turtle) 使用turtle模块,你可以绘制各种形状和图案…

go 爬虫之 colly 简单示例

1. 背景 colly 是 Go 实现的比较有名的一款爬虫框架,而且 Go 在高并发和分布式场景的优势也正是爬虫技术所需要的。它的主要特点是轻量、快速,设计非常优雅,并且分布式的支持也非常简单,易于扩展。 2. 官方文档 https://go-col…

大模型的实践应用24-LLaMA-Factory微调通义千问qwen1.5-1.8B模型的实例

大家好,我是微学AI,今天给大家介绍一下大模型的实践应用24-LLaMA-Factory微调通义千问qwen1.5-1.8B模型的实例, LLaMA-Factory是一个专门用于大语言模型微调的框架,它支持多种微调方法,如LoRA、QLoRA等,并提供了丰富的数据集和预训练模型,便于用户进行模型微调。通义千问…

15:00面试,15:08就出来了,问的问题有点变态。。。

从小厂出来,没想到在另一家公司又寄了。 到这家公司开始上班,加班是每天必不可少的,看在钱给的比较多的份上,就不太计较了。没想到8月一纸通知,所有人不准加班,加班费不仅没有了,薪资还要降40%…

mysql 慢查询

一、开启mysql自己的慢查询日志 1、查看慢日志参数设置 show VARIABLES like %query% 2、修改配置文件 vim /etc/my.cnf [mysqld] slow_query_log 1 #是否开启慢查询日志记录 long_query_time 1 #慢查询时间,单位秒 #log_outputtable,file #慢查询…

学习Thymeleaf时遇到的问题

使用idea创建web项目,启动服务器后无法访问页面 原因是tomcat 新版本引用包名改变 由javax变为jakarta 解决办法1 把项目的poe.xml文件由 改为 解决办法2 新建项目时选择新版本,但是新版本不支持thymeleaf

基础2 JAVA图形编程桌面:探索图形程序的抽象实现

嘿,大家好!我非常高兴又一次有机会与大家相聚,分享新的知识和经验。对于热爱编程和探索新技术的朋友们来说,今天的内容绝对不容错过。我为大家准备了一个详尽的视频教程:《基础2 JAVA 图形编程:主程序调用…

word-表格疑难杂症诊治

一、用表格进行排版图片、制作公文头 可以在插入图片时固定列宽 二、表格中的疑难杂症 问题一:表格超过页面,右侧文字看不见 解决:表格窗口-布局-自动调整-根据窗口自动调整表格 问题二:表格底部文字被遮挡 解决:布…

sheng的学习笔记-AI-EM算法

AI学习笔记目录:sheng的学习笔记-AI目录-CSDN博客 目录 基础知识 什么是EM算法 EM算法简介 数学知识 极大似然估计 问题描述 用数学知识解决现实问题 最大似然函数估计值的求解步骤 Jensen不等式 定义 EM算法详解 问题描述 EM算法推导流程 EM算法流程…

Java——内部类

内部类概念 当一个事物的内部,还有一个部分需要一个完整的结构进行描述,而这个内部的完整的结构又只为外部事物提供服 务,那么这个内部的完整结构最好使用内部类。在 Java 中,可以将一个类定义在另一个类或者一个方法的内部&…