NL2SQL学习笔记

关于表格理解

需要模型编码表格的典型任务包括:

基于表格的语义解析(如文本转SQL),输出常常是能够在表格上执行的SQL语句

基于表格的自动问答,输出是从表格中提取或者生成的答案

基于表格的事实核查,输出是二分类标签(表示语言表述是否符合表格事实)

相关论文

  1. 谷歌MATE 2023  可以处理长表格

研究如何将transformer定制为半结构化数据。

我们提出了MATE架构,它允许每个注意头重新排序输入,以便通过多个观点(即列或行方向)遍历数据(图2)。这允许每个注意头拥有自己的数据依赖的局部性概念,从而能够以高效和上下文感知的方式使用稀疏注意。

Sparse self-attention heads on tables in MATE

are of two classes: Row heads attend to tokens inside

cells in the same row, as well as the query. Column

heads attend to tokens in the same column and in the

query. Query tokens attend to all other tokens.

因为它需要将表与与表中提到的实体相关的长段落联合起来处理,从而产生可能不适合标准Transformer模型的大型文档。

Each attention head reorders the tokens by either column or row

index and then applies a windowed attention mechanism

  1. TABERT: Pretraining for Joint Understanding of Textual and Tabular Data, ACL 2020.

有代码

TaBERT是一个建立在BERT上的,采用了对结构化表格进行线性化表征的Transformer-base的BERT模型。相较于大规模表格数据,作者提出了“content snapshot”,所谓“内容快照”,主要是采用算法针对表格中与输入文本最相关的表格子集进行表征的方法。后续作者又提出了“vertical attention”,与“content snapshot”结合来对表格的行进行表征。整个模型为了训练表格数据与自然语言文本的关联,TaBERT采用了平行的2600万个表格以及其对应的英文语料集合。这项技术有两个创新的点,第一个点是不但用上了列名,还用上了行名,但是这不是很正常的吗?文章说表格内容包含的信息比列名要多,然后这是他的motivation?另外文章还提到DB的表格行列很多,如果全部做encoding会造成资源的负担,所以只寻找几行做encoding。这也是motivation之一。

model使用了一些策略选择最相关的行,选择和utterance有n-gram重叠率最高的行。当k=1的时候,这说明只有一行是最相关的,但是很多情况下,输出的答案是和很多行相关的,如果只有一行相关那么可能不太准确,这个时候就找和最相关的这行最相关的其他行,这样选择出snapshot。

  1. GraPPa: Grammar-Augmented Pre-Training for Table Semantic Parsing, ICLR 2021.

也是基于text to sql 做的一个预训练模型

4.TAPAS: Weakly Supervised Table Parsing via Pre-training, ACL 2020.

有代码

TAPAS 是基于BERT encoder以及额外的表格位置embedding特征,模型加了两个分类层,分别选择表cell和聚合函数类型,这里将表拉平为词序列且进行tokenizer成token并且与问题拼接作为模型输入。

对于bert模型先进行大规模tableqa数据的pre-training,然后进行三个数据集(WIKITQ、SQA、WIKISQL)的微调。

5.STRUG: Structure-Grounded Pretraining for Text-to-SQL, NAACL 2021.

本文和之前的GRAPPA框架类似,都是使用数据增强的方式来提升Text-to-SQL任务的性能。相比于GRAPPA的人工模板合成数据,STRUG使用了Table-to-Text的大型人工标注数据集ToTTo的数据来提升schema linking的表现。本文主要贡献有两点:

  1. 借助Table-to-Text数据集ToTTo,提出了一种新的预训练框架STRUG;
  2. 整理了一个更难的数据集Spider-Realistic来检验模型在真实世界的泛化能力

6.TAPEX: Table Pre-training via Learning a Neural SQL Executor, ICLR 2022.

7.TableFormer: Robust Transformer Modeling for Table-Text Encoding, ACL 2022

Text to sql

相关模型

Text2SQL中几个比较经典的模型。整体来看,该方向模型分为Seq2Seq、Grammar-based和Sketch-based三类。Grammar-based模型会定义一个CFG,每一步模型会生成一个当前的语法单元,根据栈顶和当前语法单元来决定下一步规约的结果。

由于Grammar-based模型逻辑性强、实现简单,且生成的SQL框架一般都会满足SQL语法,因此目前大多主流模型都会默认将其当作Decodr,转而关注Encoder如何提取表格和表格、表格和问题之间的关系信息。

1.SyntaxSQLNet[6]

首次提出Grammar-based模型,思想源于[8],一个通用的逻辑语法(Text2SQL、Text2Py)生成框架。使用自回归结构,每一步生成语法单元时会参考历史信息。

2.GNN[9]

作者注意到,Encoder在处理表格和问题时,不仅要关注语义信息,还要关注表名和列名、不同表格由外键引入的关系信息。

因此,作者首先引入图神经网络(GNN)对表格进行编码,将表名、列名等看作节点,不同的关系(表名和列名、外键约束)看作不同类型的边,边权由训练得到。在Encoder编码时将边权引入,从而让模型更好地学习到关系信息。

上图中间为GNN,不同颜色代表不同种类的点/边,节点的权值会在右侧Decoder中经过计算,作为权重用于生成最终结果。

数据集

NL2SQL: Text2SQL 语义解析数据集、解决方案、paper资源整合项目 (gitee.com)

https://gitee.com/Samuelcoding/NL2SQL

HYBRIDQA,这是第一个通过表格和文本数据收集的混合问答数据集

[2004.07347] HybridQA: A Dataset of Multi-Hop Question Answering over Tabular and Textual Data (arxiv.org)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
NL2SQL(自然语言到SQL)是一种人工智能技术,旨在将自然语言查询转化为SQL查询语句。通过NL2SQL技术,我们可以将人类语言表达的查询需求转化为计算机可理解和执行的数据库操作。 NL2SQL技术通过深度学习和自然语言处理技术实现。它首先通过数据预处理,将自然语言查询和对应的SQL查询语句进行对齐,形成一个训练集。然后,利用深度学习模型,如神经网络和递归神经网络,对训练集进行训练和优化。最终得到一个模型,可以将新的自然语言查询转化为SQL语句。 NL2SQL的应用场景非常广泛。例如,在数据库管理和数据分析领域,NL2SQL技术可以帮助用户更方便地通过自然语言查询数据库,提高查询的效率和准确性。在实时大数据分析和决策支持系统中,NL2SQL可以用于自动生成复杂的SQL查询语句,帮助用户更快地获取需要的数据信息。此外,在智能客服和在线助手等领域,NL2SQL可以实现自然语言与数据库的交互,提供更友好和智能的服务。 然而,NL2SQL技术仍面临一些挑战。首先,自然语言具有复杂性和多样性,不同的语言表达方式可能对应不同的SQL查询语句,这增加了模型的训练难度。其次,NL2SQL技术需要大量的训练数据和计算资源,才能得到准确和鲁棒的结果。此外,NL2SQL技术还需要考虑语义理解、关联查询、复杂表达式和数据类型等问题,才能生成正确的SQL查询语句。 总的来说,NL2SQL技术通过将自然语言查询转化为SQL查询语句,实现了人与计算机之间的沟通和交互。它在数据库管理、数据分析、决策支持等领域具有广泛的应用前景,但仍需要进一步的研究和改进。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值