SQL语句转换模型的生成方法及装置
文献发布时间:2023-06-19 11:39:06
技术领域
本发明涉及数据处理技术领域,尤其涉及SQL语句转换模型的生成方法及装置。
背景技术
本部分旨在为权利要求书中陈述的本发明实施例提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
在现实生活中,有许许多多的数据库,存储着各行各业的信息,比如学校的选课信息、成绩信息,公司的账务信息、人员流动信息等。银行业务人员在日常工作中经常需要获取业务系统中的各类数据进行业务分析,目前的主流方法是在业务系统上预留一个SQL查询功能,由银行业务人员提交SQL语句进行数据查询。
SQL是一种数据库查询语言,具有极大的灵活性和强大的功能,但是对银行业务人员的技能要求较高,需要银行业务人员针对不同的数据库和应用场景,编写大量的保证正确率的SQL语句实现数据查询,复杂性高,可拓展性差,使得数据查询的效率低。
Text-to-SQL是一项转化自然语言描述为SQL查询语句的技术。举个例子:当我们询问智能助手“贾樟柯导演是在哪出生的啊?”,Text-to-SQL模型就会先根据问句解析出SQL语句“SELECT birth_city FROM director WHERE name="贾樟柯"”,再对数据库执行该命令,最后向用户返回查询结果“山西省汾阳市”。
由于银行业务涉及多种类型的金融场景,现有的Text-to-SQL技术难以精确的识别金融场景词汇,导致数据查询的准确性较低。
针对上述问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供一种SQL语句转换模型的生成方法,用以提高数据查询的效率和准确性,该方法包括:
根据银行业务人员历史查询的SQL语句,确定历史查询的SQL语句的频繁项集;
根据历史查询的SQL语句的频繁项集,确定频繁项集的文本语句;
将频繁项集的文本语句与金融场景词汇进行匹配,对频繁项集的文本语句进行分词处理;
将历史查询的SQL语句,以及频繁项集的文本语句的分词处理结果作为训练数据,对SQL语句转换模型进行训练,得到训练好的SQL语句转换模型,其中,SQL语句转换模型包括:BERT模型和LSTM模型,SQL语句转换模型用于在银行业务人员输入任意文本语句时,输出该任意文本语句对应的SQL语句。
本发明实施例提供一种SQL语句转换模型的生成装置,用以提高数据查询的效率和准确性,该装置包括:
频繁项集确定模块,用于根据银行业务人员历史查询的SQL语句,确定历史查询的SQL语句的频繁项集;
文本语句确定模块,用于根据历史查询的SQL语句的频繁项集,确定频繁项集的文本语句;
分词处理模块,用于将频繁项集的文本语句与金融场景词汇进行匹配,对频繁项集的文本语句进行分词处理;
训练模块,用于将历史查询的SQL语句,以及频繁项集的文本语句的分词处理结果作为训练数据,对SQL语句转换模型进行训练,得到训练好的SQL语句转换模型,其中,SQL语句转换模型包括:BERT模型和LSTM模型,SQL语句转换模型用于在银行业务人员输入任意文本语句时,输出该任意文本语句对应的SQL语句。
本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述SQL语句转换模型的生成方法。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有执行SQL语句转换模型的生成方法的计算机程序。
本发明实施例中,根据银行业务人员历史查询的SQL语句,确定历史查询的SQL语句的频繁项集;根据历史查询的SQL语句的频繁项集,确定频繁项集的文本语句;将频繁项集的文本语句与金融场景词汇进行匹配,对频繁项集的文本语句进行分词处理,进而通过频繁项集提取和金融场景词汇匹配,提取出了高精度的、能够反映金融场景特性的训练数据;将历史查询的SQL语句,以及频繁项集的文本语句的分词处理结果作为训练数据,对SQL语句转换模型进行训练,得到训练好的SQL语句转换模型,SQL语句转换模型包括:BERT模型和LSTM模型,SQL语句转换模型用于在银行业务人员输入任意文本语句时,输出该任意文本语句对应的SQL语句,基于高精度的、能够反映金融场景特性的训练数据训练BERT模型和LSTM模型,实现了自然语言向SQL语句的自动转换,提高了数据查询的效率和准确性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为本发明实施例中SQL语句转换模型的生成方法流程的示意图;
图2为图1中步骤101具体流程的示意图;
图3为图1中步骤103的具体流程的示意图;
图4为图1中步骤104的具体流程的示意图;
图5为本发明实施例中SQL语句转换模型的生成装置结构的示意图;
图6为图5中频繁项集确定模块具体结构的示意图;
图7为图5中分词处理模块具体结构的示意图;
图8为图5中训练模块具体结构的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本领域技术人员知道,本发明的实施方式可以实现为一种系统、装置、方法或计算机程序产品。因此,本发明公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
本发明实施例提供一种SQL语句转换模型的生成方法,用以提高数据查询的效率和准确性,图1为本发明实施例中SQL语句转换模型的生成方法流程的示意图,如图1所示,该方法包括:
步骤101:根据银行业务人员历史查询的SQL语句,确定历史查询的SQL语句的频繁项集;
步骤102:根据历史查询的SQL语句的频繁项集,确定频繁项集的文本语句;
步骤103:将频繁项集的文本语句与金融场景词汇进行匹配,对频繁项集的文本语句进行分词处理;
步骤104:将历史查询的SQL语句,以及频繁项集的文本语句的分词处理结果作为训练数据,对SQL语句转换模型进行训练,得到训练好的SQL语句转换模型,其中,SQL语句转换模型包括:BERT模型和LSTM模型,SQL语句转换模型用于在银行业务人员输入任意文本语句时,输出该任意文本语句对应的SQL语句。
如图1所示,本发明实施例中,根据银行业务人员历史查询的SQL语句,确定历史查询的SQL语句的频繁项集;根据历史查询的SQL语句的频繁项集,确定频繁项集的文本语句;将频繁项集的文本语句与金融场景词汇进行匹配,对频繁项集的文本语句进行分词处理,进而通过频繁项集提取和金融场景词汇匹配,提取出了高精度的、能够反映金融场景特性的训练数据;将历史查询的SQL语句,以及频繁项集的文本语句的分词处理结果作为训练数据,对SQL语句转换模型进行训练,得到训练好的SQL语句转换模型,SQL语句转换模型包括:BERT模型和LSTM模型,SQL语句转换模型用于在银行业务人员输入任意文本语句时,输出该任意文本语句对应的SQL语句,基于高精度的、能够反映金融场景特性的训练数据训练BERT模型和LSTM模型,实现了自然语言向SQL语句的自动转换,提高了数据查询的效率和准确性。
图2为图1中步骤101具体流程的示意图,如图2所示,在一个实施例中,步骤101中,根据银行业务人员历史查询的SQL语句,确定历史查询的SQL语句的频繁项集,可以包括:
步骤201:基于高斯混合模型,对银行业务人员历史查询的SQL语句进行聚类处理;
步骤202:基于高斯朴素贝叶斯模型,对聚类处理后的历史查询的SQL语句进行分类处理;
步骤203:根据分类处理后的历史查询的SQL语句,基于FP-Growth算法,确定历史查询的SQL语句的频繁项集。
具体实施时,步骤101中,首先可以从银行的生产环境数据库(例如Mysql),获取银行业务人历史查询的SQL语句,可以是近三年的查询历史,然后,基于高斯混合模型(Gaussian Mixture Model),对银行业务人员历史查询的SQL语句进行聚类处理,接着,基于高斯朴素贝叶斯模型,对聚类处理后的历史查询的SQL语句进行分类处理,最后,对分类处理后的历史查询的SQL语句,基于FP-Growth算法(频繁模式挖掘),提取历史查询的SQL语句的频繁项集,在确定历史查询的SQL语句的频繁项集可以设置阈值,比如1000条,这样通过聚类处理、分类处理以及频繁项集的提取,能够得到精确性较高的频繁项集。
步骤102中,对历史查询的SQL语句的频繁项集,基于SQL语法规则,经过自动匹配标注或数据库技术人员人工标注,将历史查询的SQL语句的频繁项集形成一系列自然语言形式的文本语句,并将文本语句发送至银行业务人员进行核对校验。
图3为图1中步骤103的具体流程的示意图,如图3所示,在一个实施例中,步骤103中,将频繁项集的文本语句与金融场景词汇进行匹配,对频繁项集的文本语句进行分词处理,可以包括:
步骤301:将频繁项集的文本语句输入金融场景词汇库,输出频繁项集的文本语句中包含的金融场景词汇,其中,金融场景词汇库中存储有多种金融场景的词汇;
步骤302:根据频繁项集的文本语句中包含的金融场景词汇,基于隐马尔可夫模型,对频繁项集的文本语句进行分词处理。
具体实施时,可以首先根据业界标准金融词库、具有银行业务特色的命名实体数据集(比如“普惠专区”)和银行业务数据库相关数据字典(与数据库表结构基本信息有关)的多种金融场景的词汇建立金融场景词汇库,然后将频繁项集的文本语句输入金融场景词汇库,与金融场景词汇进行匹配,输出频繁项集的文本语句中包含的金融场景词汇,接着,使用隐马尔科夫模型(Hidden Markov Model)对频繁项集的文本语句进行分词处理,这样能够得到反映金融场景特性的训练数据,为后续训练模型提供可靠的数据基础。
图4为图1中步骤104的具体流程的示意图,如图4所示,在一个实施例中,步骤104中,将历史查询的SQL语句,以及频繁项集的文本语句的分词处理结果作为训练数据,对SQL语句转换模型进行训练,得到训练好的SQL语句转换模型,可以包括:
步骤401:设置BERT模型和LSTM模型中各个参数的初始化值以及停止迭代条件;
步骤402:循环执行如下步骤,直至满足停止迭代条件,得到训练好的SQL语句转换模型:
步骤403:将频繁项集的文本语句的分词处理结果输入BERT模型,输出频繁项集的文本语句的分词处理结果的编码向量;
步骤404:将频繁项集的文本语句的分词处理结果的编码向量输入LSTM模型,基于SQL语法,输出编码向量对应的SQL语句;
步骤405:将编码向量对应的SQL语句与历史查询的SQL语句进行比较;
步骤406:根据比较结果,更新BERT模型和LSTM模型中各个参数值;
步骤407:对更新参数值后的BERT模型和LSTM模型,重新输入频繁项集的文本语句的分词处理结果。
在一个实施例中,SQL语法至少包括:Mysql语法、Oracle语法和PostgreSql语法。
具体实施时,Text-to-SQL系统能够将自然语言描述转化成对应的SQL查询语句,这项技术能够有效地辅助人们对海量的数据库进行查询。因此,该项研究引起了工业界和学术界的广泛关注。BERT是一个语言表征模型(language representation model),通过超大数据、巨大模型、和极大的计算开销训练而成,在11个自然语言处理的任务中取得了最优(state-of-the-art,SOTA)结果。BERT为新语言表示模型,它代表Transformer的双向编码器表示。与最近的其他语言表示模型不同,BERT旨在通过联合调节所有层中的上下文来预先训练深度双向表示。因此,预训练的BERT表示可以通过一个额外的输出层进行微调,适用于广泛任务的最先进模型的构建,比如问答任务和语言推理,无需针对具体任务做大幅架构修改。
本发明实施例中,首先需要设置BERT模型和LSTM模型中各个参数的初始化值以及停止迭代条件,然后开始训练模型,具体训练过程是:将频繁项集的文本语句的分词处理结果输入BERT模型,输出频繁项集的文本语句的分词处理结果的编码向量,LSTM模型加载编码向量以及SQL语法,输出编码向量对应的SQL语句,SQL语法可以包括:Mysql语法、Oracle语法和PostgreSql语法,还可以包括其他数据库语法,本发明不以此为限定,通过配置多种SQL语法,可以扩大SQL语句转换模型的适用范围,具有高可拓展性。
在LSTM模型输出编码向量对应的SQL语句后,可以将编码向量对应的SQL语句与历史查询的SQL语句进行比较验证,对比较结果进行分析,更新BERT模型和LSTM模型中各个参数值,最后,对更新参数值后的BERT模型和LSTM模型,重新输入频繁项集的文本语句的分词处理结果,循环执行上述训练过程,直至直至满足停止迭代条件,得到训练好的SQL语句转换模型。
还可以将历史查询的SQL语句作为测试数据和验证数据,利用测试数据对训练好的SQL语句转换模型进行测试,利用验证数据对测试后的SQL语句转换模型进行验证,得到最终的SQL语句转换模型。
在银行业务人员输入任意文本语句时,SQL语句转换模型可以输出该任意文本语句对应的SQL语句,并执行和返回查询结果,进而实现了自然语言向SQL语句的自动转换,以及数据自动查询,提高了数据查询的效率和准确性,极大地方便银行业务工作,提高办公效率。
应当注意,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
基于同一发明构思,本发明实施例中还提供了一种SQL语句转换模型的生成装置,如下面的实施例。由于SQL语句转换模型的生成装置解决问题的原理与SQL语句转换模型的生成方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
本发明实施例提供一种SQL语句转换模型的生成装置,用以提高数据查询的效率和准确性,图5为本发明实施例中SQL语句转换模型的生成装置结构的示意图,如图5所示,该装置包括:
频繁项集确定模块01,用于根据银行业务人员历史查询的SQL语句,确定历史查询的SQL语句的频繁项集;
文本语句确定模块02,用于根据历史查询的SQL语句的频繁项集,确定频繁项集的文本语句;
分词处理模块03,用于将频繁项集的文本语句与金融场景词汇进行匹配,对频繁项集的文本语句进行分词处理;
训练模块04,用于将历史查询的SQL语句,以及频繁项集的文本语句的分词处理结果作为训练数据,对SQL语句转换模型进行训练,得到训练好的SQL语句转换模型,其中,SQL语句转换模型包括:BERT模型和LSTM模型,SQL语句转换模型用于在银行业务人员输入任意文本语句时,输出该任意文本语句对应的SQL语句。
图6为图5中频繁项集确定模块具体结构的示意图,如图6所示,在一个实施例中,频繁项集确定模块01包括:
聚类处理单元011,用于基于高斯混合模型,对银行业务人员历史查询的SQL语句进行聚类处理;
分类处理单元012,用于基于高斯朴素贝叶斯模型,对聚类处理后的历史查询的SQL语句进行分类处理;
频繁项集提取单元013,用于根据分类处理后的历史查询的SQL语句,基于FP-Growth算法,确定历史查询的SQL语句的频繁项集。
图7为图5中分词处理模块具体结构的示意图,如图7所示,分词处理模块03包括:
金融场景词汇匹配单元031,用于将频繁项集的文本语句输入金融场景词汇库,输出频繁项集的文本语句中包含的金融场景词汇,其中,金融场景词汇库中存储有多种金融场景的词汇;
分词处理单元032,用于根据频繁项集的文本语句中包含的金融场景词汇,基于隐马尔可夫模型,对频繁项集的文本语句进行分词处理。
图8为图5中训练模块具体结构的示意图,如图8所示,在一个实施例中,训练模块04包括:
初始化单元041,用于设置BERT模型和LSTM模型中各个参数的初始化值以及停止迭代条件;
判断单元042,用于循环执行如下步骤,直至满足停止迭代条件,得到训练好的SQL语句转换模型:
BERT模型单元043,用于将频繁项集的文本语句的分词处理结果输入BERT模型,输出频繁项集的文本语句的分词处理结果的编码向量;
LSTM模型单元044,用于将频繁项集的文本语句的分词处理结果的编码向量输入LSTM模型,基于SQL语法,输出编码向量对应的SQL语句;
比较单元045,用于将编码向量对应的SQL语句与历史查询的SQL语句进行比较;
更新单元046,用于根据比较结果,更新BERT模型和LSTM模型中各个参数值;
迭代单元047,用于对更新参数值后的BERT模型和LSTM模型,重新输入频繁项集的文本语句的分词处理结果。
在一个实施例中,SQL语法至少包括:Mysql语法、Oracle语法和PostgreSql语法。
本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述SQL语句转换模型的生成方法。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有执行SQL语句转换模型的生成方法的计算机程序。
下面举一个具体的例子,以便于理解本发明如何实施。
第一步:从银行的生产环境数据库Mysql,获取银行业务人近三年历史查询的SQL语句;
第二步:基于高斯混合模型,对银行业务人员历史查询的SQL语句进行聚类处理;
第三步:基于高斯朴素贝叶斯模型,对聚类处理后的历史查询的SQL语句进行分类处理;
第四步:对分类处理后的历史查询的SQL语句,基于FP-Growth算法,提取历史查询的SQL语句的频繁项集;
第五步:对历史查询的SQL语句的频繁项集,基于SQL语法规则,经过自动匹配标注或数据库技术人员人工标注,将历史查询的SQL语句的频繁项集形成一系列自然语言形式的文本语句,并将文本语句发送至银行业务人员进行核对校验;
第六步:预先根据业界标准金融词库、具有银行业务特色的命名实体数据集和银行业务数据库相关数据字典的多种金融场景的词汇建立金融场景词汇库,将频繁项集的文本语句输入金融场景词汇库,与金融场景词汇进行匹配,输出频繁项集的文本语句中包含的金融场景词汇;
第七步:基于隐马尔科夫模型对频繁项集的文本语句进行分词处理;
第八步:设置BERT模型和LSTM模型中各个参数的初始化值以及停止迭代条件;
第九步:将频繁项集的文本语句的分词处理结果输入BERT模型,输出频繁项集的文本语句的分词处理结果的编码向量;
第十步:LSTM模型加载编码向量以及SQL语法,输出编码向量对应的SQL语句;
第十一步:将编码向量对应的SQL语句与历史查询的SQL语句进行比较验证,判断是否满足停止迭代条件,在满足停止迭代条件时结束,在不满足停止迭代条件时,执行第十二步:
第十二步:对比较结果进行分析,更新BERT模型和LSTM模型中各个参数值;
第十三步:对更新参数值后的BERT模型和LSTM模型,重新输入频繁项集的文本语句的分词处理结果,重复执行上述第九步至第十一步。
综上所述,本发明实施例提供的SQL语句转换模型的生成方法及装置具有如下优点:
(1)根据银行业务人员历史查询的SQL语句,确定历史查询的SQL语句的频繁项集;根据历史查询的SQL语句的频繁项集,确定频繁项集的文本语句,通过聚类处理、分类处理以及频繁项集的提取,能够得到精确性较高的频繁项集;将频繁项集的文本语句与金融场景词汇进行匹配,对频繁项集的文本语句进行分词处理,提取出了高精度的、能够得到反映金融场景特性的训练数据,为后续训练模型提供可靠的数据基础;
(2)将历史查询的SQL语句,以及频繁项集的文本语句的分词处理结果作为训练数据,对SQL语句转换模型进行训练,得到训练好的SQL语句转换模型,SQL语句转换模型包括:BERT模型和LSTM模型,SQL语句转换模型用于在银行业务人员输入任意文本语句时,输出该任意文本语句对应的SQL语句,基于高精度的、能够反映金融场景特性的训练数据训练BERT模型和LSTM模型,融合了金融场景词汇和SQL语法,实现了自然语言向SQL语句的自动转换,提高了数据查询的效率和准确性。
(3)通过配置多种SQL语法,扩大了SQL语句转换模型的适用范围,具有高可拓展性。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
- SQL语句转换模型的生成方法及装置
- 漫画风格图像转换模型的训练方法、图像生成方法及装置