论文部分内容阅读
随着IT技术的不断发展,医疗、教育、金融等各个行业都在使用数据库进行数据存储。软件工程师在软件开发过程中会频繁地使用SQL语句用于数据的增删改查,业务人员也经常使用SQL语句进行报表与在线分析(OLAP)的定制,从数据库中获取所需信息。但是,SQL语言本质上是一种编程语言,使用者需要具有一定的数据库和SQL语言相关专业知识,并且需要在熟悉数据库模式的前提下,才能熟练进行SQL语句的编写。如何降低SQL语言的学习成本?如何更快更好地生成SQL查询语句?如何使用更自然的方式生成SQL语言?针对这些问题,本文研究面向最终用户的SQL查询语句的自动生成技术,提出了从交互式自然语言接口生成SQL查询语句(INL2SQL)和从自然语言生成SQL查询语句(NL2SQL)的技术与方法。本文主要的贡献和创新点包括:1)研究提出了一种基于映射的INL2SQL生成方法。本方法使用依赖解析树生成、解析树节点映射、解析树优化重构、查询树翻译模块对用户输入的查询进行意图的解析,并将其映射到SQL查询语句上。通过交互式对话器和用户接口模块对意图的解析与映射进行补充和重构。本文采用Classicmodels和MAS数据集进行了实验,实验表明,模型在有交互的情况下在简单、中等、困难的场景下的表现为100%、80%、35%和100%、93%、71%的准确率,有效解决了意图缺失和歧义等问题。2)研究提出了一种基于深度强化学习的NL2SQL生成方法。本方法采用由编码器和解码器构成,结合自注意力机制的神经网络模型结构,使用强化学习将SQL语句的执行结果用于神经网络模型的强化。它将网络模型的学习目标转换为策略的优化问题,并对给出了模型的状态和动作的定义。为了解决SQL查询语句中的过滤条件的顺序问题和隐式列名问题,本方法提出了非确定性预言和ANYCOL状态的解决办法。本文进行了一系列实验,实验表明,本文方法在WikiSQL数据集上表现一流,在ATIS数据集的验证集上的数据库执行准确率为89.2%,在Spider数据集的验证集和测试集上表现超过同类方法,其逻辑形式准确率和数据库执行准确率分别达到23.2%和24.1%。3)研究提出了一种基于多任务学习的NL2SQL生成方法。为了进一步提高NL2SQL生成的准确率以及解决中文自然语言生成SQL查询语句的问题,本文提出了一种基于多任务学习的NL2SQL生成的模型与方法。本方法使用TCR(Task-Content-Result)模板把多项学习任务进行统一,再使用由编码器和解码器构成的多任务学习网络模型进行同时学习,采用对偶协同注意力机制实现任务间的迁移学习。在实验过程中,本文采用了完全联合学习、反递进学习等不同的优化策略进行训练。本方法在WikiSQL数据集上的逻辑形式准确率和数据库执行准确率达到78.7%和86.1%的最高水平,验证了方法的有效性。在引入更多的任务进行学习时,对各项任务指标进行加和得到607.7的总分,表明了本方法能够有效解决中文自然语言生成SQL查询语句问题,同时还具有良好的通用性和可拓展性。