[论文阅读] SADGA: Structure-Aware Dual Graph Aggregation Network for Text-to-SQL

news2024/11/26 9:49:26

“SADGA: Structure-Aware Dual Graph Aggregation Network for Text-to-SQL” 是一篇 text2sql 领域的论文,发布于 NeurIPS 2021。

原文链接:https://arxiv.org/abs/2111.00653
项目代码链接:https://github.com/DMIRLAB-Group/SADGA

总体概括文章内容就是 —— 文章使用图结构作为question和schema之间的统一编码方法,还设计了一种结构感知聚合方法去学习 question-graph 和 schema-graph 之间的映射。

文章提到:已有模型面临泛化弱的问题,导致的原因有以下两点:

  1. Question 和 schema 之间的结构差异
  2. 高度依赖预定义模型可能会导致不合适的链接或者是潜在链接无法识别

为了缓解以上提及到的两个问题,SADGA使用关系节点代替边关系,以及使用统一的图神经网络对 question 和 schema 统一编码,解决结构差异问题;SADGA 使用三种链接机制识别 question 和 schema 之间的链接 —— global graph linking、local graph linking 和 dual—graph aggregation mechanism

整个模型架构是encoder-decoder

  • encoder包含 SADGA 和 RAT 两个部分,其工作流程为:
    • ① 基于上下文结构和依赖结构构建 question-graph 以及基于数据库特定关系构建 schema-graph
    • ② 使用图神经网络分别对 question-graph 和 schema-graph 进行编码,其中,将边关系使用关系节点表示,降低编码难度
    • ③ structure aware aggregation通过两个阶段的链接来学习跨越对偶图的对齐,并将信息以基于门控的机制进行聚合,以获得对偶图中每个节点的统一表示
    • ④ RAT通过借助14种预定义的关系对问题单词和表/列进行编码来进一步统一SADGA学习到的表示。
  • decoder 与 RATSQL 相同,先将输入转化为 ACTION 序列,使用 LSTM 将 ACTION 序列转化为 AST,再将 AST 转化为 SQL 序列
    在这里插入图片描述

structure aware dual graph aggregation network 细节👇
在这里插入图片描述

  1. global graph linking —— 查询节点与另一个图的关键节点计算注意力
  2. local graph linking —— 计算对偶图上每个关键节点的邻居节点的注意力
  3. dual-graph aggregation mechanism —— 聚合global和 local graph link 的结果,以获得问题图和模式图中节点的统一结构化表示。第一个门控是将全局信息和局部信息进行融合,第二个门控系统是对新学习的学习和原始数据进行融合。

汇总起来就是下图:
在这里插入图片描述

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

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

相关文章

exev函数族

一.exev函数族 1.1功能 exec()函数族的主要功能是在当前进程中运行一个新的程序。使用这些函数可以实现以下功能: 程序替换(Program Replacement):调用exec()函数后,当前进程的代码和数据会被新程序的代码和数据替换…

【JDK 8-集合框架】5.4 allMatch 和 anyMatch 函数

一、allMatch 函数 二、anyMatch 函数 三、其它函数学习 四、实战 > 执行结果 一、allMatch 函数 检查是否 匹配所有元素,返回 true 二、anyMatch 函数 检查是否 至少匹配一个元素,返回 true 三、其它函数学习 看源码 入参,返回值…

【ElementUI】ElementUI Tooltip 根据内容判断是否显示、文字提示自定义样式

【ElementUI】ElementUI Tooltip 根据内容判断是否显示、文字提示自定义样式 封装组件自定义内容 <template><span v-if"[, null, undefined].indexOf(content) -1"><el-tooltip :content"content" effect"light" placement&q…

ENVI IDL:OMI-NO2产品均值计算与可视化(附Python代码)-年、季、月均值计算

目录 01 实验题目 02 我的IDL代码 03 实验给定IDL代码 04 Python代码实现 4.1 我的Python代码 4.2 实验给定Python代码 01 实验题目 计算/coarse_data/chapter_2/NO2/目录下所有OMI-NO2产品数据集ColumnAmountNO2TropCloudScreened的月均值、季均值、年均值&#xff0c;并…

风控基础——MOB、Vintage是什么?

▍Vintage背景 Vintag一词最初来源于葡萄酒业 。由于每年采摘的葡萄会受到日照、气温、降水等因素的影响&#xff0c;最终酿造的葡萄酒品质会存在差异。在窖藏一定年份后&#xff0c;葡萄酒的品质将趋于稳定&#xff0c;也就是品质成熟&#xff0c;这段年份数被称为成熟期。表…

广州华锐互动:利用VR复原文化遗址,沉浸式体验历史文物古迹的魅力

在过去的几十年里&#xff0c;科技发展飞速&#xff0c;为我们打开了无数新的视角和可能性。其中&#xff0c;虚拟现实&#xff08;Virtual Reality&#xff0c;简称VR&#xff09;技术的崭新应用&#xff0c;为我们提供了一种全新的、近乎身临其境的体验历史的方式。本文将重点…

全网最全Kettle教程-Kettle概述

文章目录 第一章 Kettle概述1.1 Kettle发展历程1.2 Kettle简介1.3 Kettle相关俗语1.4 Kettle设计与组成1.5 Kettle功能模块1.6 Kettle的执行Transformation&#xff08;转换&#xff09;1.7 Kettle商业和社区版区别1.8 数据集成与ETL1.9 ETL工具比较 第一章 Kettle概述 1.1 Ke…

HTTP DNS的工作模式

HttpDNS 其实就是&#xff0c;不走传统的 DNS 解析&#xff0c;而是自己搭建基于 HTTP 协议的 DNS 服务器集群&#xff0c;分布在多个地点和多个运营商。当客户端需要 DNS 解析的时候&#xff0c;直接通过 HTTP 协议进行请求这个服务器集群&#xff0c;得到就近的地址。 这就相…

如何构建一个高质量的论文框架

一个高质量的论文框架对于论文撰写非常重要。它可以为你的研究提供一个有序和清晰的结构&#xff0c;突出你的研究贡献&#xff0c;简化写作难度&#xff0c;方便修改和审阅&#xff0c;并提升你的专业形象。因此&#xff0c;建议在撰写论文之前充分考虑并构建一个合适的论文框…

最全测试管理岗面试题(上)

1、怎么改善团队低迷现状&#xff1f; 改善团队低迷的现状是一个重要的管理挑战。以下是一些可能有助于改善团队状态的方法&#xff1a; ① 深入了解问题&#xff1a;首先&#xff0c;需要了解低迷的原因。这可能涉及与团队成员的个人会谈&#xff0c;收集反馈&#xff0c;观…

LeetCode(力扣)63. 不同路径 IIPython

LeetCode63. 不同路径 II 题目链接代码 题目链接 https://leetcode.cn/problems/unique-paths-ii/ 代码 class Solution:def uniquePathsWithObstacles(self, obstacleGrid: List[List[int]]) -> int:m len(obstacleGrid)n len(obstacleGrid[0])if obstacleGrid[m - 1…

【算法】迷宫问题

文章目录 前言1.迷宫问题求解分步骤求解代码 2.迷宫最短路径求解代码 前言 迷宫问题本质就是一个图的遍历问题&#xff0c;从起点开始不断四个方向探索&#xff0c;直到走到出口&#xff0c;走的过程中我们借助栈记录走过路径的坐标。 栈记录坐标有两方面的作用&#xff0c;一…

Java返回日期格式问题

Java返回日期格式问题 解决方式&#xff1a; 方式一&#xff1a;在属性上加入注解&#xff0c;对日期进行格式化&#xff0c;每个都要加&#xff0c;比较繁琐。方式二&#xff1a;在WebMvcConfiguration中扩展Spring MVC的消息转换器&#xff0c;统一对日期类型进行格式化处理…

【第四阶段】kotlin语言的构造函数学习

1.主构造函数 package Kotlin.Stage4 //主构造函数&#xff0c;规范来说&#xff0c;都是增加_xxx的形式&#xff0c;临时的输入类型&#xff0c;不能直接用。需要接收下来&#xff0c;成为变量才能用。 class TestBase(_name:String,_sex:Char,_age:Int,_info:String){ //主…

浮点数运算精度的问题

每日鸡汤&#xff1a;每个你想要学习的瞬间都是未来的你像自己求救 经典面试题&#xff0c;浮点数运算精度的问题&#xff0c;以前一直没有遇到过&#xff0c;今天可算是遇到了&#xff0c;问题是这样的 有一个需求就是一个商品价值164元&#xff0c;然后有一个8折的优惠券&…

想要成为一名优秀的测试工程师,必须要遵守这8个测试原则

测试原则是一个测试人员时刻要铭记在心的&#xff0c;甚至要形成一种本能&#xff0c;指导测试工作。 原则1&#xff1a;测试找不出所有的Bug 软件的复杂性仅次于生命体&#xff0c;甚至现在很多软件都已经有了人工智能的属性。对于这样精妙的系统&#xff0c;一小点异常都有可…

CRM和数字营销什么关系?

crm系统是客户管理系统&#xff0c;主要是用来维护和管理客户关系&#xff1b;数字营销是一种营销策略&#xff0c;用来推广产品和服务。 接下来&#xff0c;将为大家带来crm系统和数字营销关系的深度解析&#xff0c;全文干货&#xff01; 一、crm是什么&#xff1f; crm系…

c++中关于Thread Affinity(线程亲和性)示例源码

win10下&#xff0c;可以在任务管理器里面设置某个进程的线程亲和性,如下图: 然后选择相关的cpu&#xff0c;如下图&#xff1a; 这么做可以使得相关的线程在某些密集型计算任务中只会运行在某些指定的cpu上&#xff0c;以便提高性能。 以下是windwos上c程序中应用Thread Affi…

接口自动化测试框架postman tests常用方法

postman常用方法集合&#xff1a; 1.设置环境变量 postman.setEnvironmentVariable("key", "value"); pm.environment.set("key", "value");//postman 5.0以上版本设置环境变量的方法 2.设置全局变量 postman.setGlobalVariable(&…

numpy 和 tensorflow 中的各种乘法(点乘和矩阵乘)

嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 &#x1f447; &#x1f447; &#x1f447; 更多精彩机密、教程&#xff0c;尽在下方&#xff0c;赶紧点击了解吧~ python源码、视频教程、插件安装教程、资料我都准备好了&#xff0c;直接在文末名片自取就可 点乘和矩阵乘…