CN109933602B - 一种自然语言与结构化查询语言的转换方法及装置 - Google Patents

一种自然语言与结构化查询语言的转换方法及装置 Download PDF

Info

Publication number
CN109933602B
CN109933602B CN201910152421.9A CN201910152421A CN109933602B CN 109933602 B CN109933602 B CN 109933602B CN 201910152421 A CN201910152421 A CN 201910152421A CN 109933602 B CN109933602 B CN 109933602B
Authority
CN
China
Prior art keywords
sql
data set
model
encoder
sql2que
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910152421.9A
Other languages
English (en)
Other versions
CN109933602A (zh
Inventor
朱斌
李宗鹏
周睿婷
黄浩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuhan University WHU
Original Assignee
Wuhan University WHU
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Wuhan University WHU filed Critical Wuhan University WHU
Priority to CN201910152421.9A priority Critical patent/CN109933602B/zh
Publication of CN109933602A publication Critical patent/CN109933602A/zh
Application granted granted Critical
Publication of CN109933602B publication Critical patent/CN109933602B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种自然语言与结构化查询语言的转换方法及装置,其中的方法首先将一个小规模的问题‑SQL对数据集中的SQL语句进行语法解析,变形为具有空间语义特征的广义树形编码和拓扑图编码;然后构建一个能够处理多种编码的机器翻译模型,来学习该数据集以及其变种;再根据已有的数据库表文件来生成语法上正确并且语义上有效的SQL,作为翻译模型的输入,得到自然语言形式的问题,达到了扩充数据集的目的;最后,使用流行的机器翻译模型学习扩充后的数据集,实现了性能的提升,且通过机器翻译模型可以实现自然语言与结构化查询语言的快速与准确转换。本发明可以实现提高转换效率和转换准确性的技术效果。

Description

一种自然语言与结构化查询语言的转换方法及装置
技术领域
本发明涉及然语言处理和数据库技术领域,具体涉及一种自然语言与结构化查询语言的转换方法及装置。
背景技术
在信息化时代的21世纪,生活中充斥着海量的信息,如果我们想要使用这些信息,必须先将其存储在数据库中。每当我们需要查看这些信息时,就通过结构化查询语言(Structured Query Language,以下简称SQL)去相应的数据库中查询。尽管SQL非常简洁、灵活,但是对于没有计算机专业背景的人来说,还是很难掌握并且熟练运用;尤其是在需要频繁地使用SQL语句的时候,复杂的数据库操作严重降低了他们的效率,他们亟需一种更加简单、快速的数据库交互方式。
当需要查询某种信息时,如果只需要用自然语言组织的问题来描述自己的需求,计算机系统能够快速地将问题转换为对应的SQL语句,进行数据库查询操作,即可得到所需的信息,这样可以大大降低用户查询信息的难度,提高了人机交互效率。现有技术中,实现该功能的主要方法就是通过神经网络学习问题和SQL数据对,得到一个收敛后的模型,再将用户提出的问题作为该模型的输入,再输出对应的SQL语句。
本申请发明人在实施本发明的过程中,发现现有技术的方法,至少存在如下技术问题:
现有技术中,公开的数据集较少,且包含的数据量也不多,使得学习得到的模型表现不佳。
由此可知,现有技术中存在转换效率不高和结果不够准确的技术问题。
发明内容
为了解决现有技术中存在的转换效率不高和结果不够准确的技术问题,本发明提供了一种自然语言与结构化查询语言的转换方法及装置。首先根据已有的少量数据生成更多的数据,在保证数据质量的前提下,将数据量扩充到原来的几倍甚至几十倍,然后使用神经网络学习扩充后的数据集,得到一个理论上性能更优的模型,从而提高转换的准确性。
本发明第一方面提供了一种自然语言与结构化查询语言的转换方法,预先给定数数据库表文件集DBF和问题-SQL对数据集QS,所述方法包括:
步骤S1:采用神经网络学习问题-SQL对数据集QS,将SQL作为输入,问题作为输出,进行训练后,得到一个收敛后的模型SQL2QUE,其中,SQL2QUE用以将SQL转换为对应的问题;
步骤S2:根据DBF中的表字段信息,并基于SQL语法自定义规则建立一个SQL语句生成模型SQL-GEN,再根据SQL语句是否有效,生成SQL数据集SD,其中,SQL数据集SD中包含判定结果有效的SQL语句;
步骤S3:将SQL数据集SD中的SQL语句作为模型SQL2QUE的输入,获得对应的问题,然后将获得对应的问题添加至SQL数据集SD中,再将SD数据集中的SQL和对应QD数据集中的问题进行匹配,得到生成的数据集AQS,并将数据集AQS与数据集AQS进行合并,获得新的数据集NQS;
步骤S4:采用神经网络学习新的数据集NQS,将问题作为输入,SQL作为输出,进行训练后,得到一个收敛后的模型QUE2SQL,其中,模型QUE2SQL用以将问题转换为对应的SQL;
步骤S5:将待转换的问题作为模型QUE2SQL的输入,转换获得对应的结构化查询语言SQL。
在一种实施方式中,步骤S1具体包括:
步骤S1.1:将QS中的所有SQL语句解析为对应的语法树,得到该SQL的广义深度优先树形编码,存储于数据集DFS-T中,并且针对每个SQL语法树,采用特征数组feature描述该语法树中每个结点的信息,用邻接矩阵adj描述该语法树的拓扑图结构,存储于数据集GRAPH中;
步骤S1.2:采用循环神经网络RNN实现第一编码器encoder1和第二编码器encoder2,采用图卷积网络GCN实现第三编码器encoder3,然后将QS数据集中的全部SQL语句、DFS-T数据集和GRAPH数据集分别作为第一编码器、第二编码器和第三编码器的输入,再将3编码器输出拼接后进行加权;
步骤S1.3:采用机器翻译模型Transformer作为解码器decoder,然后将加权后编码器部分的输出作为decoder的输入,在参照QS数据集中所有的问题语句的同时进行预测,并根据预测序列和目标序列之间的误差调整模型参数,获得模型SQL2QUE。
在一种实施方式中,在步骤S3之后,所述方法还包括:
采用步骤S3得到的新的数据集NQS继续训练步骤S1中的SQL2QUE模型,提升SQL2QUE模型的性能。
在一种实施方式中,步骤S4具体包括:
将NQS数据集中的问题作为输入,SQL作为输出,采用谷歌开源的神经机器翻译模型NMT作为基准模型,在解码器上添加注意力机制和指针生成器网络,进行预设轮训练后,得到一个收敛的模型QUE2SQL。
在一种实施方式中,步骤S2中根据SQL语句是否有效,生成SQL数据集SD,具体包括:
通过执行该条SQL语句,判断是否有效,
如果数据库没有提示出错且能查询到有效信息,则判定该条SQL语句有效,将该语句添加到数据集SD中,直至SD中的SQL语句的数量达到预设数量为止;否则,将该条SQL语句丢弃。
基于同样的发明构思,本发明第二方面提供了一种自然语言与结构化查询语言的转换装置,预先给定数数据库表文件集DBF和问题-SQL对数据集QS,所述装置包括:
SQL2QUE模型获得模块,用于采用神经网络学习问题-SQL对数据集QS,将SQL作为输入,问题作为输出,进行训练后,得到一个收敛后的模型SQL2QUE,其中,SQL2QUE用以将SQL转换为对应的问题;
SQL语句生成模型SQL-GEN建立模块,用于根据DBF中的表字段信息,并基于SQL语法自定义规则建立一个SQL语句生成模型SQL-GEN,再根据SQL语句是否有效,生成SQL数据集SD,其中,SQL数据集SD中包含判定结果有效的SQL语句;
新的数据集NQS生成模块,用于将SQL数据集SD中的SQL语句作为模型SQL2QUE的输入,获得对应的问题,然后将获得对应的问题添加至SQL数据集SD中,再将SD数据集中的SQL和对应QD数据集中的问题进行匹配,得到生成的数据集AQS,并将数据集AQS与数据集AQS进行合并,获得新的数据集NQS;
翻译模型获得模块,用于采用神经网络学习新的数据集NQS,将问题作为输入,SQL作为输出,进行训练后,得到一个收敛后的模型QUE2SQL,其中,模型QUE2SQL用以将问题转换为对应的SQL;
转换模块,用于将待转换的问题作为模型QUE2SQL的输入,转换获得对应的结构化查询语言SQL。
在一种实施方式中,SQL2QUE模型获得模块具体用于执行下述步骤:
步骤S1.1:将QS中的所有SQL语句解析为对应的语法树,得到该SQL的广义深度优先树形编码,存储于数据集DFS-T中,并且针对每个SQL语法树,采用特征数组feature描述该语法树中每个结点的信息,用邻接矩阵adj描述该语法树的拓扑图结构,存储于数据集GRAPH中;
步骤S1.2:采用循环神经网络RNN实现第一编码器encoder1和第二编码器encoder2,采用图卷积网络GCN实现第三编码器encoder3,然后将QS数据集中的全部SQL语句、DFS-T数据集和GRAPH数据集分别作为第一编码器、第二编码器和第三编码器的输入,再将3编码器输出拼接后进行加权;
步骤S1.3:采用机器翻译模型Transformer作为解码器decoder,然后将加权后编码器部分的输出作为decoder的输入,在参照QS数据集中所有的问题语句的同时进行预测,并根据预测序列和目标序列之间的误差调整模型参数,获得模型SQL2QUE。
在一种实施方式中,所述装置还包括训练模块,用于在获得新的数据集NQS之后:
采用得到的新的数据集NQS继续训练SQL2QUE模型,提升SQL2QUE模型的性能。
基于同样的发明构思,本发明第三方面提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被执行时实现第一方面所述的方法。
基于同样的发明构思,本发明第四方面提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所述的方法。
本申请实施例中的上述一个或多个技术方案,至少具有如下一种或多种技术效果:
本发明提供了一种自然语言与结构化查询语言的转换方法,能够利用已知数据量较少的问题-SQL对数据集,在保证数据质量的前提下,将其扩充为数据量更大的数据集(即新的数据集NQS),然后作为神经网络的语料进行学习,得到一个可以将问题和SQL进行互相转换的理论上性能更优的模型QUE2SQL,通过模型QUE2SQL可以实现自然语言到结构化查询语言的准确和快速转换,解决了现有技术中转换效率不高和结果不够准确的技术问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中自然语言与结构化查询语言的转换方法的流程图;
图2为图1所示方法步骤S1的流程示意图;
图3为图1所示方法步骤S2的流程示意图;
图4为图1所示方法步骤S3的流程示意图;
图5为图1所示方法步骤S4的流程示意图;
图6为图1所示方法步骤S5的流程示意图;
图7为本发明实施例中自然语言与结构化查询语言的转换装置的结构框图;
图8为本发明实施例中一种计算机可读存储介质的结构框图;
图9为本发明实施例中计算机设备的结构图。
具体实施方式
本发明的目的在于提供一种自然语言与结构化查询语言的转换方法及装置,用以改善存在的转换效率不高和结果不够准确的技术问题。
本发明的主要构思如下:将一个小规模的问题-SQL对数据集中的SQL(结构化查询语言,Structured Query Language,以下简称SQL)语句进行语法解析,变形为具有空间语义特征的广义树形编码和拓扑图编码;然后综合利用循环神经网络(Recurrent NeuralNetwork,简称RNN)、图卷积神经网络(Graph Convolutional Network,简称GCN)和谷歌开源的机器翻译模型Transformer构建一个能够处理多种编码的机器翻译模型,来学习该数据集以及其变种;再根据已有的数据库表文件来生成语法上正确并且语义上有效的SQL,作为翻译模型的输入,得到自然语言形式的问题,达到了扩充数据集的目的;最后,使用流行的机器翻译模型学习扩充后的数据集,理论上实现了性能的提升,并利用机器翻译模型(QUE2SQL)进行自然语言到结构化查询语言的转换。
本发明能够利用已知数据量较少的问题-SQL对数据集和对应的数据库表文件,在保证数据质量的前提下,将其扩充为数据量更大的数据集,然后作为神经网络的语料进行学习,得到一个可以快速地将自然语言和SQL进行互相转换的理论上性能更优的模型。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
本实施例提供了一种自然语言与结构化查询语言的转换方法,请参见图1,该方法包括:
步骤S1:采用神经网络学习问题-SQL对数据集QS,将SQL作为输入,问题作为输出,进行训练后,得到一个收敛后的模型SQL2QUE,其中,SQL2QUE用以将SQL转换为对应的问题。
具体来说,本发明实施例的转换方法中,记给定的数据中包含数据库表文件集DBF和问题-SQL对数据集QS;其中,QS数据集中的问题是用户提出的,而对应的SQL数据是系统针对该问题执行的数据库查询操作,二者都是和DBF内容相关的。
请参见图2,在具体的实施方式中,步骤S1具体包括:
步骤S1.1:将QS中的所有SQL语句解析为对应的语法树,得到该SQL的广义深度优先树形编码,存储于数据集DFS-T中,并且针对每个SQL语法树,采用特征数组feature描述该语法树中每个结点的信息,用邻接矩阵adj描述该语法树的拓扑图结构,存储于数据集GRAPH中;
步骤S1.2:采用循环神经网络RNN实现第一编码器encoder1和第二编码器encoder2,采用图卷积网络GCN实现第三编码器encoder3,然后将QS数据集中的全部SQL语句、DFS-T数据集和GRAPH数据集分别作为第一编码器、第二编码器和第三编码器的输入,再将3编码器输出拼接后进行加权;
步骤S1.3:采用机器翻译模型Transformer作为解码器decoder,然后将加权后编码器部分的输出作为decoder的输入,在参照QS数据集中所有的问题语句的同时进行预测,并根据预测序列和目标序列之间的误差调整模型参数,获得模型SQL2QUE。
具体来说,广义深度优先树形编码为Generalized depth-first tree coding,简称DFS-Tree。循环神经网络RNN为Recurrent Neural Network,图卷积网络GCN的全称为Graph Convolutional Network,采用谷歌开源的机器翻译模型Transformer作为解码器。举例来说,根据误差调整模型参数,然后进行训练,例如进行了k1=15轮训练后,模型收敛,即得到模型SQL2QUE。
步骤S2:根据DBF中的表字段信息,并基于SQL语法自定义规则建立一个SQL语句生成模型SQL-GEN,再根据SQL语句是否有效,生成SQL数据集SD,其中,SQL数据集SD中包含判定结果有效的SQL语句。
请参见图3,在具体的实施过程中,步骤S2中根据SQL语句是否有效,生成SQL数据集SD,具体包括:
通过执行该条SQL语句,判断是否有效,
如果数据库没有提示出错且能查询到有效信息,则判定该条SQL语句有效,将该语句添加到数据集SD中,直至SD中的SQL语句的数量达到预设数量为止;否则,将该条SQL语句丢弃。
具体来说,当数据库没有提示出错且能查询到有效信息时,则表明该条SQL语句在语法上是正确的,在语义上是有效的。
步骤S3:将SQL数据集SD中的SQL语句作为模型SQL2QUE的输入,获得对应的问题,然后将获得对应的问题添加至SQL数据集SD中,再将SD数据集中的SQL和对应QD数据集中的问题进行匹配,得到生成的数据集AQS,并将数据集AQS与数据集AQS进行合并,获得新的数据集NQS。
具体实施时,请参见图4,为步骤S3的具体实施流程,可以将数据集SD中的m条SQL语句作为模型SQL2QUE的输入,得到对应的问题,然后将其添加到数据集QD中。然后,将SD数据集中的SQL和对应QD数据集中的问题配成m对,得到生成的数据集AQS,并与原始数据集QS合并得到新的数据集NQS。其中,m可以根据实际情况进行设置。例如1000、10000等等。
在一种实施方式中,为了提升SQL2QUE模型的性能,在步骤S3之后,所述方法还包括:
采用步骤S3得到的新的数据集NQS继续训练步骤S1中的SQL2QUE模型,提升SQL2QUE模型的性能。
具体来说,通过新的数据集NQS继续训练步骤S1中的SQL2QUE模型,重复执行步骤1、2、3,从而可以逐步提高NQS的规模和质量。
步骤S4:采用神经网络学习新的数据集NQS,将问题作为输入,SQL作为输出,进行训练后,得到一个收敛后的模型QUE2SQL,其中,模型QUE2SQL用以将问题转换为对应的SQL。
具体来说,进行训练后,得到一个收敛后的模型QUE2SQL(Question to SQL)。该模型能将问题转换为对应的SQL,且性能较好。
在一种实施方式中,请参见图5,步骤S4具体包括:
将NQS数据集中的问题作为输入,SQL作为输出,采用谷歌开源的神经机器翻译模型NMT作为基准模型,在解码器上添加注意力机制和指针生成器网络,进行预设轮训练后,得到一个收敛的模型QUE2SQL。
具体来说,谷歌开源的神经机器翻译模型NMT为Neural Machine Translation,注意力机制即Attention Mechanism,指针生成器网络为Pointer-Generator Network,预设轮数可以根据实际情况进行设置,例如进行k2=10轮训练后,得到一个收敛的模型QUE2SQL。最终得到一个收敛的模型QUE2SQL。
步骤S5:将待转换的问题作为模型QUE2SQL的输入,转换获得对应的结构化查询语言SQL。
具体来说,请参见图6,为步骤S5的具体实施过程,待转换的问题由用户提出,输入模型QUE2SQL,从而得到转化结果。
总体来说,本发明研究了一种自然语言与结构化查询语言的快速转换方法,通过把从数据库表文件中生成的SQL语句进行语法解析,变形为具有空间语义特征的广义树形编码和拓扑图编码,并综合利用RNN、GCN和Transformer将多种编码翻译为对应的问题,在保证了数据质量的前提下,将一个小型问题-SQL对数据集扩充为一个大型数据集,最后通过流行的机器翻译模型进行学习,得到了能将问题转换为SQL的理论上性能更优的翻译模型。
本发明具有如下优点:本发明能够利用已知数据量较少的问题-SQL对数据集,在保证数据质量的前提下,将其扩充为数据量更大的数据集,然后作为神经网络的语料进行学习,得到一个可以将问题和SQL进行互相转换的理论上性能更优的模型QUE2SQL,进而可以利用模型QUE2SQL进行自然语言与结构化查询语言的快速与准确转换。
基于同一发明构思,本申请还提供了与实施例一中自然语言与结构化查询语言的转换方法对应的装置,详见实施例二。
实施例二
本实施例提供了一种自然语言与结构化查询语言的转换装置,预先给定数数据库表文件集DBF和问题-SQL对数据集QS,请参见图7,所述装置包括:
SQL2QUE模型获得模块201,用于采用神经网络学习问题-SQL对数据集QS,将SQL作为输入,问题作为输出,进行训练后,得到一个收敛后的模型SQL2QUE,其中,SQL2QUE用以将SQL转换为对应的问题;
SQL语句生成模型SQL-GEN建立模块202,用于根据DBF中的表字段信息,并基于SQL语法自定义规则建立一个SQL语句生成模型SQL-GEN,再根据SQL语句是否有效,生成SQL数据集SD,其中,SQL数据集SD中包含判定结果有效的SQL语句;
新的数据集NQS生成模块203,用于将SQL数据集SD中的SQL语句作为模型SQL2QUE的输入,获得对应的问题,然后将获得对应的问题添加至SQL数据集SD中,再将SD数据集中的SQL和对应QD数据集中的问题进行匹配,得到生成的数据集AQS,并将数据集AQS与数据集AQS进行合并,获得新的数据集NQS;
翻译模型获得模块204,用于采用神经网络学习新的数据集NQS,将问题作为输入,SQL作为输出,进行训练后,得到一个收敛后的模型QUE2SQL,其中,模型QUE2SQL用以将问题转换为对应的SQL;
转换模块205,用于将待转换的问题作为模型QUE2SQL的输入,转换获得对应的结构化查询语言SQL。
在一种实施方式中,SQL2QUE模型获得模块201具体用于执行下述步骤:
步骤S1.1:将QS中的所有SQL语句解析为对应的语法树,得到该SQL的广义深度优先树形编码,存储于数据集DFS-T中,并且针对每个SQL语法树,采用特征数组feature描述该语法树中每个结点的信息,用邻接矩阵adj描述该语法树的拓扑图结构,存储于数据集GRAPH中;
步骤S1.2:采用循环神经网络RNN实现第一编码器encoder1和第二编码器encoder2,采用图卷积网络GCN实现第三编码器encoder3,然后将QS数据集中的全部SQL语句、DFS-T数据集和GRAPH数据集分别作为第一编码器、第二编码器和第三编码器的输入,再将3编码器输出拼接后进行加权;
步骤S1.3:采用机器翻译模型Transformer作为解码器decoder,然后将加权后编码器部分的输出作为decoder的输入,在参照QS数据集中所有的问题语句的同时进行预测,并根据预测序列和目标序列之间的误差调整模型参数,获得模型SQL2QUE。
在一种实施方式中,所述装置还包括训练模块,用于在获得新的数据集NQS之后:
采用得到的新的数据集NQS继续训练SQL2QUE模型,提升SQL2QUE模型的性能。
在一种实施方式中,翻译模型获得模块204具体用于执行下述步骤:
将NQS数据集中的问题作为输入,SQL作为输出,采用谷歌开源的神经机器翻译模型NMT作为基准模型,在解码器上添加注意力机制和指针生成器网络,进行预设轮训练后,得到一个收敛的模型QUE2SQL。
在一种实施方式中,SQL语句生成模型SQL-GEN建立模块还用于:
通过执行该条SQL语句,判断是否有效,
如果数据库没有提示出错且能查询到有效信息,则判定该条SQL语句有效,将该语句添加到数据集SD中,直至SD中的SQL语句的数量达到预设数量为止;否则,将该条SQL语句丢弃。
由于本发明实施例二所介绍的装置,为实施本发明实施例一中自然语言与结构化查询语言的转换方法所采用的装置,故而基于本发明实施例一所介绍的方法,本领域所属人员能够了解该装置的具体结构及变形,故而在此不再赘述。凡是本发明实施例一的方法所采用的装置都属于本发明所欲保护的范围。
实施例三
请参见图8,基于同一发明构思,本申请还提供了一种计算机可读存储介质300,其上存储有计算机程序311,该程序被执行时实现如实施例一中所述的方法。
由于本发明实施例三所介绍的计算机可读存储介质为实施本发明实施例一中自然语言与结构化查询语言的转换方法所采用的计算机设备,故而基于本发明实施例一所介绍的方法,本领域所属人员能够了解该计算机可读存储介质的具体结构及变形,故而在此不再赘述。凡是本发明实施例一中方法所采用的计算机可读存储介质都属于本发明所欲保护的范围。
实施例四
基于同一发明构思,本申请还提供了一种计算机设备,请参见图9,包括存储401、处理器402及存储在存储器上并可在处理器上运行的计算机程序403,处理器402执行上述程序时实现实施例一中的方法。
由于本发明实施例四所介绍的计算机设备为实施本发明实施例一中自然语言与结构化查询语言的转换方法所采用的计算机设备,故而基于本发明实施例一所介绍的方法,本领域所属人员能够了解该计算机设备的具体结构及变形,故而在此不再赘述。凡是本发明实施例一中方法所采用的计算机设备都属于本发明所欲保护的范围。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (7)

1.一种自然语言与结构化查询语言的转换方法,其特征在于,预先给定数数据库表文件集DBF和问题-SQL对数据集QS,所述方法包括:
步骤S1:采用神经网络学习问题-SQL对数据集QS,将SQL作为输入,问题作为输出,进行训练后,得到一个收敛后的模型SQL2QUE,其中,SQL2QUE用以将SQL转换为对应的问题;
步骤S2:根据DBF中的表字段信息,并基于SQL语法自定义规则建立一个SQL语句生成模型SQL-GEN,再根据SQL语句是否有效,生成SQL数据集SD,其中,SQL数据集SD中包含判定结果有效的SQL语句;
步骤S3:将SQL数据集SD中的SQL语句作为模型SQL2QUE的输入,获得对应的问题,然后将获得对应的问题添加至SQL数据集SD中,再将SD数据集中的SQL和对应QD数据集中的问题进行匹配,得到生成的数据集AQS,并将数据集AQS与数据集AQS进行合并,获得新的数据集NQS;
步骤S4:采用神经网络学习新的数据集NQS,将问题作为输入,SQL作为输出,进行训练后,得到一个收敛后的模型QUE2SQL,其中,模型QUE2SQL用以将问题转换为对应的SQL;
步骤S5:将待转换的问题作为模型QUE2SQL的输入,转换获得对应的结构化查询语言SQL;
步骤S1具体包括:
步骤S1.1:将QS中的所有SQL语句解析为对应的语法树,得到该SQL的广义深度优先树形编码,存储于数据集DFS-T中,并且针对每个SQL语法树,采用特征数组feature描述该语法树中每个结点的信息,用邻接矩阵adj描述该语法树的拓扑图结构,存储于数据集GRAPH中;
步骤S1.2:采用循环神经网络RNN实现第一编码器encoder1和第二编码器encoder2,采用图卷积网络GCN实现第三编码器encoder3,然后将QS数据集中的全部SQL语句、DFS-T数据集和GRAPH数据集分别作为第一编码器、第二编码器和第三编码器的输入,再将3编码器输出拼接后进行加权;
步骤S1.3:采用机器翻译模型Transformer作为解码器decoder,然后将加权后编码器部分的输出作为decoder的输入,在参照QS数据集中所有的问题语句的同时进行预测,并根据预测序列和目标序列之间的误差调整模型参数,获得模型SQL2QUE;
步骤S2中根据SQL语句是否有效,生成SQL数据集SD,具体包括:
通过执行该条SQL语句,判断是否有效,
如果数据库没有提示出错且能查询到有效信息,则判定该条SQL语句有效,将该语句添加到数据集SD中,直至SD中的SQL语句的数量达到预设数量为止;否则,将该条SQL语句丢弃。
2.如权利要求1所述的方法,其特征在于,在步骤S3之后,所述方法还包括:
采用步骤S3得到的新的数据集NQS继续训练步骤S1中的SQL2QUE模型,提升SQL2QUE模型的性能。
3.如权利要求1所述的方法,其特征在于,步骤S4具体包括:
将NQS数据集中的问题作为输入,SQL作为输出,采用谷歌开源的神经机器翻译模型NMT作为基准模型,在解码器上添加注意力机制和指针生成器网络,进行预设轮训练后,得到一个收敛的模型QUE2SQL。
4.一种自然语言与结构化查询语言的转换装置,其特征在于,预先给定数数据库表文件集DBF和问题-SQL对数据集QS,所述装置包括:
SQL2QUE模型获得模块,用于采用神经网络学习问题-SQL对数据集QS,将SQL作为输入,问题作为输出,进行训练后,得到一个收敛后的模型SQL2QUE,其中,SQL2QUE用以将SQL转换为对应的问题;
SQL语句生成模型SQL-GEN建立模块,用于根据DBF中的表字段信息,并基于SQL语法自定义规则建立一个SQL语句生成模型SQL-GEN,再根据SQL语句是否有效,生成SQL数据集SD,其中,SQL数据集SD中包含判定结果有效的SQL语句;
新的数据集NQS生成模块,用于将SQL数据集SD中的SQL语句作为模型SQL2QUE的输入,获得对应的问题,然后将获得对应的问题添加至SQL数据集SD中,再将SD数据集中的SQL和对应QD数据集中的问题进行匹配,得到生成的数据集AQS,并将数据集AQS与数据集AQS进行合并,获得新的数据集NQS;
翻译模型获得模块,用于采用神经网络学习新的数据集NQS,将问题作为输入,SQL作为输出,进行训练后,得到一个收敛后的模型QUE2SQL,其中,模型QUE2SQL用以将问题转换为对应的SQL;
转换模块,用于将待转换的问题作为模型QUE2SQL的输入,转换获得对应的结构化查询语言SQL;
其中,SQL2QUE模型获得模块具体用于执行下述步骤:
步骤S1.1:将QS中的所有SQL语句解析为对应的语法树,得到该SQL的广义深度优先树形编码,存储于数据集DFS-T中,并且针对每个SQL语法树,采用特征数组feature描述该语法树中每个结点的信息,用邻接矩阵adj描述该语法树的拓扑图结构,存储于数据集GRAPH中;
步骤S1.2:采用循环神经网络RNN实现第一编码器encoder1和第二编码器encoder2,采用图卷积网络GCN实现第三编码器encoder3,然后将QS数据集中的全部SQL语句、DFS-T数据集和GRAPH数据集分别作为第一编码器、第二编码器和第三编码器的输入,再将3编码器输出拼接后进行加权;
步骤S1.3:采用机器翻译模型Transformer作为解码器decoder,然后将加权后编码器部分的输出作为decoder的输入,在参照QS数据集中所有的问题语句的同时进行预测,并根据预测序列和目标序列之间的误差调整模型参数,获得模型SQL2QUE;
其中,根据SQL语句是否有效,生成SQL数据集SD,具体包括:
通过执行该条SQL语句,判断是否有效,
如果数据库没有提示出错且能查询到有效信息,则判定该条SQL语句有效,将该语句添加到数据集SD中,直至SD中的SQL语句的数量达到预设数量为止;否则,将该条SQL语句丢弃。
5.如权利要求4所述的装置,其特征在于,所述装置还包括训练模块,用于在获得新的数据集NQS之后:
采用得到的新的数据集NQS继续训练SQL2QUE模型,提升SQL2QUE模型的性能。
6.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被执行时实现如权利要求1至3中任一项权利要求所述的方法。
7.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至3中任一项权利要求所述的方法。
CN201910152421.9A 2019-02-28 2019-02-28 一种自然语言与结构化查询语言的转换方法及装置 Active CN109933602B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910152421.9A CN109933602B (zh) 2019-02-28 2019-02-28 一种自然语言与结构化查询语言的转换方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910152421.9A CN109933602B (zh) 2019-02-28 2019-02-28 一种自然语言与结构化查询语言的转换方法及装置

Publications (2)

Publication Number Publication Date
CN109933602A CN109933602A (zh) 2019-06-25
CN109933602B true CN109933602B (zh) 2021-05-04

Family

ID=66986225

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910152421.9A Active CN109933602B (zh) 2019-02-28 2019-02-28 一种自然语言与结构化查询语言的转换方法及装置

Country Status (1)

Country Link
CN (1) CN109933602B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111651474B (zh) * 2020-06-02 2023-07-25 东云睿连(武汉)计算技术有限公司 一种自然语言至结构化查询语言的转换方法及系统
CN111625554B (zh) * 2020-07-30 2020-11-03 武大吉奥信息技术有限公司 一种基于深度学习语义理解的数据查询方法及装置
CN112507098B (zh) * 2020-12-18 2022-01-28 北京百度网讯科技有限公司 问题处理方法、装置、电子设备、存储介质及程序产品
CN112487135B (zh) * 2020-12-18 2022-07-15 思必驰科技股份有限公司 将文本转化为结构化查询语言的方法及装置
CN112487020B (zh) * 2020-12-18 2022-07-12 思必驰科技股份有限公司 用于SQL to text的图到自然语言语句的转换方法及系统
CN112988785B (zh) * 2021-05-10 2021-08-20 浙江大学 基于语言模型编码和多任务解码的sql转换方法及系统
CN115794857A (zh) * 2022-01-19 2023-03-14 支付宝(杭州)信息技术有限公司 查询请求的处理方法及装置
CN114637765A (zh) * 2022-04-26 2022-06-17 阿里巴巴达摩院(杭州)科技有限公司 基于表格数据的人机交互方法、装置及设备
US20230095352A1 (en) * 2022-05-16 2023-03-30 Beijing Baidu Netcom Science Technology Co., Ltd. Translation Method, Apparatus and Storage Medium

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2179373A2 (en) * 2007-07-13 2010-04-28 Intellprop Limited Telecommunications services apparatus and method
CN104881490A (zh) * 2015-06-10 2015-09-02 中科宇图天下科技有限公司 一种web表单数据存取方法和系统
US9703830B2 (en) * 2014-10-09 2017-07-11 International Business Machines Corporation Translation of a SPARQL query to a SQL query
CN107451153A (zh) * 2016-05-31 2017-12-08 北京京东尚科信息技术有限公司 输出结构化查询语句的方法和装置
CN107516041A (zh) * 2017-08-17 2017-12-26 北京安普诺信息技术有限公司 基于深度神经网络的WebShell检测方法及其系统
CN108108449A (zh) * 2017-12-27 2018-06-01 哈尔滨福满科技有限责任公司 一种面向医疗领域的基于多源异构数据问答系统及该系统的实现方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6625613B2 (en) * 2001-02-26 2003-09-23 Motorola, Inc. Automatic generation of SQL for frame completion
CN104657439B (zh) * 2015-01-30 2019-12-13 欧阳江 用于自然语言精准检索的结构化查询语句生成系统及方法
CN107688583A (zh) * 2016-08-05 2018-02-13 株式会社Ntt都科摩 创建用于自然语言处理装置的训练数据的方法和设备
CN107665228B (zh) * 2017-05-10 2019-12-20 平安科技(深圳)有限公司 一种关联信息查询方法、终端及设备
CN108829763B (zh) * 2018-05-28 2021-09-07 电子科技大学 一种基于深度神经网络的影评网站用户的属性预测方法
CN109299129A (zh) * 2018-09-05 2019-02-01 深圳壹账通智能科技有限公司 自然语言的数据查询方法、装置、计算机设备及存储介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2179373A2 (en) * 2007-07-13 2010-04-28 Intellprop Limited Telecommunications services apparatus and method
US9703830B2 (en) * 2014-10-09 2017-07-11 International Business Machines Corporation Translation of a SPARQL query to a SQL query
CN104881490A (zh) * 2015-06-10 2015-09-02 中科宇图天下科技有限公司 一种web表单数据存取方法和系统
CN107451153A (zh) * 2016-05-31 2017-12-08 北京京东尚科信息技术有限公司 输出结构化查询语句的方法和装置
CN107516041A (zh) * 2017-08-17 2017-12-26 北京安普诺信息技术有限公司 基于深度神经网络的WebShell检测方法及其系统
CN108108449A (zh) * 2017-12-27 2018-06-01 哈尔滨福满科技有限责任公司 一种面向医疗领域的基于多源异构数据问答系统及该系统的实现方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
《SEQ2SQL: GENERATING STRUCTURED QUERIES FROM NATURAL LANGUAGE USING REINFORCEMENT LEARNING》;Victor Zhong, Caiming Xiong, Richard Socher;《https://arxiv.org/abs/1709.00103》;20171109;第1-12页 *
Victor Zhong, Caiming Xiong, Richard Socher.《SEQ2SQL: GENERATING STRUCTURED QUERIES FROM NATURAL LANGUAGE USING REINFORCEMENT LEARNING》.《https://arxiv.org/abs/1709.00103》.2017,13页. *

Also Published As

Publication number Publication date
CN109933602A (zh) 2019-06-25

Similar Documents

Publication Publication Date Title
CN109933602B (zh) 一种自然语言与结构化查询语言的转换方法及装置
US11640515B2 (en) Method and neural network system for human-computer interaction, and user equipment
US11995073B2 (en) One-shot learning for text-to-SQL
US10515155B2 (en) Conversational agent
CN109857845B (zh) 模型训练及数据检索方法、装置、终端及计算机可读存储介质
WO2019052261A1 (zh) 用于问答服务的方法、问答服务系统以及存储介质
CN109582952B (zh) 诗歌生成方法、装置、计算机设备和介质
JP6733809B2 (ja) 情報処理システム、情報処理装置、情報処理方法および情報処理プログラム
CN111930906A (zh) 基于语义块的知识图谱问答方法及装置
CN110442880B (zh) 一种机器翻译译文的翻译方法、装置及存储介质
CN115495568B (zh) 一种对话模型的训练方法及装置、对话响应方法及装置
CN110084323A (zh) 端到端语义解析系统及训练方法
CN113779062A (zh) Sql语句生成方法、装置、存储介质及电子设备
Chen et al. Plotcoder: Hierarchical decoding for synthesizing visualization code in programmatic context
CN103871404A (zh) 一种语言模型的训练方法、查询方法和对应装置
CN115543437A (zh) 一种代码注释生成方法和系统
US20220179889A1 (en) Method for generating query statement, electronic device and storage medium
CN114048301B (zh) 一种基于满意度的用户模拟方法及系统
CN115497477A (zh) 语音交互方法、语音交互装置、电子设备、存储介质
CN110597847A (zh) Sql语句自动生成方法、装置、设备及可读存储介质
CN114168619A (zh) 语言转换模型的训练方法及装置
EP3525107A1 (en) Conversational agent
JP6261669B2 (ja) クエリ校正システムおよび方法
CN117827886B (zh) 一种基于大语言模型的自然语句转sql语句的方法
CN112256838B (zh) 相似域名查找方法、装置及电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant