当前位置: 首页 > 专利查询>武汉大学专利>正文

一种自然语言与结构化查询语言的转换方法及装置制造方法及图纸

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

【技术实现步骤摘要】
一种自然语言与结构化查询语言的转换方法及装置
本专利技术涉及然语言处理和数据库
,具体涉及一种自然语言与结构化查询语言的转换方法及装置。
技术介绍
在信息化时代的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,然后将本文档来自技高网...

【技术保护点】
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。...

【技术特征摘要】
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。2.如权利要求1所述的方法,其特征在于,步骤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。3.如权利要求1所述的方法,其特征在于,在步骤S3之后,所述方法还包括:采用步骤S3得到的新的数据集NQS继续训练步骤S1中的SQL2QUE模型,提升SQL2QUE模型的性能。4.如权利要求1所述的方法,其特征在于,步骤S4具体包括:将NQS数据集中的问题作为输入,SQL作为输出,采用谷歌开源的神经机器翻译模型NMT作为基准模型,在解码器上添加注意力机制和指针生成器网络,进行预设轮训练后,得到一个收敛的模型QUE2SQL。5.如权利要求1所述的方法,其特征在于,步骤S2中根据SQL语句是否有效,生成SQL数据集SD,具体包括:通过执行该条SQL语句,判断是否有效,如果数据库没有提示出错且能查询到有效信息,则判定该条SQL语句有效,将该语句添加到数据集SD中,直至...

【专利技术属性】
技术研发人员:朱斌李宗鹏周睿婷黄浩
申请(专利权)人:武汉大学
类型:发明
国别省市:湖北,42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1