为了解决第二个挑战 , 基于对SQL执行结果能够反映SQL质量的观察 , 我们设计了一种基于执行的选择策略来选择最优的可执行的SQL查询 , 可以返回高质量的数据 。SQL 查询完成模块的更多细节将在第 5 节中讨论 。
4、SQL
本节介绍 SQL , 它生成 SQL的排名列表 , 如图 7 所示 。我们首先在 4.1 节中介绍配备数据库感知序列化策略的 SQL学习框架 , 然后在 4.2 节中开发问题感知对齐根据中问题 Q的语义进一步对 SQL 草图进行排序 。
4.1SQL
给定一个用户问题 Q和一个数据库模式 , 我们需要在 SQL 草图中生成三个部分:、FROM、 , 为了便于表示 , 这些部分称为子任务 。我们将此问题表述为序列到序列生成问题 , 并采用编码器-解码器预训练语言模型(PLM)作为主干 。我们使 - PLM 通过多任务学习来学习生成这些部分 , 如图 7 所示 。接下来 , 我们介绍这个 SQL组件的两个关键步骤:数据库感知序列化和参数学习 。
-aware :给定用户问题 Q和数据库模式 , 我们将它们与不同的指令结合起来 , 为每个子任务构建特定的输入 , 如下所示:
?
其中 INS 是每个子任务的指令 , S(·)是序列化函数 , 用于将结构化数据库模式序列化为文本序列 。图7展示了每个子任务对应的指令 , 延续了之前的工作 , 主要由任务描述组成 。例如 , 对于FROM生成子任务 , 对应的指令是 “ theof thisto the ” 。我们的主要直觉是 , 不同的指令可以使 PLM 理解不同的子任务 , 以实现所需的输出 。
对于数据库模式序列化 , 以前基于 PLM 的工作直接连接表/列名称 , 并要求模型输出这些名称以形成 SQL 查询 。但是 , PLM 有义务生成数据库中存在的有效表/列名称 。当测试环境发生变化时 , 以前的方法不能保证这一点 。示例2和图8-(1)提供了详细的解释 。
示例 2(直接表/列名称序列化) 。大多数现有作品使用数据集作为训练集 , 该数据集在用户问题中具有很高的列提及百分比 。我们观察到 , PLM 在训练期间经常直接从问题 Q中复制列/表名称 , 而不是从数据库中进行选择 。我们设计了一个实验来探讨数据分布变化对 PLM 的影响 。我们通过直接生成列/表名称来在数据集上训练 T5-3B 模型 。图8-(1)显示了微调后的T5-3B模型的测试结果 , 其中数据库中不存在 “” 列 。
为了解决这个问题 , 我们提出了一种简单而有效的数据库感知序列化策略 , 使 PLM 能够选择有效的数据库表或列 。具体来说 , 我们通过训练 PLM 通过索引引用数据库中的列/表来实现这一点 。具体来说 , 给定名为
的
, 其中包含 n个表
组成的关系型数据库D , 其中
表示 表
的第 j 列 。我们对不同部分使用括号和索引来序列化数据库 , 如下所示:
?
例如 , 在图 7 中 , 数据库“car_1”的序列化表示为“car_1: t0:(c0: , c1:maker, c2: model) t1:(c0: , c1: ) t2:(...)” 。此外 , 对于包含外键关系的表(例如 , 在图7中 , 表“”的列“id”在表“”中具有外键“”) , 我们以“t4.c0= t2.c0”形式附加它在序列化表“”之后 。
通过这种方式 , 我们强制 PLM 选择与用户问题最匹配的表/列索引 , 而不是直接从问题中复制它 。最后 , 索引会自动转换回原始列/表名称 。示例 3 和图 8-(2) 说明了我们的数据库感知序列化策略 。
- 在今日头条创作,阅读量1000有多少钱?我用真实的收益来回答你 阅读速度吉尼斯记录
- 免费降重软件,哪个论文降重软件用的人比较多?
- 最强chatgpt写论文,开源人人可用
- 「推荐阅读」曹自由,初雨:“变量与函数”教学设计与反思 教案中国之最反思
- 有什么适合高考议论文的不烂大街的素材? 历史之最作文素材高中生
- re.findall获取CSDN博文阅读点赞收藏和评论实时数据
- 林正英《僵尸至尊》里最酷的角色设定——鬼差 僵尸世界之最强鬼差阅读
- 王亮李美诗免费阅读
- 做善事有哪些方面,关于善举的议论文
- chatgpt赋能python:Python文本段落提取:优化文章阅读体验