[发明专利]一种自然语言与结构化查询语言的转换方法及装置有效
申请号: | 201910152421.9 | 申请日: | 2019-02-28 |
公开(公告)号: | CN109933602B | 公开(公告)日: | 2021-05-04 |
发明(设计)人: | 朱斌;李宗鹏;周睿婷;黄浩 | 申请(专利权)人: | 武汉大学 |
主分类号: | G06F16/242 | 分类号: | G06F16/242;G06F16/25 |
代理公司: | 武汉科皓知识产权代理事务所(特殊普通合伙) 42222 | 代理人: | 罗飞 |
地址: | 430072 湖*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 自然语言 结构 查询 语言 转换 方法 装置 | ||
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。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉大学,未经武汉大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910152421.9/1.html,转载请声明来源钻瓜专利网。