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

文档序号:18009764发布日期:2019-06-25 23:51阅读:321来源:国知局
一种自然语言与结构化查询语言的转换方法及装置与流程

本发明涉及然语言处理和数据库技术领域,具体涉及一种自然语言与结构化查询语言的转换方法及装置。



背景技术:

在信息化时代的21世纪,生活中充斥着海量的信息,如果我们想要使用这些信息,必须先将其存储在数据库中。每当我们需要查看这些信息时,就通过结构化查询语言(structuredquerylanguage,以下简称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(结构化查询语言,structuredquerylanguage,以下简称sql)语句进行语法解析,变形为具有空间语义特征的广义树形编码和拓扑图编码;然后综合利用循环神经网络(recurrentneuralnetwork,简称rnn)、图卷积神经网络(graphconvolutionalnetwork,简称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。

具体来说,广义深度优先树形编码为generalizeddepth-firsttreecoding,简称dfs-tree。循环神经网络rnn为recurrentneuralnetwork,图卷积网络gcn的全称为graphconvolutionalnetwork,采用谷歌开源的机器翻译模型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(questiontosql)。该模型能将问题转换为对应的sql,且性能较好。

在一种实施方式中,请参见图5,步骤s4具体包括:

将nqs数据集中的问题作为输入,sql作为输出,采用谷歌开源的神经机器翻译模型nmt作为基准模型,在解码器上添加注意力机制和指针生成器网络,进行预设轮训练后,得到一个收敛的模型que2sql。

具体来说,谷歌开源的神经机器翻译模型nmt为neuralmachinetranslation,注意力机制即attentionmechanism,指针生成器网络为pointer-generatornetwork,预设轮数可以根据实际情况进行设置,例如进行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、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1