基于自然语言的结构化查询语言转换方法、及其相关设备与流程

文档序号:20775266发布日期:2020-05-19 20:42阅读:289来源:国知局
基于自然语言的结构化查询语言转换方法、及其相关设备与流程

本发明涉及人工智能技术领域,尤其涉及一种基于自然语言的结构化查询语言转换方法、及其相关设备。



背景技术:

目前将自然语言转换成结构化查询语言(structuredquerylanguage,sql)的方法主要是基于ontology的数据库自然语言查询接口进行处理,但该自然语言查询接口是基于预先设定好的数据集进行对应转换,由于用户的表述存在差异,存在与数据集中不相符的情况,进而影响自然语言转换成sql的准确性,导致用户在使用sql进行查询时被误导,从而影响用户的工作效率。



技术实现要素:

本发明实施例提供一种基于自然语言的结构化查询语言转换方法、及其相关设备,以实现提高自然语言转换成sql的准确性,进一步提高用户的工作效率。

一种基于自然语言的结构化查询语言转换方法,包括:

从预设数据库中获取自然语言文本;

对所述自然语言文本进行分词处理,得到自然语言分词;

通过词汇分析端对所述自然语言分词进行映射的方式,获取目标文本;

利用预设语法解析器对所述目标文本进行语法解析,生成解析文本,其中,所述解析文本包含不同的标识信息;

将预设select标识、预设where标识分别与所述解析文本中的所述标识信息进行匹配,并根据得到的匹配结果,确定select子句、where子句与from子句;

将所述select子句、所述where子句与所述from子句导入到预设目标端口中进行结构化查询语言生成处理,输出结构化查询语言。

一种基于自然语言的结构化查询语言转换装置,包括:

获取模块,用于从预设数据库中获取自然语言文本;

分词模块,用于对所述自然语言文本进行分词处理,得到自然语言分词;

映射模块,用于通过词汇分析端对所述自然语言分词进行映射的方式,获取目标文本;

解析模块,用于利用预设语法解析器对所述目标文本进行语法解析,生成解析文本;

子句确定模块,用于将预设select标识、预设where标识分别与所述解析文本中的所述标识信息进行匹配,并根据得到的匹配结果,确定select子句、where子句与from子句;

输出模块,用于将所述select子句、所述where子句与所述from子句导入到预设目标端口中进行结构化查询语言生成处理,输出结构化查询语言。

一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述基于自然语言的结构化查询语言转换方法的步骤。

一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述基于自然语言的结构化查询语言转换方法的步骤。

上述基于自然语言的结构化查询语言转换方法、及其相关设备,通过对获取到的自然语言文本进行分词处理得到自然语言分词,利用对自然语言分词进行映射的方式得到目标文本,再对目标文本进行语法解析生成解析文本,将预设select标识、预设where标识分别与解析文本中的标识信息进行匹配,并根据得到的匹配结果,确定select子句、where子句与from子句,并基于select子句、where子句与from子句生成sql。通过先对自然语言文本进行分词再进行映射的方式,可以加强自然语言文本与目标文本之间的关联性,保证数据形式统一,避免由于用户的表述存在差异,导致数据转换不准确的情况,从而实现将自然语言快速准确地转换成sql,进一步保证用户使用sql进行查询的准确性,提高用户的工作效率。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的基于自然语言的结构化查询语言转换方法的流程图;

图2是本发明实施例提供的基于自然语言的结构化查询语言转换方法中步骤s2的流程图;

图3是本发明实施例提供的基于自然语言的结构化查询语言转换方法中步骤s3的流程图;

图4是本发明实施例提供的基于自然语言的结构化查询语言转换方法中步骤s5的流程图;

图5是本发明实施例提供的基于自然语言的结构化查询语言转换方法中步骤s52的流程图;

图6是本发明实施例提供的基于自然语言的结构化查询语言转换方法中针对音频数据进行文字转换的流程图;

图7是本发明实施例提供的基于自然语言的结构化查询语言转换装置的示意图;

图8是本发明实施例提供的计算机设备的基本机构框图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本申请提供的基于自然语言的结构化查询语言转换方法应用于服务端,服务端具体可以用独立的服务器或者多个服务器组成的服务器集群实现。在一实施例中,如图1所示,提供一种基于自然语言的结构化查询语言转换方法,包括如下步骤:

s1:从预设数据库中获取自然语言文本。

在本发明是实施例中,通过对预设数据库进行检测,当检测到预设数据库中存在自然语言文本时,对自然语言文本进行提取,并将该自然语言文本从预设数据库中进行删除。其中,预设数据库是指专门用于存储自然语言文本的数据库。

s2:对自然语言文本进行分词处理,得到自然语言分词。

在本发明是实施例中,分词处理是指将连续的字序列按照一定的规范重新组合成词序列的过程,例如,将连续的字序列“abcd”通过分词处理得到“ab”和“cd”。

具体地,根据步骤s1得到的自然语言文本,利用机械分词的方法对自然语言文本进行分词处理,获取自然语言文本经过分词处理后得到的自然语言分词。

其中,机械分词方法主要有正向最大匹配、正向最小匹配、逆向最大匹配、逆向最小匹配四种方法。优选地,本提案采用正向最大匹配算法。

s3:通过词汇分析端对自然语言分词进行映射的方式,获取目标文本。

在本发明实施例中,词汇分析端是指专门用于对自然语言分词进行映射处理的处理端口。通过将自然语言分词导入到词汇分析端中进行映射处理,生成自然语言分词对应的映射形式,并对生成的映射形式进行组合得到对应的目标文本。

需要说明的是,词汇分析端中具体可以利用lexicalanalyzer工具、stanfordparser工具、berkeleyparser工具等等。

s4:利用预设语法解析器对目标文本进行语法解析,生成解析文本,其中,解析文本包含不同的标识信息。

在本发明实施例中,预设语法分析器是用于验证目标文本的语法是否正确,通过为输入的目标文本构建基于语法规则的解析树来验证查询,且在构建解析树验证查询的同时,还使用语法定向翻译的概念在同一处理阶段执行语义分析,同时生成目标文本中每个单词对应的标记,即经过语义分析后将目标文本转换成解析文本。

其中,预设语法分析器具体是使用byacc工具生成的,该工具将yacc文件作为输入,且yacc文件包含所有语法规则,也称为带关联操作的生产规则。

需要说明的是,解析文本是指根据预先定义规则重新描述的文本信息。

具体地,通过将目标文本导入到预设语法分析器中,当预设语法分析器检测到目标文本时,将直接验证目标文本的语法是否符合语法规则,若合法则表示语法正确,并对目标文本执行语义分析,将该目标文本转换成解析文本。

需要说明的是,若目标文本的语法不符合语法规则,则将该目标文本反馈给目标用户进行语法解析处理。

例如,若目标文本为:getcustomer_namewhosebalanceisgreaterthan3000。利用预设语法解析器对该目标文本进行语法解析后,生成的解析文本为:vp[select(customer_name),where(>(balance,3000))]。

s5:将预设select标识、预设where标识分别与解析文本中的标识信息进行匹配,并根据得到的匹配结果,确定select子句、where子句与from子句。

在本发明实施例中,解析文本包含的标识信息存在对应的标准子句,通过利用预设select标识、预设where标识分别与解析文本中的标识信息进行匹配的方式,将与预设select标识相同的标识信息对应的标准子句确定为select子句,将与预设where标识相同的标识信息对应的标准子句确定为where子句,再根据select子句和where子句分别包含的字段信息,从表数据库中查询与字段信息相关表名,基于相关表名生成对应的from子句。

其中,预设select标识是指根据用户实际需求设定用于从解析文本中确定select子句的标识信息。

预设where标识是指根据用户实际需求设定用于从解析文本中确定where子句的标识信息。

需要说明的是,select子句包含的字段信息为第一字段,where子句包含的字段信息为第二字段。

s6:将select子句、where子句与from子句导入到预设目标端口中进行结构化查询语言生成处理,得到结构化查询语言。

具体地,通过直接将将select子句、where子句与from子句导入到预设目标端口中进行结构化查询语言生成处理,得到处理后的结构化查询语言。

其中,预设目标端口是指专门用于根据select子句、where子句与from子句生成sql的处理端口。

sql,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。

本实施例中,通过对获取到的自然语言文本进行分词处理得到自然语言分词,利用对自然语言分词进行映射的方式得到目标文本,再对目标文本进行语法解析生成解析文本,将预设select标识、预设where标识分别与解析文本中的标识信息进行匹配,并根据得到的匹配结果,确定select子句、where子句与from子句,并基于select子句、where子句与from子句生成sql。通过先对自然语言文本进行分词再进行映射的方式,可以加强自然语言文本与目标文本之间的关联性,保证数据形式统一,避免由于用户的表述存在差异,导致数据转换不准确的情况,从而实现将自然语言快速准确地转换成sql,进一步保证用户使用sql进行查询的准确性,提高用户的工作效率。

在一实施例中,如图2所示,步骤s2中,即对自然语言文本进行分词处理,得到自然语言分词包括如下步骤:

s21:根据预设要求设置字符串索引值和分词的最大长度值。

在本发明实施例中,字符串索引值是指专门用于定位开始扫描字符的位置,若该字符串索引值为0,则表示第一个字符为开始扫描字符的位置。最大长度值是专门用于扫描字符的最大范围,若最大长度值为2,则表示扫描最多2个字符,若最大长度值为3,则表示扫描最多3个字符。

具体地,根据预设要求对字符串索引值和分词的最大长度值进行设置,其中,预设要求具体可以是将字符串索引值设置为0,将最大长度值设置为2,其具体的设置要求可以根据用户的实际需求进行设置,此处不做限制。

s22:根据字符串索引值和最大长度值,从自然语言文本中提取目标字符。

具体地,根据步骤s21得到的字符串索引值和最大长度值,按照从左到右的扫描方式扫描自然语言文本,当扫描到最大长度值的字符时,将从开始扫描位置的字符到该最大长度值的字符标识为目标字符,并对该目标字符进行提取。

例如,自然语言文本为“南京市长江大桥”,最大长度值为3,字符串索引的初始值为0,按照从左到右的方式扫描该自然语言文本,即扫描到最大长度值的字符为“南京市”,将该最大长度值的字符“南京市”标识为目标字符,并对该目标字符进行提取。

s23:将目标字符与预设字典库中的合法字符进行匹配。

具体地,将步骤s22中得到的目标字符与预设字典库中的合法字符进行匹配。其中,预设字典库是指专门用于存储用户设定的合法字符的数据库。

s24:若匹配成功,则将目标字符确定为自然语言分词,并将字符串索引值更新为当前字符串索引值加上当前最大长度值,基于更新后的字符串索引值和最大长度值,从自然语言文本中提取目标字符进行匹配,直到完成对自然语言文本的分词操作为止。

具体地,将步骤s22中得到的目标字符与预设字典库中的合法字符进行匹配,当匹配到目标字符与预设字典库中的合法字符相同时,表示匹配成功,并将该目标字符确定为目标分词,同时将字符串索引值更新为当前字符串索引值加上当前最大长度值,即更新为步骤s22中的字符串索引值加上步骤s22中的最大长度值,基于更新后的字符串索引值和最大长度值,从自然语言文本中提取目标字符进行匹配,直到完成对自然语言文本的分词操作为止。

例如,如步骤s22中的例子所述,若目标字符“南京市”匹配到与预设字典库中的字符相同时,则将目标字符“南京市”确认为目标分词,并将字符串索引值更新为字符串索引值0+最大长度值3,即字符串索引值将更新为3,并基于更新后的字符串索引值3和最大长度值3,从自然语言文本中提取目标字符进行匹配,即针对自然语言文本“南京市长江大桥”,从“长”字符开始扫描。直到完成对自然语言文本的分词操作为止。

s25:若匹配失败,则将最大长度值进行递减,并基于更新后的最大长度值和字符串索引值从自然语言文本中提取目标字符进行匹配,直到完成对自然语言文本的分词操作为止。

具体地,将步骤s22中得到的目标字符与预设字典库中的合法字符进行匹配,当未匹配到目标字符与预设字典库中的合法字符相同时,表示匹配失败,则将最大长度值更新为步骤s22中的最大长度值减1,并基于更新后的最大长度值和字符串索引值从自然语言文本中提取目标字符进行匹配,直到完成对自然语言文本的分词操作为止。

需要说明的是,当所有最大长度值大于1的目标字符都未匹配到与预设字典库中的字符相同时,则将单个字符确认为目标分词。

例如:如步骤s22中的例子所述,若目标字符“南京市”未匹配到与预设字典库中的字符相同时,则将最大长度值更新为当前最大长度值3减1,即最大长度值更新为2,并基于更新后的最大长度值2和字符串索引值0从自然语言文本中提取目标字符进行匹配,直到完成对自然语言文本的分词操作为止。

本实施例中,通过设置字符串索引值和分词的最大长度值对自然语言文本进行分词处理,并根据目标目标字符与合法字符进行匹配得到自然语言分词。从而实现对自然语言文本的准确分词,提高后续利用分词处理后的自然语言分词进行映射以获取目标文本的准确性。

在一实施例中,如图3所示,步骤s3中,即通过词汇分析端对自然语言分词进行映射的方式,获取目标文本包括如下步骤:

s31:将自然语言分词与词汇分析端中的标识信息进行匹配,其中,词汇分析端包含标识信息及每个标识信息对应的目标单词。

具体地,通过直接将自然语言分词与词汇分析端中的标识信息进行匹配,其中,词汇分析端包含标识信息及每个标识信息对应的目标单词。

需要说明的是,自然语言分词的数量至少为2个。

s32:若自然语言分词与标识信息相匹配,则将自然语言分词映射为标识信息对应的目标单词。

在本发明实施例中,根本步骤s31中将自然语言分词与标识信息进行匹配的方式,若存在自然语言分词与标识信息相同,则表示自然语言分词与标识信息相匹配,并利用该标识信息对应的目标单词对该自然语言分词进行替换,即将自然语言分词映射为该目标单词。

例如,词汇分析端中存在标识信息为get和whose,其对应的目标单词分别为select和where,若存在自然语言分词get和whose,由于自然语言分词get与标识信息get相同,自然语言分词whose与标识信息whose相同,故利用目标单词select替换自然语言分词get,利用目标单词where替换自然语言分词whose,即get映射为select;whose映射为where。

s33:若自然语言分词与标识信息不匹配,则将自然语言分词映射为空符号。

在本发明实施例中,根本步骤s31中将自然语言分词与标识信息进行匹配的方式,若未存在自然语言分词相同的标识信息,则表示自然语言分词与标识信息不匹配,并利用空符号对该自然语言分词进行替换,即将自然语言分词映射为空符号。

需要说明的是,空符号对应的符号为{}。

例如,词汇分析端中存在标识信息为all和go,其对应的目标单词分别为choose和welcome,若存在自然语言分词为the,由于自然语言分词与词汇分析端中所有的标识信息都不同,将自然语言分词the映射为空符号,即the映射为{}。

s34:根据自然语言分词在自然语言文本中的顺序,对映射后的所有自然语言分词进行组合,得到目标文本。

在本发明实施例中,由于自然语言分词是基于自然语言文本进行分词处理后得到,故每个自然语言分词都有其在自然语言文本中对应的排序,根据步骤s32和步骤s33得到自然语言文本中经过映射后的自然语言分词,将每个经过映射后的自然语言分词,按照映射前的自然语言分词在自然语言文本中对应的排序进行组合,得到组合后的目标文本。

例如,自然语言文本为getthebranch_name,其对应的自然语言分词分别为get、the和branch_name,其经过映射后变为select、{}、branch_name,将所有映射后的自然语言分词按照映射前的自然语言分词在自然语言文本中对应的排序进行组合,得到的目标文本为select{}branch_name。

本发明实施例中,通过将自然语言分词与词汇分析端中的标识信息进行匹配,若匹配成功,则将自然语言分词映射为标识信息对应的目标单词,若匹配失败,则将自然语言分词映射为空符号,并对映射后的所有自然语言分词进行组合,得到目标文本。通过将自然语言分词进行映射,能够有效地将自然语言分词都转换成固定的形式,进而提高数据的统一性,从而保证目标文本获取的准确性,进一步提高后续利用目标文本进行语法解析的准确性。

在一实施例中,解析文本包含的标识信息存在对应的标准子句,如图4所示,步骤s5中,即将预设select标识、预设where标识分别与解析文本中的标识信息进行匹配,并根据得到的匹配结果,确定select子句、where子句与from子句包括如下步骤:

s51:利用预设select标识、预设where标识分别与解析文本中的标识信息进行匹配,将与预设select标识相同的标识信息对应的标准子句确定为select子句,将与预设where标识相同的标识信息对应的标准子句确定为where子句,其中,select子句包含第一字段,where字段包含第二字段。

在本发明实施例中,将预设select标识、预设where标识分别与解析文本中的标识信息进行匹配,若预设select标识与标识信息相同,则将该标识信息对应的标准子句确定为select子句;若预设where标识与标识信息相同,则将该标识信息对应的标准子句确定为where子句。

例如,若解析文本为vp[select(customer_name),where(>(balance,3000))],该解析文本中存在标识信息select,其对应的标准子句为selectclause:selectcustomer_name,该解析文本存在标识信息where,其对应的标准子句为whereclause:wherebalance>3000,若预设select标识为select,预设where标识为where,通过将预设select标识、预设where标识分别与解析文本中的标识信息进行匹配,得到的select子句为selectclause:selectcustomer_name;where子句为whereclause:wherebalance>3000。其中,select子句包含第一字段为customer_name,where子句包含第二字段为balance。

s52:从表数据库中查询包含第一字段和第二字段的目标表名,并基于目标表名生成from子句。

在本发明实施例中,根据步骤s51获取的第一字段和第二字段,从表数据库中查询包含第一字段和第二字段的数据表,将该数据表的表名确定为目标表名,并将目标数据表名导入到预设目标库中进行from子句生成处理,得到处理后的from子句。

其中,表数据库中包含不同的数据表及数据表对应的表名。

预设目标库是指专门用于根据目标数据表名生成from子句的处理数据库。

本实施例中,通过利用预设select标识、预设where标识分别与解析文本中的标识信息进行匹配的方式,确定select子句和where子句,在根据select子句包含的第一字段和where字段包含的第二字段,从表数据库中查询包含第一字段和第二字段的目标表名,并基于目标表名生成from子句。由于sql是基于select子句与、where子句和from子句构成,通过先获取select子句与、where子句和from子句的方式,能够有效提高sql生成的准确性。

在一实施例中,如图5所示,步骤s52,即从表数据库中查询包含第一字段和第二字段的目标表名,并基于目标表名生成from子句包括如下步骤:

s521:利用第一字段、第二字段分别与表数据库中每个数据表包含的描述信息进行匹配,其中,表数据库包含不同的数据表,且每个数据表包含对应的表名和不同的描述信息。

在本发明实施例中,直接利用将第一字段、第二字段分别与表数据库中每个数据表包含的描述信息进行匹配,其中,表数据库包含不同的数据表,且每个数据表包含对应的表名和不同的描述信息。

s522:若表数据库中存在分别与第一字段、第二字段相匹配的描述信息的数据表,则将该数据表对应的表名确定为目标表名。

在本发明实施例中,根据步骤s521中利用将第一字段、第二字段分别与描述信息进行匹配的方式,若经过匹配得到表数据库中存在分别与第一字段、第二字段相匹配的描述信息的数据表,表示该数据表包含第一字段和第二字段,并将该数据表对应的表名确定为目标表名。

例如,表数据库中存在数据表名分别为a和b的数据表,a包含的描述信息为a1、a2、和a3,b包含的描述信息为b1、b2和b3,若第一字段为a1,第二字段为a2,将第一字段和第二字段分别与描述信息进行匹配,得到a中存在分别与第一字段、第二字段相匹配的描述信息,并将a确定为目标表名。

s523:若表数据库中未存在分别与第一字段、第二字段相匹配的描述信息的数据表,则将与第一字段相匹配的描述信息对应的数据表确定为第一数据表,将与第二字段相匹配的描述信息对应的数据表确定为第二数据表。

在本发明实施例中,根据步骤s521中利用将第一字段、第二字段分别与描述信息进行匹配的方式,若表数据库中未存在分别与第一字段、第二字段相匹配的描述信息的数据表,表示没有数据表同时包含第一字段和第二字段;若表数据库中存在与第一字段相匹配的描述信息的数据表,则表示该数据表包含第一字段,并将该数据表确定为第一数据表;若表数据库中存在与第二字段相匹配的描述信息的数据表,则表示该数据表包含第二字段,并将该数据表确定为第二数据表。

s524:从预设日志库中获取第一数据表和第二数据表之间存在关联关系的数据表作为关联数据表。

具体地,根据步骤s523获取的第一数据表和第二数据表,从预设日志库中查询基于第一数据表和第二数据表之间存在关联关系的数据表,并将查询到的数据表确定关联数据表。

其中,预设日志库是指专门用于记录不同数据表之间存在关联关系的数据表的数据库。

s525:将第一数据表对应的表名、第二数据表对应的表名和关联数据表对应的表名存入到目标表名清单中。

具体地,由于表数据库包含不同的数据表,且每个数据表包含对应的表名,故直接从表数据库中获取第一数据表对应的表名、第二数据表对应的表名和关联数据表对应的表名,并将第一数据表对应的表名、第二数据表对应的表名和关联数据表对应的表名存入到目标表名清单中。

s526:将目标表名清单中的表名导入到预设目标库中进行from子句生成处理,得到from子句。

具体地,通过直接将目标表名清单中的表名导入到预设目标库中进行from子句生成处理,输出from子句。

本实施例中,通过将第一字段、第二字段分别与表数据库中的每个数据表包含的描述信息进行匹配,若匹配到分别与第一字段、第二字段相匹配的描述信息的数据表,则将该数据表对应的表名确定为目标表名,若未匹配到分别与第一字段、第二字段相匹配的描述信息的数据表,则将与第一字段相匹配的描述信息对应的数据表确定为第一数据表,将与第二字段相匹配的描述信息对应的数据表确定为第二数据表,获取第一数据表和第二数据表之间存在关联关系的数据表作为关联数据表,并根据第一数据表的表名、第二数据表的表名和关联数据表的表名生成from子句。由于from子句包含sql查询所需的所有表名,故通过获取相关数据表的表名的方式,可以保证from子句生成的准确性,进一步提高后续利用from进行生成sql的准确性。

在一实施例中,如图6所示,步骤s1之前,该基于自然语言的结构化查询语言转换方法还包括如下步骤:

s7:从预设音频库中获取音频数据。

具体地,通过直接从预设音频库中获取音频数据。其中,预设音频库是指专门用于存储音频数据的数据库。

s8:通过对音频数据进行解码分析,得到音频数据对应的文字和每个文字对应的时间点。

在本发明实施例中,解码分析是指将音频数据分析成文字数据,且文字数据包含文字及文字对应的时间点。通过将音频数据输入到预设解码端口中,预设解码端口检测到音频数据后,将直接对音频数据按照用户预先选定的语言类型进行解码分析处理,将音频数据翻译成音频数据对应的文字及每个文字对应的时间点,并将每个文字和每个文字对应的时间点进行输出。

其中,预设解码端口是指专门用于将音频数据转换成文字数据的处理端口,该预设解码端口可以将音频数据转换成用户所需的语言文字类型对应的文字,且语言文字类型包括中文、英文、日文、韩文和阿拉伯语等,优先地,本实施例所需转换的语言文字类型为中文。

例如,假设一个音频数据的总时长为“00:02:30”,通过将该音频数据导入到预设解码端口中进行解码分析后,得到的文字中包括“我”、“的”、“名”和“字”等,这些文字对应的时间点分别为,文字“我”对应的时间点为“00:00:08”,文字“的”对应的时间点为“00:00:98”,文字“名”对应的时间点为“00:01:30”,以及文字“字”对应的时间点为“00:02:00”。

需要说明的是,为了便于用户查看,用户还可以在预设解码端口中,将转换得到的文字进行格式设置,文字格式设置具体可以包括但不限于文字的字体、大小和行间距等,此处不做限制。

s9:将每个文字按照时间点的先后顺序进行组合,得到自然语言文本。

具体地,根据步骤s8得到文字及每个文字对应的时间点,将每个文字对应的时间点进行比较,选取时间点最先的文字排在首位,选取时间点次先的文字排在第二位,以此类推的方式对所有文字进行排列组合,并将组合后的文字作为自然语言文本。

例如,如步骤s8中的例子所述,将所有的文字按照时间点的先后顺序进行组合后,得到的自然语言文本为我的名字。

本实施例中,通过对获取到的音频数据进行解码分析,得到音频数据对应的文字及文字对应的时间点,再根据时间点对所有文字进行组合得到自然语言文本。通过将音频数据先解析成文字,再根据文字对应的时间点进行组合的方式,能够实现准确对音频数据进行文字翻译,提高后续利用自然语言文本进行转换sql的准确性。

应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。

在一实施例中,提供一种基于自然语言的结构化查询语言转换装置,该基于自然语言的结构化查询语言转换装置与上述实施例中基于自然语言的结构化查询语言转换方法一一对应。如图7所示,该基于自然语言的结构化查询语言转换装置包括获取模块71,分词模块72,映射模块73,解析模块74,子句确定模块75和输出模块76。各功能模块详细说明如下:

获取模块71,用于从预设数据库中获取自然语言文本;

分词模块72,用于对自然语言文本进行分词处理,得到自然语言分词;

映射模块73,用于通过词汇分析端对自然语言分词进行映射的方式,获取目标文本;

解析模块74,用于利用预设语法解析器对目标文本进行语法解析,生成解析文本;

子句确定模块75,用于将预设select标识、预设where标识分别与解析文本中的标识信息进行匹配,并根据得到的匹配结果,确定select子句、where子句与from子句;

输出模块76,用于将select子句、where子句与from子句导入到预设目标端口中进行结构化查询语言生成处理,输出结构化查询语言。

进一步地,分词模块72包括:

设置子模块,用于根据预设要求设置字符串索引值和分词的最大长度值;

提取子模块,用于根据字符串索引值和最大长度值,从自然语言文本中提取目标字符;

第一匹配子模块,用于将目标字符与预设字典库中的合法字符进行匹配;

第一匹配成功子模块,用于若匹配成功,则将目标字符确定为自然语言分词,并将字符串索引值更新为当前字符串索引值加上当前最大长度值,基于更新后的字符串索引值和最大长度值,从自然语言文本中提取目标字符进行匹配,直到完成对自然语言文本的分词操作为止;

第一匹配失败子模块,用于若匹配失败,则将最大长度值进行递减,并基于更新后的最大长度值和字符串索引值从自然语言文本中提取目标字符进行匹配,直到完成对自然语言文本的分词操作为止。

进一步地,映射模块73包括:

第二匹配子模块,用于将自然语言分词与词汇分析端中的标识信息进行匹配,其中,词汇分析端包含标识信息及每个标识信息对应的目标单词;

第二匹配成功子模块,用于若自然语言分词与标识信息相匹配,则将自然语言分词映射为标识信息对应的目标单词;

第二匹配失败子模块,用于若自然语言分词与标识信息不匹配,则将自然语言分词映射为空符号;

目标文本获取子模块,用于根据自然语言分词在自然语言文本中的顺序,对映射后的所有自然语言分词进行组合,得到目标文本。

进一步地,子句确定模块75包括:

标识匹配子模块,用于利用预设select标识、预设where标识分别与解析文本中的标识信息进行匹配,将与预设select标识相同的标识信息对应的标准子句确定为select子句,将与预设where标识相同的标识信息对应的标准子句确定为where子句,其中,select子句包含第一字段,where字段包含第二字段;

查询子模块,用于从表数据库中查询包含第一字段和第二字段的目标表名,并基于目标表名生成from子句;

进一步地,查询子模块包括:

第三匹配子模块,用于利用第一字段、第二字段分别与表数据库中每个数据表包含的描述信息进行匹配,其中,表数据库包含不同的数据表,且每个数据表包含对应的表名和不同的描述信息;

第三匹配成功子模块,用于若表数据库中存在分别与第一字段、第二字段相匹配的描述信息的数据表,则将该数据表对应的表名确定为目标表名;

第三匹配失败子模块,用于若表数据库中未存在分别与第一字段、第二字段相匹配的描述信息的数据表,则将与第一字段相匹配的描述信息对应的数据表确定为第一数据表,将与第二字段相匹配的描述信息对应的数据表确定为第二数据表;

关联数据表确定子模块,用于从预设日志库中获取第一数据表和第二数据表之间存在关联关系的数据表作为关联数据表;

存储子模块,用于将第一数据表对应的表名、第二数据表对应的表名和关联数据表对应的表名存入到目标表名清单中;

from子句生成子模块,用于将目标表名清单中的表名导入到预设目标库中进行from子句生成处理,得到from子句。

进一步地,基于自然语言的结构化查询语言转换装置还包括:

音频获取模块,用于从预设音频库中获取音频数据;

解码模块,用于通过对音频数据进行解码分析,得到音频数据对应的文字和每个文字对应的时间点;

组合模块,用于将每个文字按照时间点的先后顺序进行组合,得到自然语言文本。

本申请的一些实施例公开了计算机设备。具体请参阅图8,为本申请的一实施例中计算机设备90基本结构框图。

如图8中所示意的,所述计算机设备90包括通过系统总线相互通信连接存储器91、处理器92、网络接口93。需要指出的是,图8中仅示出了具有组件91-93的计算机设备90,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。其中,本技术领域技术人员可以理解,这里的计算机设备是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(applicationspecificintegratedcircuit,asic)、可编程门阵列(field-programmablegatearray,fpga)、数字处理器(digitalsignalprocessor,dsp)、嵌入式设备等。

所述计算机设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述计算机设备可以与用户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互。

所述存储器91至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁性存储器、磁盘、光盘等。在一些实施例中,所述存储器91可以是所述计算机设备90的内部存储单元,例如该计算机设备90的硬盘或内存。在另一些实施例中,所述存储器91也可以是所述计算机设备90的外部存储设备,例如该计算机设备90上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。当然,所述存储器91还可以既包括所述计算机设备90的内部存储单元也包括其外部存储设备。本实施例中,所述存储器91通常用于存储安装于所述计算机设备90的操作系统和各类应用软件,例如所述基于自然语言的结构化查询语言转换方法的程序代码等。此外,所述存储器91还可以用于暂时地存储已经输出或者将要输出的各类数据。

所述处理器92在一些实施例中可以是中央处理器(centralprocessingunit,cpu)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器92通常用于控制所述计算机设备90的总体操作。本实施例中,所述处理器92用于运行所述存储器91中存储的程序代码或者处理数据,例如运行所述基于自然语言的结构化查询语言转换方法的程序代码。

所述网络接口93可包括无线网络接口或有线网络接口,该网络接口93通常用于在所述计算机设备90与其他电子设备之间建立通信连接。

本申请还提供了另一种实施方式,即提供一种计算机可读存储介质,所述计算机可读存储介质存储有自然语言文本信息录入程序,所述自然语言文本信息录入程序可被至少一个处理器执行,以使所述至少一个处理器执行上述任意一种基于自然语言的结构化查询语言转换方法的步骤。

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

最后应说明的是,显然以上所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例,附图中给出了本申请的较佳实施例,但并不限制本申请的专利范围。本申请可以以许多不同的形式来实现,相反地,提供这些实施例的目的是使对本申请的公开内容的理解更加透彻全面。尽管参照前述实施例对本申请进行了详细的说明,对于本领域的技术人员来而言,其依然可以对前述各具体实施方式所记载的技术方案进行修改,或者对其中部分技术特征进行等效替换。凡是利用本申请说明书及附图内容所做的等效结构,直接或间接运用在其他相关的技术领域,均同理在本申请专利保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1