自然言语到 SQL 语句,微软只用六个子义务,结果超越人类程度
作者头像
  • 科技流光
  • 2020-09-12 20:15:38 1

改写后的内容

当今时代,我们生活在一个大数据时代,大量的数据被存储在数据库中。日常生活中,我们经常与数据库互动,如网络购物、订票、订餐等。然而,这些操作通常受限于预设的SQL模板,缺乏灵活性。为了提高用户体验,人们开发了NL2SQL技术,使用户可以通过自然语言表达意图,进而将这些意图转换成SQL查询语句,从而缩短用户与数据库之间的距离。

在自然语言处理领域,自然语言到SQL语句的转换被称为语义解析,即将自然语言自动转化为机器可以理解和执行的SQL语句。然而,这一任务面临诸多挑战。SQL语句的语法要求严格,一旦某个部分出错,整个查询可能无法执行。因此,如何将自然语言自动转换为正确的SQL语句是一项艰巨的任务。

本文将介绍微软在此领域的最新进展,他们将自然语言到SQL语句的生成分解为六个子任务,通过相互约束来确保模型的输入空间尽可能满足SQL语言的要求。这项工作由Pengcheng He、Yi Mao、Kaushik Chakrabarti和Weizhu Chen四位研究人员完成,并在数据集WikiSQL上取得了最佳表现,超过了人类水平。

WikiSQL是Salesforce在2017年提出的一个大规模标注的NL2SQL数据集,包含24,241张表、80,645条自然语言问句及其对应的SQL语句。该数据集不涉及高级用法,问题所对应的正确表格已经给定,无需结合多张表格。图1展示了一个数据样例,包括一张表格、一条SQL语句、其对应的自然语言描述及其执行结果。

为了应对自然语言到SQL语句的解析问题,本文提出了一种新的网络架构X-SQL。X-SQL利用BERT风格的预训练模型(MT-DNN)来增强结构化表示,并结合类型信息来学习用于下游任务的新表示。由于SQL语法的一部分受限于结构化数据的形式,如聚合函数min只能与数字列一起使用,而不能与字符串类型列一起使用,因此需要对这些约束进行显式处理。

本文的模型包含三层结构:Sequence Encoder、Context Enhanced Schema Encoder和Output Layer。其中,输入层负责生成SQL语句,被划分为六个子任务:选择列、选择聚合、where子句的数量、where子句的列、where子句的操作符和where子句的值。这六个子任务相互关联,彼此制约。

第一层是Sequence Encoder,为每个表添加一个空列,将段编码转换为类型编码,学习四种类型:问题、分类列、数值列和空列。该模型的输入包括问题中的每个词和列名的编码。

第二层是Context Enhanced Schema Encoder,用于增强Sequence Encoder得到的表示。尽管Sequence Encoder的输入已经捕捉了一定的上下文信息,但这种方法的影响力有限,因为自我注意机制通常只关注某些区域。另一方面,全局上下文信息具有足够的多样性,可以用来补充Sequence Encoder中的表示。通过这种方式,可以识别哪些查询词与哪些列最相关,从而得到增强的语义表示。

第三层是Output Layer,其核心是生成SQL语句。它将SQL语句划分为六个子任务,每个子任务首先使用子网络结构生成融合了上下文和结构化信息的表示。每个子任务的计算都是独立进行的,以更好地将表示与自然语言查询的相关部分对齐。

六个子任务分别是: 1. 选择列:确定SQL语句查询的列。 2. 选择聚合:确定对选择列的操作(如min、max等)。 3. where子句的数量:确定where子句的数量。 4. where子句的列:确定where子句的列。 5. where子句的操作符:确定where子句的操作符(如>、<、=等)。 6. where子句的值:确定where子句的值。

实验结果显示,X-SQL模型在验证集和测试集上均优于之前的模型,尤其是在逻辑方式精度和执行精度方面。此外,对于每个子任务,X-SQL模型都有显著的改进,尤其是where子句的列和值部分。

总之,由于SQL语句的严格语法要求,本研究将任务拆分为多个子任务,并通过相互约束来优化模型学习。这种方法在WikiSQL数据集上取得了良好的效果。未来可以考虑将此方法应用于其他语言到代码的转换任务,如NL2Java或NL2Python,或者增加更多的子任务以进一步提升模型的约束力。尽管该模型取得了显著成果,但仍存在一些挑战,特别是在处理多表查询时。不过,这些研究结果表明,该模型的思想和效果值得借鉴和改进。

    本文来源:图灵汇
责任编辑: : 科技流光
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
微软个子只用语句言语义务超越程度人类自然
    下一篇