有效
基于桥接填充的复杂多表SQL生成方法和装置
谭真、张啸宇、赵翔、王俞涵、黄旭倩、廖劲智、肖卫东、唐九阳
中国人民解放军国防科技大学
谭
谭真 专利 88
中国人民解放军国防科技大学自然语言处理知识系统数据存储检索
张
张啸宇 专利 5
中国人民解放军国防科技大学自然语言处理物理仪器数据存储检索
赵
赵翔 专利 194
浙江大学知识系统自然语言处理数据存储检索
王
王俞涵 专利 13
中国人民解放军国防科技大学计算技术物理仪器数据存储检索
黄
黄旭倩 专利 8
中国人民解放军国防科技大学自然语言处理数据存储检索电子数据处理
廖
廖劲智 专利 16
中国人民解放军国防科学技术大学自然语言处理数据存储检索计算技术
肖
肖卫东 专利 82
中国人民解放军国防科技大学自然语言处理数据存储检索计算模型系统
唐
唐九阳 专利 61
中国人民解放军国防科技大学知识系统自然语言处理数据存储检索
摘要
本申请涉及一种基于桥接填充的复杂多表SQL生成方法和装置。采用两层解码架构,三个部分分别为语义编码层、SQL模板生成层及SQL细节填充层。其中,SQL模板生成层为第一解码层。SQL细节填充层为第二解码层,另外,基于桥接填充的SQL生成模型仅在第一解码层中使用了序列生成技术,SQL模板的长度较短,相比于单独的序列生成模型,计算效率得到较大增强,计算资源消耗得到显著降低。
1.一种基于桥接填充的复杂多表SQL生成方法,其特征在于,所述方法包括:将自然语言表格样本输入多表SQL解析模型;所述多表SQL解析模型包括:语义编码模块、SQL模板生成模块和SQL细节填充模块;所述自然语言表格样本包括:自然语言问题、数据表名称和数据库表字段;根据预训练的所述语义编码模块对所述自然语言表格样本进行解析,得到字段序列编码、自然语言问题序列编码和表名字段序列编码;其中,所述字段序列编码、所述自然语言问题序列编码和所述表名字段序列编码构成整体编码信息;所述字段序列编码和所述表名字段序列编码通过串联符连接构成增强序列编码;将所述整体编码信息输入所述SQL模板生成模块,生成所述SQL模板生成模块中的SQL预定义模板对应的填充字段;所述SQL模板生成模块由LSTM单元构成,所述SQL模板生成模块中预先构建了多个类型的SQL预定义模板;所述SQL预定义模板通过预定义的SQL语句组件构成;将所述填充字段输入所述SQL细节填充模块对所述SQL预定义模板进行填充,得到预测多表SQL语句;根据所述预测多表SQL语句和预先设置的损失函数,对所述多表SQL解析模型进行训练,得到训练好的多表SQL解析模型;将待解析自然语言表格输入训练好的多表SQL解析模型,得到对应的多表SQL语句。
2.根据权利要求1所述的方法,其特征在于,根据预训练的所述语义编码模块对所述自然语言表格样本进行解析,得到字段序列编码、自然语言问题序列编码和表名字段序列编码,包括:获取自然语言表格样本的初始序列为:[XLS],q 1 ,q 2 ,...,q L ,[SEP],t 11 ,t 12 ,...,[CAT],c 111 ,c 112 ,...,[SEP],...,[SEP]其中,[XLS]表示初始标记,[SEP]表示间隔符,[CAT]表示串联符,q 1 ,q 2 ,...,q L 是自然语言问题序列,t i1 ,t i2 ,...,[CAT],c ij1 ,c ij2 ,...是第i个数据表中的第j个字段的增强序列,L表示自然语言问题的长度;q t 表示自然语言问题序列中的第t个token;根据预训练的所述语义编码模块对所述自然语言表格样本进行解析,得到字段序列编码、自然语言问题序列编码和表名字段序列编码为:h [XLS] ,h q1 ,h q2 ,...,h qL ,h [SEP] ,h t11 ,h t12 ,...,h [CAT] ,h c111 ,h c112 ,...,h [SEP] ,...,h [SEP]其中,h [XLS] 表示整体编码信息,h [SEP] 表示[SEP]的编码,h [CAT] 表示[CAT]的编码,h qt 表示q t 的编码,h ti1 ,h ti2 ,...,h [CAT] ,h cij1 ,h cij2 ,...表示t i1 ,t i2 ,...,[CAT],c ij1 ,c ij2 ,...的编码。
3.根据权利要求2所述的方法,其特征在于,将所述整体编码信息输入所述SQL模板生成模块,生成所述SQL模板生成模块中的SQL预定义模板对应的填充字段,包括:将所述整体编码信息输入所述SQL模板生成模块,利用LSTM单元的计算公式生成所述SQL模板生成模块中的SQL预定义模板对应的填充字段为:f t =σ(W f ·[x t ,h t-1 ]+b f )i t =σ(W i ·[x t ,h t-1 ]+b i )o t =σ(W o ·[x t ,h t-1 ]+b o )h t =o t *tanh(c t )其中,W t 为可学习参数,W t ∈R m×d ,对于不同的SQL语句组件的类型,W t 不同,d为预训练模型输出向量维度,当输出集合尺寸大于2时,使用softmax作为激活函数,m为输出集合尺寸;当输出集合尺寸为2时,使用sigmoid作为激活函数,h [XLS] 为整体编码信息,其中,x 0 =h [XLS] 。
4.根据权利要求3所述的方法,其特征在于,所述SQL预定义模板的类型包括:非嵌套SQL、集合运算SQL、FROM嵌套SQL和VALUE嵌套SQL。
5.根据权利要求4所述的方法,其特征在于,所述SQL语句组件包括:SELECT、WHERE、HAVING、ORDER BY、GROUP BY、LIMIT和FROM。
6.根据权利要求1至5任一项所述的方法,其特征在于,将所述填充字段输入所述SQL细节填充模块对所述SQL预定义模板进行填充,得到预测多表SQL语句,包括:将所述填充字段输入所述SQL细节填充模块对所述SQL预定义模板进行字段选择以及操作判断以及抽取,得到预测多表SQL语句。
7.根据权利要求6所述的方法,其特征在于,构建损失函数的步骤包括:获取SQL模板生成模块的损失函数,以及获取SQL细节填充模块的损失函数;对SQL模板生成模块的损失函数以及SQL细节填充模块的损失函数进行融合,得到损失函数。
8.一种基于桥接填充的复杂多表SQL生成装置,其特征在于,所述装置包括:输入模块,用于将自然语言表格样本输入多表SQL解析模型;所述多表SQL解析模型包括:语义编码模块、SQL模板生成模块和SQL细节填充模块;所述自然语言表格样本包括:自然语言问题、数据表名称和数据库表字段;编码模块,用于根据预训练的所述语义编码模块对所述自然语言表格样本进行解析,得到字段序列编码、自然语言问题序列编码和表名字段序列编码;其中,所述字段序列编码、所述自然语言问题序列编码和所述表名字段序列编码构成整体编码信息;所述字段序列编码和所述表名字段序列编码通过串联符连接构成增强序列编码;生成模块,用于将所述整体编码信息输入所述SQL模板生成模块,生成所述SQL模板生成模块中的SQL预定义模板对应的填充字段;所述SQL模板生成模块由LSTM单元构成,所述SQL模板生成模块中预先构建了多个类型的SQL预定义模板;所述SQL预定义模板通过预定义的SQL语句组件构成;将所述填充字段输入所述SQL细节填充模块对所述SQL预定义模板进行填充,得到预测多表SQL语句;根据所述预测多表SQL语句和预先设置的损失函数,对所述多表SQL解析模型进行训练,得到训练好的多表SQL解析模型;将待解析自然语言表格输入训练好的多表SQL解析模型,得到对应的多表SQL语句。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
暂无引用专利



