【Text2SQL 论文】T5-SR:使用 T5 生成中间表示来得到 SQL

2024-05-31 12:36

本文主要是介绍【Text2SQL 论文】T5-SR:使用 T5 生成中间表示来得到 SQL,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

论文:T5-SR: A Unified Seq-to-Seq Decoding Strategy for Semantic Parsing

⭐⭐⭐

北大 & 中科大,arXiv:2306.08368

文章目录

    • 一、论文速读
    • 二、中间表示:SSQL
    • 三、Score Re-estimator
    • 四、总结

一、论文速读

本文设计了一个 NL 和 SQL 的中间表示 SSQL,然后使用 seq2seq 模型,输入 NL 和 table schema,输出 SSQL,然后再基于 SSQL 构建出 SQL。

论文提出了使用 seq2seq 来做 Text2SQL 的两个挑战:

  1. seq2seq 能否产生模式上正确的 SQL?论文发现,seq2seq 模型能够产生合法的 SQL skeleton,但细节上的 schematic info prediction 容易出错。因此,本文引入 SSQL 作为 seq2seq 的中间表示,SSQL 目标是保留 NL 的语义信息,但去除掉 user query 没有表达的 database-schema-related 信息。
  2. seq2seq 能否产生语义一致的 SQL?论文指出,由于 seq2seq 的单向解码的机制,产生整个语义一致的 sequences 是难以保证的,QA 场景也许有较大容错性,但这在生成 SQL 上会产生灾难性失败。此外,论文发现 seq2seq 模型在使用 beam search 时是能够预测出正确的 SQL,但可能会给他们较低的 scores。为此,这里引入一个 score re-estimator 来重排所有 candidate predictions

二、中间表示:SSQL

Semantic-SQL(SSQL)的设计目标是去除掉标准 SQL 表达式中不必要的 schema-related 信息。主要基于原来的 SQL 语法做了如下改动:

  • 通过消除掉 JOIN 子句来简化 FROM 语句。SSQL 只预测出需要哪些表,但不需要指明如何 JOIN 起来,后序会使用 Steiner Tree Algorithm 来将使用的 tables JOIN 起来,从而生成 SQL。
  • 将 TABLE 和 COLUMN 结合为一个 string。标准 SQL 是 column 名和 table 名分开的,这里将输入的 schema 中将 TABLE 和 COLUMN 连接在一起,那输出中也就自然在一起了。

下面是一个 SSQL 的示例以及 JOIN 子句的预测:

在这里插入图片描述

三、Score Re-estimator

由于 seq2seq 在使用 beam search 时,可能会给 correct prediction 赋予较低的 scores,因此这里引入额外的 score re-estimator 来重新排序所有的 candidate predictions。score re-estimator 就是根据 candidate SQL 和 NL query 之间的语义一致性来计算一个得分。

score re-estimator 的实现图示如下:

在这里插入图片描述

它通过 [CLS] 得到一个分数,并将其与 seq2seq score 进行加权组合来得到最终的 score:

在这里插入图片描述

seq2seq score 是在生成 token 时,根据 seq2seq 生成 token 的概率值来计算得到的,这个 score 可以看作是生成该序列的 log-likelihood,即模型认为这个序列是正确输出的相对可能性。在 beam-search 策略中,会选择概率最高的序列作为最终生成的序列。

训练 score re-estimator 的方法,就是期待它能给正确的 NL-SQL pair 以更高的概率分,在做监督训练时,论文还采用了一个 trick:使用 soft logits 作为监督信号,原论文解释如下:

这样能更加对 beam search 中排名最高的候选者保持怀疑的态度。

四、总结

本文模型是通过引入中间表示并使用 seq2seq(T5)来解决 Text2SQL 任务,同时论文中也指出了使用 seq2seq 在 Text2SQL 任务下的难点。

该工作还引入了 SSQL 这样的中间表示,它比 SemQL、RAT-SQL IR 等中间表示要简单不少。

这篇关于【Text2SQL 论文】T5-SR:使用 T5 生成中间表示来得到 SQL的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1017946

相关文章

Java中流式并行操作parallelStream的原理和使用方法

《Java中流式并行操作parallelStream的原理和使用方法》本文详细介绍了Java中的并行流(parallelStream)的原理、正确使用方法以及在实际业务中的应用案例,并指出在使用并行流... 目录Java中流式并行操作parallelStream0. 问题的产生1. 什么是parallelS

MySQL数据库双机热备的配置方法详解

《MySQL数据库双机热备的配置方法详解》在企业级应用中,数据库的高可用性和数据的安全性是至关重要的,MySQL作为最流行的开源关系型数据库管理系统之一,提供了多种方式来实现高可用性,其中双机热备(M... 目录1. 环境准备1.1 安装mysql1.2 配置MySQL1.2.1 主服务器配置1.2.2 从

Linux join命令的使用及说明

《Linuxjoin命令的使用及说明》`join`命令用于在Linux中按字段将两个文件进行连接,类似于SQL的JOIN,它需要两个文件按用于匹配的字段排序,并且第一个文件的换行符必须是LF,`jo... 目录一. 基本语法二. 数据准备三. 指定文件的连接key四.-a输出指定文件的所有行五.-o指定输出

Linux jq命令的使用解读

《Linuxjq命令的使用解读》jq是一个强大的命令行工具,用于处理JSON数据,它可以用来查看、过滤、修改、格式化JSON数据,通过使用各种选项和过滤器,可以实现复杂的JSON处理任务... 目录一. 简介二. 选项2.1.2.2-c2.3-r2.4-R三. 字段提取3.1 普通字段3.2 数组字段四.

Linux kill正在执行的后台任务 kill进程组使用详解

《Linuxkill正在执行的后台任务kill进程组使用详解》文章介绍了两个脚本的功能和区别,以及执行这些脚本时遇到的进程管理问题,通过查看进程树、使用`kill`命令和`lsof`命令,分析了子... 目录零. 用到的命令一. 待执行的脚本二. 执行含子进程的脚本,并kill2.1 进程查看2.2 遇到的

详解SpringBoot+Ehcache使用示例

《详解SpringBoot+Ehcache使用示例》本文介绍了SpringBoot中配置Ehcache、自定义get/set方式,并实际使用缓存的过程,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录摘要概念内存与磁盘持久化存储:配置灵活性:编码示例引入依赖:配置ehcache.XML文件:配置

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

k8s按需创建PV和使用PVC详解

《k8s按需创建PV和使用PVC详解》Kubernetes中,PV和PVC用于管理持久存储,StorageClass实现动态PV分配,PVC声明存储需求并绑定PV,通过kubectl验证状态,注意回收... 目录1.按需创建 PV(使用 StorageClass)创建 StorageClass2.创建 PV

Redis 基本数据类型和使用详解

《Redis基本数据类型和使用详解》String是Redis最基本的数据类型,一个键对应一个值,它的功能十分强大,可以存储字符串、整数、浮点数等多种数据格式,本文给大家介绍Redis基本数据类型和... 目录一、Redis 入门介绍二、Redis 的五大基本数据类型2.1 String 类型2.2 Hash

深入理解Mysql OnlineDDL的算法

《深入理解MysqlOnlineDDL的算法》本文主要介绍了讲解MysqlOnlineDDL的算法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小... 目录一、Online DDL 是什么?二、Online DDL 的三种主要算法2.1COPY(复制法)