掌桥专利:专业的专利平台
掌桥专利
首页

SQL语句生成方法、装置、设备及存储介质

文献发布时间:2023-06-19 16:04:54



技术领域

本发明涉及数据处理技术领域,尤其涉及一种SQL语句生成方法、装置、设备及存储介质。

背景技术

近年来,随着移动互联网和人工智能相关产业的迅猛发展,数据资产已经成为了企业以及个人生活中不可或缺的一环,挖掘与分析数据的相关技术也成为了大数据时代下的关注焦点。然而,如今使用主流的数据分析软件仍然需要通过专业的数据库操作命令(如SQL语句),这无疑提高了数据分析工具的使用成本。自动Text2SQL技术应运而生。作为一种自然语言处理技术,其目标是将用户自然语言输入解析成相应的SQL查询语句,为数据分析工具赋予人工智能技术与自然语言理解能力。然而,由于真实场景下的用户意图复杂性和数据库的多样性,在当前市场上能提供可用的Text2SQL系统仍然稀缺,在有复杂问题的跨领域环境中,往往没有较好的效果。因此,如何精确地生成SQL语句,成为一个亟待解决的问题。

上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。

发明内容

本发明的主要目的在于提供了一种SQL语句生成方法、装置、设备及存储介质,旨在解决如何精确地生成SQL语句的技术问题。

为实现上述目的,本发明提供了一种SQL语句生成方法,所述SQL语句生成方法包括以下步骤:

获取用户输入的自然语言查询问题、数据库模式以及数据库内容;

将所述自然语言查询问题、所述数据库模式以及所述数据库内容输入至预设SLESQL模型中,以生成SQL语句。

可选地,所述预设SLESQL模型包括:预设实体识别模型、预设编码模型以及预设解码模型;

所述将所述自然语言查询问题、所述数据库模式以及所述数据库内容输入至预设SLESQL模型中,以生成SQL语句的步骤,具体包括:

将所述自然语言查询问题、所述数据库模式以及所述数据库内容输入至所述预设实体识别模型中,获得候选值集;

将所述候选值集输入至所述预设编码模型中,获得编码后的候选值集;

将所述编码后的候选值集输入至所述预设解码模型,生成SQL语句。

可选地,所述将所述自然语言查询问题、所述数据库模式以及所述数据库内容输入至所述预设实体识别模型中,获得候选值集的步骤,具体包括:

将所述自然语言查询问题输入至所述预设实体识别模型中,获得候选值集合;

根据所述候选值集合、所述数据库内容以及所述数据库模式确定候选值;

根据所述候选值和所述数据库模式确定候选值集。

可选地,所述根据所述候选值集合、所述数据库内容以及所述数据库模式确定候选值的步骤,具体包括:

根据所述候选值集合、所述数据库内容以及所述数据库模式确定目标候选值集合;

根据所述目标候选值集合中的候选值数量、数据库内容中的数值数量以及预设相似性阈值对所述目标候选值集合进行验证,获得候选值。

可选地,所述根据所述候选值集合、所述数据库内容以及所述数据库模式确定目标候选值集合的步骤,具体包括:

获取所述候选值集合中的各候选值与所述数据库内容之间的词嵌入文本距离;

在所述词嵌入文本距离满足预设文本距离条件时,获得初始候选值集合;

获取所述初始候选值集合中的各初始候选值与所述数据库模式之间的编辑距离;

在所述编辑距离满足预设编辑距离条件时,获得目标候选值集合。

可选地,所述将所述候选值集输入至所述预设编码模型中,获得编码后的候选值集的步骤,具体包括:

获取所述候选值集对应的匹配类型;

根据所述匹配类型对所述候选值集进行标记,获得标记后的候选值集;

将所述标记后的候选值集输入至所述预设编码模型中,获得编码后的候选值集。

可选地,所述预设解码模型包括:骨架解码器和细节解码器;

所述将所述编码后的候选值集输入至所述预设解码模型,生成SQL语句的步骤,具体包括:

将所述编码后的候选值集输入至所述骨架解码器中,获得语句骨架;

将所述语句骨架和所述编码后的候选值集输入至所述细节解码器中,获得SQL语句。

此外,为实现上述目的,本发明还提供一种SQL语句生成装置,所述SQL语句生成装置包括:

信息获取模块,用于获取用户输入的自然语言查询问题、数据库模式以及数据库内容;

SQL语句生成模块,用于将所述自然语言查询问题、所述数据库模式以及所述数据库内容输入至预设SLESQL模型中,以生成SQL语句。

此外,为实现上述目的,本发明还提出一种SQL语句生成设备,所述SQL语句生成设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的SQL语句生成程序,所述SQL语句生成程序配置为实现如上文所述的SQL语句生成方法的步骤。

此外,为实现上述目的,本发明还提出一种存储介质,所述存储介质上存储有SQL语句生成程序,所述SQL语句生成程序被处理器执行时实现如上文所述的SQL语句生成方法的步骤。

本发明通过获取用户输入的自然语言查询问题、数据库模式以及数据库内容,然后将自然语言查询问题、数据库模式以及数据库内容输入至预设SLESQL模型中,以生成SQL语句。本发明通过将自然语言查询问题、数据库模式以及数据库内容输入至预设SLESQL模型中,生成SQL语句,相较于现有的通过Text2SQL是将用户的自然语言输入转化成可执行SQL语句,在复杂问题环境中的效果不好,本发明上述方式能够提高数据库内容的利用效果,并通过预设SLESQL模型生成复杂的、嵌套的SQL语句。

附图说明

图1是本发明实施例方案涉及的硬件运行环境的SQL语句生成设备的结构示意图;

图2为本发明SQL语句生成方法第一实施例的流程示意图;

图3为本发明SQL语句生成方法第二实施例的流程示意图;

图4为本发明SQL语句生成装置第一实施例的结构框图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

参照图1,图1为本发明实施例方案涉及的硬件运行环境的SQL语句生成设备结构示意图。

如图1所示,该SQL语句生成设备可以包括:处理器1001,例如中央处理器(CentralProcessing Unit,CPU),通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如无线保真(Wireless-Fidelity,Wi-Fi)接口)。存储器1005可以是高速的随机存取存储器(RandomAccess Memory,RAM),也可以是稳定的非易失性存储器(Non-Volatile Memory,NVM),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。

本领域技术人员可以理解,图1中示出的结构并不构成对SQL语句生成设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

如图1所示,作为一种存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及SQL语句生成程序。

在图1所示的SQL语句生成设备中,网络接口1004主要用于与网络服务器进行数据通信;用户接口1003主要用于与用户进行数据交互;本发明SQL语句生成设备中的处理器1001、存储器1005可以设置在SQL语句生成设备中,所述SQL语句生成设备通过处理器1001调用存储器1005中存储的SQL语句生成程序,并执行本发明实施例提供的SQL语句生成方法。

基于上述SQL语句生成设备,本发明实施例提供了一种SQL语句生成方法,参照图2,图2为本发明SQL语句生成方法第一实施例的流程示意图。

本实施例中,所述SQL语句生成方法包括以下步骤:

步骤S10:获取用户输入的自然语言查询问题、数据库模式以及数据库内容;

需要说明的是,本实施例的执行主体可以是一种具有数据处理、网络通信以及程序运行功能的计算服务设备,例如手机、平板电脑、个人电脑等,或者是一种能够实现上述功能的电子设备或SQL语句生成设备。以下以所述SQL语句生成设备为例,对本实施例及下述各实施例进行说明。

可理解的是,自然语言查询问题是指用户输入的查询问题,例如:"Show originand destination for flights with price higher than 300.",本实施例中的自然语言查询问题由英文组成。

应理解的是,数据库模式可包括数据库的行列,数据库内容是指数据库中的值。

步骤S20:将所述自然语言查询问题、所述数据库模式以及所述数据库内容输入至预设SLESQL模型中,以生成SQL语句。

需要说明的是,预设SLESQL模型是指预先设置的SLESQL模型,该模型可生成SQL语句。

本实施例通过获取用户输入的自然语言查询问题、数据库模式以及数据库内容,然后将自然语言查询问题、数据库模式以及数据库内容输入至预设SLESQL模型中,以生成SQL语句。本发明通过将自然语言查询问题、数据库模式以及数据库内容输入至预设SLESQL模型中,生成SQL语句,相较于现有的通过Text2SQL是将用户的自然语言输入转化成可执行SQL语句,在复杂问题环境中的效果不好,本发明上述方式能够提高数据库内容的利用效果,并通过预设SLESQL模型生成复杂的、嵌套的SQL语句。

参考图3,图3为本发明SQL语句生成方法第二实施例的流程示意图。

基于上述第一实施例,在本实施例中,所述步骤S20包括:

步骤S201:将所述自然语言查询问题、所述数据库模式以及所述数据库内容输入至所述预设实体识别模型中,获得候选值集;

需要说明的是,本实施例中的预设SLESQL模型可包括预设实体识别模型、预设编码模型以及预设解码模型。预设实体识别模型是指预先设置的实体进行识别的模型,预设编码模型是指预先设置的进行编码的模型,预设解码模型是指预先设置的进行解码的模型。

可理解的是,候选值集可包括与自然语言查询问题相关的候选值、候选值对应的行和列。

进一步地,为了精确确定候选值集合,在本实施例中,所述步骤S201包括:将所述自然语言查询问题输入至所述预设实体识别模型中,获得候选值集合;根据所述候选值集合、所述数据库内容以及所述数据库模式确定候选值;根据所述候选值和所述数据库模式确定候选值集。

可理解的是,本实施例中的预设实体识别模型可以是TENER模型,该模型是在原始Transformer基础上针对NER任务进行的改进,采用改进的Transformer编码器来对字符级特征和单词级特征建模。

应理解的是,本实施例还使用一些简单有效的启发式方法来提取候选值,1)引号中的内容:例如,谁的头的名字有子串'Ha'?;2)大写的术语:例如,显示所有带有AirbusA340-300飞机的航班号;3)单一字母:例如,那些名字中不包含字母M的员工的雇佣日期是什么时候?

在具体实现中,将自然语言查询问题输入至预设实体识别模型中,可以得到候选值集合,候选值集合中包括多个候选值,候选值是指与自然语言查询问题中的实体相关的值,例如:自然语言查询问题中包括“小明”这个实体,候选值集合中可能包括“明宇”、“明峰”等候选值。

进一步地,为了精确确定候选值,在本实施例中,所述根据所述候选值集合、所述数据库内容以及所述数据库模式确定候选值的步骤,具体包括:根据所述候选值集合、所述数据库内容以及所述数据库模式确定目标候选值集合;根据所述目标候选值集合中的候选值数量、数据库内容中的数值数量以及预设相似性阈值对所述目标候选值集合进行验证,获得候选值。

需要说明的是,目标候选值集是指在对候选值集合中的所有候选值进行筛选后得到的候选值集合。

可理解的是,在确定完目标候选值集合后,可获取目标候选值中的候选值数量和数据库内容中的数值数量,例如:目标候选值中的候选值数量为60,数据库内容中的数值数量为100,此时候选值数量与数值数量之间的比值过大,说明选取出的候选值数量过多,需要重新设置相似性阈值,直至选取出的候选值数量与数值数量之间的比值小于预设比值。

应理解的是,相似性阈值可包括下文中的预设文本距离条件和预设编辑距离条件,通过改变上述两个预设距离条件,可以使目标候选值中的选值数量与数据库内容中的数值数量之间的比值减小,该过程即为验证过程。

在具体实现中,本实施例还可不跟进相似度来验证目标候选集,而使用精确匹配。以下有两个例子:‘List the top 3albums of Elton John in the Billboard charts’and‘Find all albums of Elton John starting with“goodbye”’,在这些情况下,本实施例不会在数据库内容中找到'3'或"goodbye"。在第一个例子中,数值3不是数据库的一部分,而是在SQL查询中使用的,是在SQL查询中被用来限制结果的。在第二个例子中,标记"goodbye"需要一个通配符匹配。但是通配符匹配不足以验证候选值,因为这种方法过于灵活会导致更多的错误候选。

进一步地,为了精确确定目标候选值集合,在本实施例中,所述根据所述候选值集合、所述数据库内容以及所述数据库模式确定目标候选值集合的步骤,具体包括:获取所述候选值集合中的各候选值与所述数据库内容之间的词嵌入文本距离;在所述词嵌入文本距离满足预设文本距离条件时,获得初始候选值集合;获取所述初始候选值集合中的各初始候选值与所述数据库模式之间的编辑距离;在所述编辑距离满足预设编辑距离条件时,获得目标候选值集合。

需要说明的是,词嵌入是一种单词的表示形式,它允许意义相似的单词具有类似的表示形式,词嵌入文本距离是指候选值集合中的各候选值与数据库内容中的各数据库值之间的文本距离,预设文本距离条件是指预先设置的文本距离条件,具体可根据实际情况进行设置,本实施例对此不做具体限制。

可理解的是,本实施例可从候选值集合中选取满足预设文本距离条件对应的所有候选值,构成初始候选值集合,以进行初次筛选。

应理解的是,编辑距离是指针对二个字符串(例如英文字)的差异程度的量化量测,量测方式是看至少需要多少次的处理才能将一个字符串变成另一个字符串,本实施例中的编辑距离是指初始候选值集合中的各初始候选值与数据库模式中的行、列之间的编辑距离,预设编辑距离条件是指预先设置的编辑距离条件,具体可根据实际情况进行设置,本实施例对此不做具体限制。

在具体实现中,本实施例可从初始候选值集合中选取满足预设编辑距离条件对应的所有候选值,构成目标候选值集合,以进行再次筛选。

另外,本实施例还可通过另外两种方式产生目标候选值集合,第一种方式是通过手工制作的启发式方法,因为数据库有一些特定的(重复出现的)方法来实现某些数据类型。本实施例目前使用以下启发式方法:(1)经典的性别值,例如,通常被实现为内容为"F"或"M"的VARCHAR类型列。(2)布尔数据类型通常用数值列来实现,数值为0和1。(3)例如序数通常用数值列实现,通常用一个整数列表示。(4)月份(如8月)通常是完整日期列的一部分,那么通过使用通配符(如8/%)就可以找到它们。虽然这些简单的手工启发式方法并不能推广到每一个领域的数据库,但是可以引导生成式模型以一种更动态的方式学习这种模式。第二种方式是使用n-grams,本实施例将这种技术用于那些被标记多次的单词上面,连续的多个单词都被标记为候选列名或者候选数值的话,对这些单词使用n-grams。

具体地,上述三种方式可组合进行使用,用一种方式或两种方式或三种方式都可以,本实施例对此不做具体限制。

步骤S202:将所述候选值集输入至所述预设编码模型中,获得编码后的候选值集;

进一步地,为了精确获取编码后的候选值集,在本实施例中,所述步骤S202包括:获取所述候选值集对应的匹配类型;根据所述匹配类型对所述候选值集进行标记,获得标记后的候选值集;将所述标记后的候选值集输入至所述预设编码模型中,获得编码后的候选值集。

需要说明的是,本实施例中的匹配类型可包括完全匹配类和候选值匹配类,如果一个表或一个列与自然语言查询问题中的一个词完全匹配,本文将其归类为完全匹配类,如果它只是部分匹配,则把它归类为候选值匹配类。

可理解的是,本实施例对于输入的自然语言查询问题中的每个词都进行标记分类,分为表、列、数值、聚合操作和超值等,这将在合成查询是成为一个较为重要的依据。本实施例对所有的词都在数据库模式和数据库内容中进行基于字符的精确匹配,这将为神经网络提供一些先验知识。因为如果神经网络只输入自然语言查询问题和数据库模式,那将损失很多额外的信息,例如,当我们想知道数据库模式中的一个表名或者列名是否在自然语言查询语句中被提及的时候,我们就需要对神经网络提供一个关于表名和列名的提示性信息。但那些更复杂的关系,例如,“higher”可能指的是price或者height,这将在神经网络的编码器中被建立关系。

在具体实现中,在对候选值集进行标记后,可对候选值集中的所有候选值标记为完全匹配类或候选值匹配类,获得标记后的候选值集,并将所述标记后的候选值集输入至预设编码模型中。本实施例的预设编码模型基于预训练的Transformer,该架构在最新的Text2SQL系统RATSQL中也有使用。Transformer架构已经用于不同的任务,如自然语言翻译、自然语言生成,最近还用于实体识别领域,这种只关注的Transformer结构比经典的递归神经网络(RNN)能更好地表示自然语言序列。因此,在许多自然语言处理任务中,Transformer结构通常比传统神经网络产生更好的结果。本实施例的预设编码模型是IRNet编码器的扩展。主要的区别在于,SLESQL的编码器不仅输入关于数据库模式的信息,而且还输入从数据库内容中提取的候选值。因此,本实施例的预设编码模型还可以了解自然语言查询问题的标记与数据库内容中的实际值之间的相关性。

步骤S203:将所述编码后的候选值集输入至所述预设解码模型,生成SQL语句。

进一步地,为了精确生成SQL语句,在本实施例中,所述步骤S203包括:将所述编码后的候选值集输入至所述骨架解码器中,获得语句骨架;将所述语句骨架和所述编码后的候选值集输入至所述细节解码器中,获得SQL语句。

需要说明的是,本实施例中的预设解码模型可包括骨架解码器和细节解码器。

在具体实现中,本实施例中的预设解码模型从预设编码模型接收问题/表/列/值的编码作为输入,输出是合成的SemQL查询,预设解码模型由LSTM架构和多个指针网络组成,用于选择表、列和值。本实施例使用基于语法的解码器(TRANX),利用LSTM来模拟SemQL查询的生成过程。本实施例采用从粗到细的框架(coarse-to-fine),将SemQL查询的解码过程分解为两个阶段。在第一阶段,一个骨架解码器输出SemQL查询的骨架。然后,细节解码器通过选择列和表来填补骨架中缺失的细节,候选值集合和骨架在细节解码器中补全成完整的SQL语句。

本实施例通过将自然语言查询问题、数据库模式以及数据库内容输入至预设实体识别模型中,获得候选值集,然后将候选值集输入至预设编码模型中,获得编码后的候选值集,再将所述编码后的候选值集输入至预设解码模型,生成SQL语句。本实施例先通过预设实体识别模型提取并生成候选值集,然后通过预设编码器和预设解码器使用候选值集来合成一个复杂的、嵌套的SQL语句。

参照图4,图4为本发明SQL语句生成装置第一实施例的结构框图。

如图4所示,本发明实施例提出的SQL语句生成装置包括:

信息获取模块10,用于获取用户输入的自然语言查询问题、数据库模式以及数据库内容;

SQL语句生成模块20,用于将所述自然语言查询问题、所述数据库模式以及所述数据库内容输入至预设SLESQL模型中,以生成SQL语句。

本实施例通过获取用户输入的自然语言查询问题、数据库模式以及数据库内容,然后将自然语言查询问题、数据库模式以及数据库内容输入至预设SLESQL模型中,以生成SQL语句。本发明通过将自然语言查询问题、数据库模式以及数据库内容输入至预设SLESQL模型中,生成SQL语句,相较于现有的通过Text2SQL是将用户的自然语言输入转化成可执行SQL语句,在复杂问题环境中的效果不好,本发明上述方式能够提高数据库内容的利用效果,并通过预设SLESQL模型生成复杂的、嵌套的SQL语句。

需要说明的是,以上所描述的工作流程仅仅是示意性的,并不对本发明的保护范围构成限定,在实际应用中,本领域的技术人员可以根据实际的需要选择其中的部分或者全部来实现本实施例方案的目的,此处不做限制。

另外,未在本实施例中详尽描述的技术细节,可参见本发明任意实施例所提供的SQL语句生成方法,此处不再赘述。

基于本发明上述SQL语句生成装置第一实施例,提出本发明SQL语句生成装置的第二实施例。

在本实施例中,所述预设SLESQL模型包括:预设实体识别模型、预设编码模型以及预设解码模型;所述SQL语句生成模块20,还用于将所述自然语言查询问题、所述数据库模式以及所述数据库内容输入至所述预设实体识别模型中,获得候选值集;将所述候选值集输入至所述预设编码模型中,获得编码后的候选值集;将所述编码后的候选值集输入至所述预设解码模型,生成SQL语句。

进一步地,所述SQL语句生成模块20,还用于将所述自然语言查询问题输入至所述预设实体识别模型中,获得候选值集合;根据所述候选值集合、所述数据库内容以及所述数据库模式确定候选值;根据所述候选值和所述数据库模式确定候选值集。

进一步地,所述SQL语句生成模块20,还用于根据所述候选值集合、所述数据库内容以及所述数据库模式确定目标候选值集合;根据所述目标候选值集合中的候选值数量、数据库内容中的数值数量以及预设相似性阈值对所述目标候选值集合进行验证,获得候选值。

进一步地,所述SQL语句生成模块20,还用于获取所述候选值集合中的各候选值与所述数据库内容之间的词嵌入文本距离;在所述词嵌入文本距离满足预设文本距离条件时,获得初始候选值集合;获取所述初始候选值集合中的各初始候选值与所述数据库模式之间的编辑距离;在所述编辑距离满足预设编辑距离条件时,获得目标候选值集合。

进一步地,所述SQL语句生成模块20,还用于获取所述候选值集对应的匹配类型;根据所述匹配类型对所述候选值集进行标记,获得标记后的候选值集;将所述标记后的候选值集输入至所述预设编码模型中,获得编码后的候选值集。

进一步地,所述预设解码模型包括:骨架解码器和细节解码器;所述SQL语句生成模块20,还用于将所述编码后的候选值集输入至所述骨架解码器中,获得语句骨架;将所述语句骨架和所述编码后的候选值集输入至所述细节解码器中,获得SQL语句。

本发明SQL语句生成装置的其他实施例或具体实现方式可参照上述各方法实施例,此处不再赘述。

此外,本发明实施例还提出一种存储介质,所述存储介质上存储有SQL语句生成程序,所述SQL语句生成程序被处理器执行时实现如上文所述的SQL语句生成方法的步骤。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如只读存储器/随机存取存储器、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

相关技术
  • 生成SQL语句的方法、装置、计算机设备及存储介质
  • SQL语句的生成方法、装置、电子设备及存储介质
技术分类

06120114695758