【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

相关文章

鸿蒙中@State的原理使用详解(HarmonyOS 5)

《鸿蒙中@State的原理使用详解(HarmonyOS5)》@State是HarmonyOSArkTS框架中用于管理组件状态的核心装饰器,其核心作用是实现数据驱动UI的响应式编程模式,本文给大家介绍... 目录一、@State在鸿蒙中是做什么的?二、@Spythontate的基本原理1. 依赖关系的收集2.

Python基础语法中defaultdict的使用小结

《Python基础语法中defaultdict的使用小结》Python的defaultdict是collections模块中提供的一种特殊的字典类型,它与普通的字典(dict)有着相似的功能,本文主要... 目录示例1示例2python的defaultdict是collections模块中提供的一种特殊的字

MySQL更新某个字段拼接固定字符串的实现

《MySQL更新某个字段拼接固定字符串的实现》在MySQL中,我们经常需要对数据库中的某个字段进行更新操作,本文就来介绍一下MySQL更新某个字段拼接固定字符串的实现,感兴趣的可以了解一下... 目录1. 查看字段当前值2. 更新字段拼接固定字符串3. 验证更新结果mysql更新某个字段拼接固定字符串 -

C++ Sort函数使用场景分析

《C++Sort函数使用场景分析》sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变,如果某些场景需要保持相同元素间的相对顺序,可使... 目录C++ Sort函数详解一、sort函数调用的两种方式二、sort函数使用场景三、sort函数排序

python连接本地SQL server详细图文教程

《python连接本地SQLserver详细图文教程》在数据分析领域,经常需要从数据库中获取数据进行分析和处理,下面:本文主要介绍python连接本地SQLserver的相关资料,文中通过代码... 目录一.设置本地账号1.新建用户2.开启双重验证3,开启TCP/IP本地服务二js.python连接实例1.

Spring Boot项目中结合MyBatis实现MySQL的自动主从切换功能

《SpringBoot项目中结合MyBatis实现MySQL的自动主从切换功能》:本文主要介绍SpringBoot项目中结合MyBatis实现MySQL的自动主从切换功能,本文分步骤给大家介绍的... 目录原理解析1. mysql主从复制(Master-Slave Replication)2. 读写分离3.

Java String字符串的常用使用方法

《JavaString字符串的常用使用方法》String是JDK提供的一个类,是引用类型,并不是基本的数据类型,String用于字符串操作,在之前学习c语言的时候,对于一些字符串,会初始化字符数组表... 目录一、什么是String二、如何定义一个String1. 用双引号定义2. 通过构造函数定义三、St

Pydantic中Optional 和Union类型的使用

《Pydantic中Optional和Union类型的使用》本文主要介绍了Pydantic中Optional和Union类型的使用,这两者在处理可选字段和多类型字段时尤为重要,文中通过示例代码介绍的... 目录简介Optional 类型Union 类型Optional 和 Union 的组合总结简介Pyd

Vue3使用router,params传参为空问题

《Vue3使用router,params传参为空问题》:本文主要介绍Vue3使用router,params传参为空问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录vue3使用China编程router,params传参为空1.使用query方式传参2.使用 Histo

使用Python自建轻量级的HTTP调试工具

《使用Python自建轻量级的HTTP调试工具》这篇文章主要为大家详细介绍了如何使用Python自建一个轻量级的HTTP调试工具,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下... 目录一、为什么需要自建工具二、核心功能设计三、技术选型四、分步实现五、进阶优化技巧六、使用示例七、性能对比八、扩展方向建