本发明专利技术提供一种基于使用场景的SQL语句智能补全方法,属于数据处理技术领域,在用户输入层与数据库语法解析层(PARSE)之间添加了一个自然语言处理模型,采用当前处于业界前沿的BERT模型,通过用户持续地输入来学习并训练模型,当数据量足够大的时候,便可给出较为精准的基于用户使用场景的SQL语句预测及补全。
【技术实现步骤摘要】
一种基于使用场景的SQL语句智能补全方法
本专利技术涉及数据库中的数据处理技术,尤其涉及一种基于使用场景的SQL语句智能补全方法。
技术介绍
利用已有的SQL语法和数据库中各种表单的数据进行SQL补全在应用环境中是常见的,也是较为必要的,因为可以省去输入复杂名称及拼写错误的麻烦。目前应用环境中常见的SQL补全方法基本包含以下几种功能:1.根据SQL输入历史进行提示:当用户输入完整SQL语句的前几个单词时,会在输入历史中进行检索,并给出使用频次最高的几个选项供用户进行选择。2.根据表单中的数据进行补全:例如用户想要向一张表中的某几列插入数据,例如insertintotest(id,name,age)values...当表中有很多列属性的时候,手动输入无疑是费力并且容易出错误的,该方法可以将表单中的列全部呈现给用户,供用户选择。3.内置代码段提示:该方法通过提前为许多常用SQL语法定义缩写,来实现简便用户输入的目的。例如当用户输入ssf,该方法就会给出SELECT*FROM的提示,用户可以自定义缩写来实现个性化的需求来弥补原生方法的不足。以上所介绍的目前应用环境中使用频率较高的SQL补全方法,虽然为用户提供了便利,但并没有做到真正的智能补全。例如第一点,根据SQL输入历史进行提示,输入历史中使用频率最高的提示语句并不一定是用户当前所需要的。举例来说,假如某个用户在某一时间输入了很高频次的某一SQL语句,但当该用户结束了这段时间的工作并开启新的工作任务时,那么之前的输入历史的作用便很小了,甚至可以说是一种累赘;例如第二点,根据表单中的数据进行补全,当表单中有数量极多的列的时候,每次全部显示出来供用户选择也是体验略差的一种方案。
技术实现思路
为了解决以上技术问题,本专利技术提出了一种基于使用场景的SQL语句智能补全方法,基于用户上下文,提供了更为智能的补全选择,从而达到提示更为精准的目的。该系统的核心在于使用自然语言处理技术,基于用户的SQL语句输入和原生SQL语法构建并训练一个语言模型,从而提供精准的SQL语句补全方案。本专利技术的技术方案是:一种基于使用场景的SQL语句智能补全方法,在用户输入层与数据库语法解析层(PARSE)之间添加了一个自然语言处理模型,采用当前处于业界前沿的BERT模型,通过用户持续地输入来学习并训练模型,当数据量足够大的时候,便可给出较为精准的基于用户使用场景的SQL语句预测及补全。步骤如下:S1.获取语料。语料便是自然语言处理任务所研究的内容,通常用一个文本集合作为语料库,语料库来源在本系统中便是所有原生的SQL语法以及用户的SQL语句输入。S2.语料预处理未被处理过的语料是不能直接拿来使用的,语料预处理包括四个步骤:1.语料清洗:删掉噪音数据,只保留有用数据。采用编写脚本或者代码批处理SQL语句,规则提取内容。2.分词:将SQL语句分解成逐个词语,由于SQL语句中有规定的格式,因此可采用基于字符串匹配的粉刺方法。3.词性标注:给分词后的词语逐个打标签,例如select、insert等词语属于标准SQL语法,数据表名、列名属于用户数据。词性标注的目的是为了在训练模型时帮助推理接下来的SQL语句。4.去停用词:去掉对文本特征没有作用的字词,比如标点符号等。S3.特征工程:此步骤旨在将S2中得到的词语表示成计算机可以识别并计算的类型,一般转换为向量,作为该词语的特征。由于SQL语句中基本都是字符串和数字,此处可使用Word2Vec工具进行特征提取。S4.特征选择:此步骤作用是选择S3得到的合适的、表达能力强的特征数据,例如SELECT、INSERT等特征数据作为原生SQL语法中的词语,表达能力并不强,因此不作为重点数据进行考量和计算。S5.模型训练:此步骤是本专利技术的核心,在确定模型阶段,本专利技术选择BERT模型作为基础,BERT模型是自然语言处理领域近期最重要的进展,刷新了多项机器学习记录,为自然语言处理带来了里程碑式的改变。尤其是在“推理”方向,尤为适合SQL语句的预测及智能补全。其基本原理请见“图面说明”阶段。模型训练阶段首先使用所有原生SQL语法进行训练,得到一个基本模型。在此基本模型的基础上,每当用户输入一句SQL语句,便首先将本条SQL语句传入该基本模型,经过上述步骤:语料预处理和特征选取提取,将特征数据放入模型进行训练。模型会学习这一时段用户的SQL语句使用习惯,从而生成一个“模拟使用场景”。随着数据量的增多,该模型会根据这些特征数据来调整参数,从而使计算结果越来越精准,较为准确地预测出用户的使用场景所需要的SQL语句。BERT模型适用于本专利技术的主要原因之一在于他的一个特征,NextSentencePrediction(下句预测)。在BERT的训练过程中,模型接收成对的句子作为输入,并且预测其中第二个句子是否在原始文档中也是后续句子。在训练期间,50%的输入对在原始文档中是前后关系,另外50%中是从语料库中随机组成的,并且是与第一句断开的。这正符合SQL语句的特征,SQL语句总是成对出现,例如INSERT操作后通常会跟一句SELECT。因此使用BERT模型可以大概率提高模型的精准程度。S6.评价指标训练过的模型不是完美的模型,模型也会犯错,需要指出其对错及修改的方向。在该专利技术中,如若用户多次未选取本系统给出的SQL预测语句,那么在模型中该语句的错误率便会上升,精度及精准度都会通过调整参数进行调整,从而继续训练得出令用户满意的结果。在此步骤可以选择F1衡量等手段进行评价指标。S7.SQL语句智能补全(模型应用)使用原生SQL语法训练得到的模型属于线下训练模型,这样的模型其精准度是远远不够的,所以需要将线下模型做线上部署,通过在线训练将模型持久化,提高其精准程度。在本专利技术中,用户的每一次输入SQL语句都是在帮助训练模型,使模型在多次训练中不断调整参数,训练自身。SQL语句补全并非只基于原生的SQL语法提供预测及补全,也不只基于用户的输入历史,而是根据自然语言处理技术,使用BERT模型,采用线下加线上模式的模型训练方法,达到基于上下文,也就是基于场景的SQL语句智能补全。将SQL预测补全与BERT模型相结合,使SQL语句智能补全系统在BERT模型的协助下变得更加精准。本专利技术的有益效果是相较于当前应用环境中的SQL补全方法,能给用户提供满意度更高的结果,其特点就在于“基于使用场景”。举例来说,某数据表名为test,其中有id,name,age,school,company这五列属性。在某一时段用户频繁的执行INSERTINTOtest(id,name,age)VALUES...;SELECT(id,name,age)FROMtest;这两条语句。如果使用当前应用环境中的SQL补全方法,只会为用户提供该表中的所有列作为选择,需要用户手动去选择这三列。使用本专利技术提本文档来自技高网...
【技术保护点】
1.一种基于使用场景的SQL语句智能补全方法,其特征在于,/n在用户输入层与数据库语法解析层之间添加BERT模型,通过用户持续地输入来学习并训练模型,即给出基于用户使用场景的SQL语句预测及补全。/n
【技术特征摘要】
1.一种基于使用场景的SQL语句智能补全方法,其特征在于,
在用户输入层与数据库语法解析层之间添加BERT模型,通过用户持续地输入来学习并训练模型,即给出基于用户使用场景的SQL语句预测及补全。
2.根据权利要求1所述的方法,其特征在于,
步骤如下:
S1、获取语料,语料是一个文本集,来源为原生SQL语法和用户自定义输入的SQL语句;
S2、语料预处理;
S3、特征工程;
S4、特征选择;
S5、模型训练;
S6、评价指标;
S7、SQL智能预测及补全。
3.根据权利要求2所述的方法,其特征在于,
所述语料预处理包括四个步骤:
1)语料清洗:删掉噪音数据;采用编写脚本或者代码批处理SQL语句,规则提取内容;
2)分词:将SQL语句分解成逐个词语;
3)词性标注:给分词后的词语逐个打标签;
4)去停用词:去掉对文本特征没有作用的字词。
4.根据权利要求2所述的方法,其特征在于,
所述特征工程:
将步骤S2中得到的词语表示成计算机可以识别并计算的类型;使用Word2Vec工...
【专利技术属性】
技术研发人员:王世航,季业,刘阳,陈明松,张豪,刘壮,
申请(专利权)人:山东汇贸电子口岸有限公司,
类型:发明
国别省市:山东;37
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。