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

一种基于中间语法树的多轮自然语言转SQL方法技术

技术编号:26689686 阅读:55 留言:0更新日期:2020-12-12 02:38
本发明专利技术公开了一种基于中间语法树的多轮自然语言转SQL方法。为解决传统端到端方法存在自然语言和SQL间的语义代沟,忽略了SQL内在的语法逻辑等问题,本发明专利技术设计了一种类SQL的中间语法树文法,以非端到端的方式,采用编码‑解码架构的语法神经网络,在轮次维度上迭代,按照语法树逻辑由粗到细的两阶段生成每一轮的中间语法树,并在后处理阶段推理生成SQL。应对多轮会话间语义依赖导致生成SQL局部重叠现象,本发明专利技术提出了对历史生成SQL的复用策略,进一步地提高了转化准确率。本发明专利技术在智能数据库系统等场景中具有广泛的应用前景。

【技术实现步骤摘要】
一种基于中间语法树的多轮自然语言转SQL方法
本专利技术属于自然语言处理
,涉及一种多轮会话场景下的自然语言转SQL方法,尤其涉及一种基于中间语法树的多轮自然语言转SQL方法。
技术介绍
自然语言转SQL(NaturalLanguagetoSQL)是语义解析、语义理解中的重要任务。单轮会话场景下,给定自然问句文本和数据库表列名集合作为输入,NL2SQL的目的是解析问句语义,建立问句、数据库模式和SQL三者间的映射,生成问句对应的SQL。例如给定问句:“今天上海的天气如何?”和数据库模式:{天气表:{天气、区域(外键)、时间、温度、…},区域表:{区域(主键)、经纬度、人口、方言、…},…}作为输入,需要生成对应的SQL:SELECT天气FROM天气表WHERE区域=‘上海’AND时间=‘今天’。而多轮会话更符合人类交谈、对话的语言习惯,该任务可扩展为,模拟用户与一个智能数据库系统的问答场景,将上述问句作为第一轮,发起第二轮的问答:“那昨天杭州的呢?”,生成对应的SQL:SELECT天气FROM天气表WHERE区域=‘杭州’AND时间=‘昨本文档来自技高网...

【技术保护点】
1.一种基于中间语法树的多轮自然语言转SQL方法,其特征在于,所述中间语法树由语法神经网络模型预测生成,称作Tree-SQL;所述语法神经网络由一个编码器和一个解码器组成;所述编码器包括:上下文编码器、交互编码器和Tree-SQL编码器;所述上下文编码器编码问句和数据库模式;所述交互编码器是一个LSTM结构,捕获当前问句与历史问句的语义依赖;所述Tree-SQL编码器将生成的历史Tree-SQLs编码成向量,应用复用策略,参与解码器生成当前轮次的Tree-SQL。所述解码器包括框架解码器和细化解码器;所述框架解码器是LSTM序列解码结构,用于生成Tree-SQL框架部分;所述细化解码器同样是序...

【技术特征摘要】
1.一种基于中间语法树的多轮自然语言转SQL方法,其特征在于,所述中间语法树由语法神经网络模型预测生成,称作Tree-SQL;所述语法神经网络由一个编码器和一个解码器组成;所述编码器包括:上下文编码器、交互编码器和Tree-SQL编码器;所述上下文编码器编码问句和数据库模式;所述交互编码器是一个LSTM结构,捕获当前问句与历史问句的语义依赖;所述Tree-SQL编码器将生成的历史Tree-SQLs编码成向量,应用复用策略,参与解码器生成当前轮次的Tree-SQL。所述解码器包括框架解码器和细化解码器;所述框架解码器是LSTM序列解码结构,用于生成Tree-SQL框架部分;所述细化解码器同样是序列解码结构,根据生成的框架预测表列名部分,得到最终的Tree-SQL;最后在后处理阶段由生成的Tree-SQL推理得到SQL;所述多轮自然语言转SQL方法包括以下步骤:
(1)将第t轮自然问句和数据库模式输入到上下文编码器中,第t-1轮的交互编码器的交互语义状态,t=1,2,3,...,N,初始第0轮的状态设置为随机值,参与第t轮的问句编码,得到自然问句每个单词和数据库模式每个表列名的编码词向量,问句最终的语义用于更新交互编码器状态。
(2)将上下文编码器得到的问句向量和Tree-SQL编码器输出的历史Tree-SQLs向量输入到框架解码器,根据Tree-SQL文法,按时间步展开依照概率最大原则进入相应的文法规则节点。在每一步预测过程中,会考虑问句语义和当前隐状态的关联性,以及前t-1轮生成的历史Tree-SQLs与当前步预测节点的复用概率。由此,序列生成当前第t轮中间语法树的框架。
(3)根据生成的Tree-SQL框架,按照Tree-SQL语法填充其表列名,将上下文编码器得到的问句向量、数据库模式向量和历史Tree-SQLs向量输入到细化解码器中,在每一步预测过程中,会考虑问句语义、数据库模式和当前隐状态的关联性,以及前t-1轮生成的历史Tree-SQLs的表列名节点与当前步预测的表列名节点的复用概率,得到最终第t轮的Tree-SQL。
(4)由步骤(3)得到的中间语法树Tree-SQL,根据文法规则解析每个节点指示的SQL指令,合成最终的SQL。
(5)在轮次维度上t=1,2,3,...,N,重复步骤(1)-(4),N表示用户对系统发起一次交互的轮数。
(6)将步骤(3)中每轮预测的Tree-SQL与由真实SQL转化得到的Tree-SQL进行比较,计算损失值,并通过随机梯度下降法最小化该损失值,最终获得训练好的语法神经网络模型。
(7)获取用户发起一次交互的N轮自然问句,将每一轮的问句和给定的数据库模式,在轮次维度上依次输入到训练好的语法神经网络,模型输出每一轮的中间语法树Tree-SQL,再推理生成每一轮的SQL,实现多轮自然语言到SQL的生成。


2.如权利要求1所述多轮自然语言转SQL方法,其特征在于:步骤(1)包括以下子步骤:
(1.1)第t轮自然问句包含单词Qt=(xt,1,xt,2,...,xt,i,...,xt,T),其中T是所述问句单词的长度;数据库模式由一系列表列名集合组成,定义为S={s1,s2,...,sj,...,sm},其中sj表示模式中某一项表.列名,m是表.列名的个数。将问句和数据库模式进行BERT方法的拼接:
[CLS]xt,1,...,xt,i,...,xt,T[SEP]s1[SEP]s2[SEP]...[SEP]sj[SEP]...[SEP]sm[SEP]。
(1.2)将上述拼接输入到上下文编码器预编码BERT层,取出问句和数据库模式对应位置的稠密词向量作为问句编码和数据库表列名编码。

其中是问句单词xt,i的词向量,是数据库模式某一项表列名sj的词向量。
(1.3)将交互编码器LSTMI的全局语义状态和问句单词向量进行拼接,捕获全局交互语义,再通过一层双向LSTM捕获问句的上下文语义,得到最终包含有丰富语义的新的问句向量同时用得...

【专利技术属性】
技术研发人员:陈刚王侠侠伍赛陈珂寿黎但江大伟宋明黎
申请(专利权)人:浙江大学
类型:发明
国别省市:浙江;33

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

1