| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> Text to SQL综述 -> 正文阅读 |
|
[人工智能]Text to SQL综述 |
摘要 本综述旨在概述从自然语言生成SQL查询这一领域中提出的一些最新方法和模型。我们描述了各种结构的模型,如卷积神经网络、递归神经网络、指针网络、强化学习等。解释并简要概述了几个旨在解决SQL查询生成问题的数据集。最后,该领域中使用的评估指标主要是作为执行精度和逻辑形式精度的组合。 关键词 介绍 如图-1所示,用户提出自然语言问题:“what 's the total number of songs originally performed by anna nalick?”,输入到Text to sql解析器中,解析器输出SQL语句“𝑆𝐸𝐿𝐸𝐶𝑇 𝐶𝑂𝑈𝑁𝑇 𝑆𝑜𝑛𝑔 𝑐h𝑜𝑖𝑐𝑒 𝑊𝐻𝐸𝑅𝐸 𝑂𝑟𝑖𝑔𝑖𝑛𝑎𝑙 𝑎𝑟𝑡𝑖𝑠𝑡 = 𝑎𝑛𝑛𝑎 𝑐h𝑟𝑖𝑠𝑡𝑖𝑛𝑒 𝑛𝑎𝑙𝑖𝑐𝑘”,执行模块再在数据库中执行sql,返回执行结果:1。 图-1.Text to SQL问题示例[27] 已经有很多方法被提出来解决语义解析问题,例如:基于规则的[2]、无监督的[3]、有监督的[4]、基于响应的[5]和许多其他方法。然而,生成SQL比传统的语义解析更具挑战性。一个简短的自然语言问题可能需要连接多个表或包含多个过滤条件。这需要更多基于上下文的方法。 近年来,随着深度学习技术的发展,特别是cnn、rnn、transformer,本任务测试结果提升显著。已有不少研究试图通过将表格中的记录直接连到自然语言输入的语义表示层来生成结果,如[6]和[7]。但是,该方法无法扩展到大型表,并且在数据库结构有变更时,模型不能再复用。 最新的方法是仅使用自然语言输入、数据库结构和元数据来生成sql查询。人工标注了自然语言问题和对应数据库查询的数据集的发布,更加适合用深度学习或监督技术来解决此问题。同时,相比于原来的单表简单sql,现在发展成多表、复杂sql的问题,因此新的模型应该具备领域迁移能力。 本文的主要目的是对自然语言生成SQL的最新方法以及不同数据集和评估技术进行全面的解释和分析。下面内容:第二节描述该问题的不同数据集。第三节解释从文本生成SQL查询的不同方法。第四节概述了用于此问题的不同评估方法。最后,第五节对本文进行总结。 二、Text to SQL数据集 Text to SQL的数据集由人工标注了自然语言问题和对应的SQL查询。自然语言问题是限制在数据库数据所在领域的问题,其答案来自其数据库。即该问题是描述一个SQL查询。执行SQL查询可以从其数据库中获得问题的答案。 早期数据集只包含一个领域和一个数据库: ATIS [8], GeoQuery [9], Restaurants [8], [10], Academic [11], Scholar [12], Yelp [13], IMDB [13] and Advising[1] [14]。最新的数据集WikiSQL[2][15]和Spider[3][16]包含多个领域、更多的自然语言问题和更类型更全面的sql查询。数据集的大小对评估模型至关重要,语义解析的准确率与训练数据量之间存在Log的关系[Daya Guo, Yibo Sun, Duyu Tang, Nan Duan, Jian Yin, Hong Chi, James Cao, Peng Chen and Ming Zhou. Question Generation from SQL Queries Improves Neural Semantic Parsing. 2018. EMNLP.]。测试集中那些在训练集里未见过的复杂查询可以评估模型的泛化能力。[14]中的作者指出,传统数据集夸大了系统的通用性。WikiSQL虽然包含大量的自然语言问题和SQL查询,但这些SQL查询很简单,只集中在单个表上[16]。与WikiSQL相比,Spider数据集包含的问题和SQL查询数量较少,但更复杂,其SQL查询包含了不同的SQL子句,如表联接和嵌套查询[16]。 SParC[17]和CoSQL[18]是Spider数据集的扩展,该数据集是为上下文跨域语义分析和SQL系统多轮对话而创建的。这些新的数据集为该领域的研究带来了新挑战。
涉及概念
三、 方法 先介绍基于编码器-解码器框架的模型。 A.SQLNet
如图-3所示,该草图可以表示所有该数据集涉及的SQL查询。这些sql分为两种不同的标记类型:关键字(keywords)和要填充的槽(slots)。槽存在于SELECT子句或WHERE子句中,即图中长方形框。槽值分为以下几类:其中AGG为聚合函数,一般有五种:sum,max,min,std,count ;COLUMN是列名,OP有>,=,<等,VALUE是自然语言问题中的子字符串。 SQLNet的思路:采用插槽填充的思想,通过对自然语言问句的刨析来向SQL结构中的插槽填充各种值。这样有效地避免了seq2seq中where语句的顺序问题。 提出两种方法来完成插槽填充: Sequence-to-set(序列到集合)完成where子句预测: WHERE子句由三种槽组成:列(column)、操作符和值(value)。这些槽可以出现多次,就像在实际sql中,可以有多个过滤条件。在预测WHERE子句时,作者首先需要预测条件中包含哪些列,这些列是表格所有列名集合的一个子集,这种思想即为Sequence-to-set。即列名出现在自然语言查询中的概率,计算公式为:
E
c
o
l
E_{col}
Ecol? 和
E
Q
∣
c
o
l
E_{Q|col}
EQ∣col? 嵌入分别被双向LSTM[21]编码成隐状态(hidden states),两个双向LSTM之间不共享权重,这使得对某一列的选择是独立于其他列的。具有额外的列注意机制,能够记住在预测特定列名时有用的特定信息。计算(col | Q)后,下一步是预测WHERE子句中需要包括哪些列。更准确地说,作者使用网络预测列槽的数量,将其转化为+1分类问题,其中是要选择的列数的上限。Ecol情商|上校情商|上校PwherecolKNN |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/22 15:21:54- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |