[发明专利]一种根据自然语言生成SQL语句的方法及装置有效
申请号: | 201911102273.6 | 申请日: | 2019-11-12 |
公开(公告)号: | CN110888897B | 公开(公告)日: | 2020-07-14 |
发明(设计)人: | 王世晞;张亮;刘涛 | 申请(专利权)人: | 杭州世平信息科技有限公司;杭州世平信息科技有限公司西安分公司 |
主分类号: | G06F16/242 | 分类号: | G06F16/242;G06F16/2452;G06K9/62 |
代理公司: | 西安通大专利代理有限责任公司 61200 | 代理人: | 房鑫 |
地址: | 310012 浙江省杭州*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 根据 自然语言 生成 sql 语句 方法 装置 | ||
1.一种根据自然语言生成SQL语句的方法,其特征在于,包括以下步骤:
1)通过句向量生成方法将自然语言N转换为句向量Ns;
2)使用句向量生成方法将待查数据库中所有表的表描述转换为每个表的描述向量Ti;
3)计算每个表的描述向量Ti与自然语言句向量Ns之间的相关性;
4)选择相关性最大的前n张表作为候选表,n为一个预先设定的参数;
5)使用语义分析算法将自然语言N转换为相应的SQL模板,遍历步骤4)所选取的候选表,将每张候选表套入SQL模板当中,得到SQL语句列表;
6)计算SQL语句列表的置信度,根据置信度选取SQL语句作为匹配的语句。
2.根据权利要求1所述根据自然语言生成SQL语句的方法,其特征在于:所述的步骤6)根据置信度选取前m条SQL语句作为匹配的语句,m为一个预先设定的参数。
3.根据权利要求1所述根据自然语言生成SQL语句的方法,其特征在于:步骤5)的SQL模板形如“select{agg}([col_x])from[table]where[col_y]{op1}[value]({connector}[col_z]{op2}[value])”,其中,{agg}表示聚合函数:sum、avg、count、min、max或者为空,为空表示不进行聚合;{op1}、{op2}表示比较符:=、!=、、、=、=;{connector}表示逻辑连接符:and、or;[col_x]、[col_y]、[col_z]表示选择的列的自然语言表示;[table]表示表名的自然语言表示;[value]表示比较的值的自然语言表示;()表示其中内容所表达的模式可以重复多次。
4.根据权利要求3所述根据自然语言生成SQL语句的方法,其特征在于:
步骤5)将每张候选表套入SQL模板当中时,根据表中的列描述,计算[col_x]、[col_y]、[col_z]选择的列的自然语言表示与各列描述之间的相关性,选取相关性最大的列替换[col_x]、[col_y]、[col_z];根据所选列的列描述,判断[value]的值是否需要替换。
5.根据权利要求4所述根据自然语言生成SQL语句的方法,其特征在于:步骤6)计算SQL语句列表的置信度的方法为将步骤3)得到的表相关性乘以步骤5)得到的列相关性。
6.根据权利要求4所述根据自然语言生成SQL语句的方法,其特征在于:步骤3)和步骤5)所述的相关性使用余弦距离或KL散度(Kullback-Leibler divergence)进行计算。
7.根据权利要求1所述根据自然语言生成SQL语句的方法,其特征在于:
步骤1)和步骤2)中句向量生成方法使用BERT(Bidirectional EncoderRepresentations from Transformers)或MT-DNN(Multi-Task Deep Neural Networks)模型进行计算。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州世平信息科技有限公司;杭州世平信息科技有限公司西安分公司,未经杭州世平信息科技有限公司;杭州世平信息科技有限公司西安分公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911102273.6/1.html,转载请声明来源钻瓜专利网。