公开/公告号CN114880347A
专利类型发明专利
公开/公告日2022-08-09
原文格式PDF
申请/专利权人 北京理工大学;
申请/专利号CN202210456388.0
申请日2022-04-27
分类号G06F16/2452(2019.01);G06F16/22(2019.01);G06F16/2455(2019.01);G06F40/30(2020.01);G06F40/253(2020.01);G06N5/02(2006.01);G06N20/00(2019.01);
代理机构北京正阳理工知识产权代理事务所(普通合伙) 11639;
代理人张利萍
地址 100081 北京市海淀区中关村南大街5号
入库时间 2023-06-19 16:19:08
法律状态公告日
法律状态信息
法律状态
2022-08-26
实质审查的生效 IPC(主分类):G06F16/2452 专利申请号:2022104563880 申请日:20220427
实质审查的生效
2022-08-09
公开
发明专利申请公布
技术领域
本发明涉及到一种基于深度学习的自然语言转化为SQL语句的方法,特别是使用知识蒸馏方法的获得轻量级的模型技术,属于数据库智能检索、问答系统等技术领域。
背景技术
在现实生活中,人们在工作生活过程中通常伴随着海量的数据的产生,例如档案管理、网络购物、银行业务等等。在这过程中产生大量结构化和半结构化的数据,一般通过使用关系型数据库来有效的存储管理并利用这些数据。结构化查询语言SQL(StructuredQuery Language)是一个通用的、功能性极强的数据库操作语言。因此查询关系型数据库中的数据的过程中通常需要通过使用SQL查询语言来进行交互。但使用SQL查询需要用户预先学习数据库系统和SQL语法的相关专业知识,对于非专业的人员来说,学习具有门槛和一定难度。随着数据库技术以及人工智能技术在日常工作生活中越来越广泛的应用,人们希望通过自然语言实现对数据库的智能交互的需求越来越迫切。NL2SQL(Natural Language toSQL)应运而生,顾名思义,它是将自然语言转化为可执行的结构化查询语句。其目的就是使那些没有学习过数据库知识的用户也能够自如地使用数据库。用户可以用自然语言的表达形式查询数据库获得自己想要的数据,而不必掌握相关的SQL语言的文法规则和数据库知识。与使用传统的SQL查询语言相比,这种方法更适合广大的普通用户,使用NL2SQL技术能够改善人机交互的容易程度,同时也能大大提升数据库系统的实用性和易用性。
近年来随着深度学习技术的发展,其在自然语言处理领域中得到了广泛应用,并通过实验证实了在NL2SQL任务中取得了较大的进展。模型的创新和改进大大提高了机器的理解能力。但目前深度学习的方法仍面临着一些挑战,一是深度学习方法的核心问题是它们需要大量的训练数据才能提供准确的翻译。编制和标注这些训练数据的成本非常昂贵,因为它通常需要人工用相应的SQL查询来注释自然语言示例。且标注需要有相关专业知识的人来标注,自然语言标注成本较高,这也造成了研究的数据集存在缺口,尤其是有关中文的NL2SQL的研究并不深入,缺少数据质量高的开源中文数据集。目前较多人利用的开源数据集仅有中文CSpider和追一科技在一次挑战赛发布的中文TableQA数据集。究其原因,主要还是数据集的前期收集工作需要花费大量专业人员手动的编辑和标注数据处理,费时费力。现阶段对NL2SQL任务的研究大部分基于英文的数据集,与之相比中文的数据集研究是近几年才开始,而且由于中文的语法表达较英文更加丰富和多样,针对中文的NL2SQL研究更为复杂。
另一方面,诸如BERT等预训练的语言模型,已经大大改善了许多自然语言处理任务的性能。然而,预训练的语言模型通常计算成本很高,所以很难在资源受限的设备上有效地执行它们。
X-SQL由微软Dynamics 365AI提出,同时也是当前WikiSQL数据集上表现最佳的解决方案,在逻辑形式准确度和执行精度准确度分别达到了86.0%和91.8%。该模型采用任务解耦的思路。模型主要为三层:编码器、上下文增强层和输出层,以下具体介绍各部分,第一部分是编码层,X-SQL使用了大型NLP预训练模型MT-DNN作为encoder层,作者的解释是因为MT-DNN模型在NLP的众多其它下游迁移任务上表现比BERT更好。在encoder层上X-SQL使用了全新的构造输入,其将自然语言查询语句和查询表格中所对应的所有列名以[SEP]这个token作为间隔进行拼接来共同作为模型的输入部分,并给每个表头序列前添加了[EMPTY]空列标识符作为列预测的embedding的对应位置,模型还将原本BERT中只有0和1两种情况的segment embedding拓展为type embedding,包含自然语言查询问题,数值,类别和空值4种类型。X-SQL将BERT中的[CLS]改名为[CTX],来强调输入构造上引用信息的增加。第二部分中间层作为上下文增强层将各列名所对应的输出向量整合进[CTX]得到一个列向量。设计该编码其的目的是为了在初始序列编码器的基础上,通过融入全局上下文的标识符[CTX]增强数据列的表示,通过利用注意力机制,获得融入上下文表示的数据列向量输出。第三部分的输出层将NL2SQL任务划分为6个子任务,分别是W-NUM代表条件个数预测,W-COL代表条件选择列预测,W-OP代表条件运算符预测,W-VAL代表条件值预测,S-COL代表查询目标列预测,S-AGG代表査询聚合操作预测。
He P提出的X-SQL算法的主要缺陷如下:
(1)算法仅针对英文WikiSQL数据集,只能解决简单的SQL语句生成,只选择单列的情况,条件子句中只能处理单一的AND或者OR的情况;
(2)X-SQL仅能有效处理英文的NL2SQL任务,对中文NL2SQL任务的准确率较低;
(3)X-SQL使用了大型NLP预训练模型MT-DNN作为编码器,训练时间长,模型计算消耗的资源大,推理速度不够快速,算法的时间复杂度和空间复杂度有待提升。
发明内容
本发明的技术解决问题是:克服现有技术的不足,提出一种基于深度学习的自然语言转化为SQL语句的方法,该方法通过知识蒸馏等方法,在不影响模型性能的前提下,提升模型速度,降低推理时延,最终形成一个轻量级的NL2SQL模型,该方法为一种高效的处理方法对数据库智能检索是至关重要的,针对现有的处理英文NL2SQL任务的X-SQL算法的不足之处,提出了一种基于深度学习的中英文NL2SQL算法,由于本发明使用知识蒸馏方法对大型预训练模型的模型进行压缩,所以本发明相较于现有技术,不仅模型的计算资源消耗更小,而且提升了模型的推理速度,改善模型的实用性。NL2SQL任务的目的是自动将自然语言表达的查询转化为机器可执行的SQL语句,将NL2SQL任务定义为在给定数据库或表的前提下,根据用户输入的自然语言表达的问题,生成相应的SQL语句。数学描述如下:
令Q表示用户的自然语言提问,T表示与问题相关的数据库或表,R表示其对应的SQL语句,NL2SQL语句的任务可以表述为:对于每一组独立的(Q,T,R),将(Q,T)映射到对应的R,NL2SQL任务的输入是自然语言查询语句Q和需要查询的数据库表T,输出是与自然语言查询语句对应的SQL语句R。
本发明的技术解决方案是:
一种基于深度学习的自然语言转化为SQL语句的方法,该方法的步骤包括:
第一步,根据待查询的数据表的名称获得数据表在查询数据库中的数据表所有列名;
第二步,将自然语言文本和第一步得到的数据表所有列名输入到NL2SQL模型中,得到自然语言文本对应的SQL查询语句;
第三步,根据第二步得到的SQL查询语句在查询数据库中进行查询,得到查询结果。
所述的第二步中,NL2SQL模型的获取方法为:
(1)基于英文和中文数据集将自然语言文本和数据表所有列名作为输入,使用BERT预训练模型进行编码,提取自然语言文本的语义信息和语法特征;
(2)使用类别标识符,在模型编码器的输入中对列的属性分为TEXT和REAL两类,将类别标识符通过模型编码器后对应的向量作为列的表示;
(3)使用全局信息编码标识符[CLS],通过注意力机制来对步骤(2)中列的表示进行增强;
(4)根据SQL语句固定的语法结构将步骤(1)得到的自然语言文本的语义信息和语法特征以及步骤(3)得到的增强后的列的表示分为八个子任务,对把八个子任务进行训练,得到基于BERT的NL2SQL模型,八个子任务分别为选择列数量预测子任务、选择列预测子任务、聚合函数预测子任务、条件列的数量和连接符预测子任务、条件列预测子任务、条件间连接符预测子任务、条件值预测子任务、条件列和条件值匹配子任务;
(5)将步骤(4)得到的基于BERT的NL2SQL模型作为教师模型训练学生模型;
(6)使用知识蒸馏方法将设定层数优选十二层的教师模型中的知识迁移到设定层数优选四层的学生模型中;
(7)结合真实的SQL标签,使用教师退火策略增强学生模型的知识蒸馏效果,得到一个轻量级的NL2SQL模型。
有益效果
(1)本发明提出的一种基于深度学习的自然语言转化为SQL语句的方法,该方法通过将自然语言文本以及对应的列名输入到NL2SQL模型中获得,得到对应的SQL查询语句,由于得到的SQL查询语句是数据库中所使用的语言,因此将得到的SQL查询语句在数据库中进行查询获得查询结果,该方法简单明了快捷;
(2)本发明提出的一种基于深度学习的自然语言转化为SQL语句的方法,该方法通过基于BERT预训练模型对英文和中文的自然语言进行编码训练得到NL2SQL模型,再使用知识蒸馏方法获得轻量级的NL2SQL模型,再根据提供的NL2SQL任务数据集训练模型,输入自然语言问题后即可推理出对应的SQL语句,且该方法能够同时处理中文和英文NL2SQL任务;
(3)本发明提出的一种基于深度学习的自然语言转化为SQL语句的方法,该方法通过将训练的任务分为八个子任务,并有针对性的进行训练,使得得到的基于BERT的NL2SQL模型所消耗的计算资源小,提高了计算速度和获取结果的效率及准确性;
(4)本发明提出的一种基于深度学习的自然语言转化为SQL语句的方法,该方法通过知识蒸馏等方法,在不影响模型性能的前提下,提升模型速度,降低推理时延,最终形成一个轻量级的NL2SQL模型;
(5)本发明提出的一种基于深度学习的自然语言转化为SQL语句的方法,该方法能够解决现有的处理英文NL2SQL任务的X-SQL算法的不足之处;
(6)本发明的提出的一种基于深度学习的自然语言转化为SQL语句的方法,该方法通过使用知识蒸馏方法对大型预训练模型的模型进行压缩。
具体实施方式
下面结合实施例对本发明做进一步说明。
一种基于深度学习的自然语言转化为SQL语句的方法,该方法的步骤包括:
第一步,根据待查询的数据表的名称获得数据表在查询数据库中的数据表所有列名;
第二步,将自然语言文本和第一步得到的数据表所有列名输入到NL2SQL模型中,得到自然语言文本对应的SQL查询语句;
第三步,根据第二步得到的SQL查询语句在查询数据库中进行查询,得到查询结果。
所述的第二步中,NL2SQL模型的获取方法为:
(1)基于英文和中文数据集将自然语言文本和数据表所有列名作为输入,使用BERT预训练模型进行编码,提取自然语言文本的语义信息和语法特征;
(2)使用类别标识符,在模型编码器的输入中对列的属性分为TEXT和REAL两类,将类别标识符通过模型编码器后对应的向量作为列的表示;
(3)使用全局信息编码标识符[CLS],通过注意力机制来对步骤(2)中列的表示进行增强;
(4)根据SQL语句固定的语法结构将步骤(1)得到的自然语言文本的语义信息和语法特征以及步骤(3)得到的增强后的列的表示分为八个子任务,对把八个子任务进行训练,得到基于BERT的NL2SQL模型,八个子任务分别为选择列数量预测子任务、选择列预测子任务、聚合函数预测子任务、条件列的数量和连接符预测子任务、条件列预测子任务、条件间连接符预测子任务、条件值预测子任务、条件列和条件值匹配子任务;
(5)将步骤(4)得到的基于BERT的NL2SQL模型作为教师模型训练学生模型;
(6)使用知识蒸馏方法将设定层数优选十二层的教师模型中的知识迁移到设定层数优选四层的学生模型中;
(7)结合真实的SQL标签,使用教师退火策略增强学生模型的知识蒸馏效果,得到一个轻量级的NL2SQL模型。
实施例
给定一个待查询的数据表T“主要城市成交信息一览表”和自然语言查询问题Q“近四周成交量小于3574套并且环比低于69.7%的城市有几个”,基于深度学习的中英NL2SQL模型算法的具体实施细节如下:
获取目标自然语言查询问题文本和数据表的列名,数据示例如下:“[CLS]近四周成交量小于3574套并且环比低于69.7%的城市有几个[SEP]城市[SEP]近4周周均成交[SEP]环比[SEP]”;
通过NL2SQL模型得到SQL语句如下:SELECT COUNT城市FROM TABLE WHERE环比<69.7AND近4周周均成交<3574;
得到的SQL查询语句在查询数据库中进行查询,得到查询结果如下:24。
机译: 用于从一种自然语言到另一种自然语言的基于网络的远程翻译的系统和方法
机译: 基于深度学习和自然语言处理的电影评论情感分析方法
机译: 用于基于深度学习的自然语言理解的系统方法电路和相关的计算机可执行代码