一种将查询数据的人类自然语言自动生成sql语句的方法技术

技术编号:24613388 阅读:43 留言:0更新日期:2020-06-24 01:05
本发明专利技术公开了一种将查询数据的人类自然语言转为sql语句的方法。用户输入自然语句,对语句进行分词及去除停用词,然后进行自动表名解析,如果能获取表名则对分词并去掉停用词后的自然语言与获取到的表名做进一步处理,否则经过模糊匹配后反馈提示信息;获取表名后,根据元数据信息,判断是否多表关联,是则根据关联规则进行查询条件处理,否则直接进行单表查询条件处理;查询条件处理中分别对自然语言进行时间解析处理,并根据元数据信息进行查询字段解析、判断条件解析、级联查询解析、查询聚合解析处理;最后生成查询sql。本发明专利技术不需要人员对数据进行标注,减少人力资源的投入,降低人工成本的开支,解决机器学习导致的系统不可复用问题。

A method of automatically generating SQL statements by human natural language

【技术实现步骤摘要】
一种将查询数据的人类自然语言自动生成sql语句的方法
本专利技术涉及自然语言处理领域,尤其涉及一种将查询数据的人类自然语言自动生成sql语句的方法。
技术介绍
随着国家经济的发展,越来越多的系统投入使用,产生了大量数据。当非专业用户想浏览数据时,传统方式通常是将数据提前用图表的形式展现出来,并不能进行自由的查询浏览数据。目前市面上的语义转sql方式,通常是通过机器学习,采集大量的标注信息,通过长时间的学习以进行sql语句生成。这中间过程需要人员对大量数据进行标注,并且当新数据或者新系统接入时,通常也会再次进行标注以及进行长时间的机器学习,存在训练时间不可控、系统不可复用等问题。
技术实现思路
本专利技术的目的在于,针对上述问题,提出一种将查询数据的人类自然语言自动生成sql语句的方法,该方法不需要人员对数据进行标注,解决机器学习导致的系统不可复用问题。一种将查询数据的人类自然语言自动生成sql语句的方法,包括以下步骤:S1:用户输入查询数据的自然语句,对所述自然语句进行分词;S2:将分词后的自然语句去掉停用词,并识别标注名词和否定词;S3:对名词进行规则拼接,并与构建好的表名元数据信息进行匹配,获取对应表名,如果能获取则进入步骤S4,不能获取则进入步骤S5;S4:对分词并去掉停用词后的自然语言与获取到的表名做SQL生成处理;S41:根据表的元数据信息,判断获得的表是否有多表关联,是则对分词并去掉停用词后的自然语言根据关联嵌套规则进行条件解析,否则直接进行单表查询条件解析;S42:对自然语言进行时间数据解析;S43:对时间处理后的自然语言进行聚合查询条件解析;S44:对S2中标注的名词,根据元数据信息,进行查询字段和查询条件字段解析;根据S2中标注获得的否定词,对查询判断条件进行解析;S45:对查询聚合信息进行解析;S46:根据表名、字段名、查询条件字段和查询判断条件、聚合信息组装生成sql语句;S5:对用户输入的自然语言进行模糊查询;S51:判断是否存在匹配的表名,若没有匹配的表名,则进入反馈提问流程。进一步的,停用词不包含否定词。进一步的,条件解析具体为:识别出的名词经过元数据匹配,若找到查询条件字段名同时找到查询值,则认为一个查询条件解析完成;如果匹配无该字段的对应值,则考虑该字段是否为数值型,配合否定词解析和小于、大于等于文字解析数值型查询判断条件,认为一个查询条件解析完成;如果只匹配出了查询值而无查询字段,则自动用元数据中查询值对应的字段作为查询字段,认为一个查询条件解析完成;如果解析出多个并列的查询判断值,所述查询判断值对应一个列名,配合否定词,解析为SQL语言中的in操作或notin操作。进一步的,时间数据解析具体为:解析找出条件处理后的分词后自然语言中的表示时间的数据信息。进一步的,反馈提问流程包括以下步骤:判断是否有类似表名,是则给出表名提示,否则根据用户的查询记录得出用户查询频次较高的查询记录,提示用户输入,再进入步骤s1。进一步的,反馈提问流程还包括一个特殊词汇判断步骤,若存在特殊词汇,则提示输入对应词汇,替换语义语句后,再进入步骤S4。本专利技术的有益效果:不需要人员对数据进行标注,减少人力资源的投入,降低人工成本的开支,解决机器学习导致的系统不可复用问题。附图说明图1是本专利技术流程框图。具体实施方式为了对本专利技术的技术特征、目的和效果有更加清楚的理解,现对照附图说明本专利技术的具体实施方式。一种将查询数据的人类自然语言自动生成sql语句的方法,该方法包括以下步骤:S1:用户输入查询数据的自然语句,对所述自然语句进行分词;S2:将分词后的自然语句去掉停用词,并识别标注名词和否定词;S3:对名词进行规则拼接,并与构建好的表名元数据信息进行匹配,获取对应表名,如果能获取则进入步骤S4,不能获取则进入步骤S5;S4:对分词并去掉停用词后的自然语言与获取到的表名做SQL生成处理;S41:根据表的元数据信息,判断获得的表是否有多表关联,是则对分词并去掉停用词后的自然语言根据关联嵌套规则进行条件解析,否则直接进行单表查询条件解析;其中关联嵌套具体为:基于表的元数据关系构建嵌套查询。例如成都是地址表中地址值字段,但是在销售额表中对应的是地址表的ID字段,那么能做映射。表1展示的是表的元数据具体结构,表2展示的是字段的元数据具体结构。Table_name表名,strMapping_name映射名称,strMaping_value映射值,str表1表元数据结构表2字段元数据结构如果是多表,则判断是根据元数据构建笛卡尔积,还是根据查询路径图构建多级查询。笛卡尔积:如果无聚合,多层查询转换为多表的笛卡尔查询。如果有聚合则根据查询路径图,聚合后输出列和外层表的对应列的关系。根据可行的查询路径,解析多层查询。S42:对条件处理后的在自然语言进行时间处理:首先通过一定方式构建时间触发词词典,如从训练语料或人为经验中总结出触发词词典,然后根据触发词周围的修饰词以及前缀和后缀等成分来构建时间缀词词典,最后通过触发词和缀词的组合来识别时间表达式。以“2019年3月4号”的解释为例,其中“年”、“月”、“日”是触发词,然后再根据触发词前缀“2019”、“3”、“4”等成分即可将该时间描述解释为标准化的时间格式“2019/03/04”。通过以上时间解析过程,可以将查询语句中所有的时间描述统一成标准格式,以待后续数据模型构建。S43:对时间处理后的自然语言进行聚合处理;聚合解析:判断聚合条件,目前根据正则表达式判断是否需要进行聚合解析,如当用户输入的自然语言中包含最大、最小、总数、总和、平均值等聚合词汇时,则根据依存关系找出对应的聚合条件。如输入"烟草最大销售额",可以获取到"最大"对应聚合词汇为"max",根据依存关系得知"最大"修饰"销售额",可以得出组成聚合信息"max(销售额)",以待后续sql拼接。S44:根据表名、字段名、查询条件字段和查询判断条件、聚合信息组装生成查询sql语句;S5:对用户输入的自然语言进行模糊查询;S51:判断是否存在匹配的表名,若没有匹配的表名,则进入反馈提问流程。停用词包含是、为、啊、查询、看、知道等无用词,但不包含不是、非等否定词。反馈提问流程包括以下步骤:判断是否有类似表名,是则给出表名提示;当没有类似表名时,将会根据用户的查询记录得出用户查询频次较高的查询记录,提示用户输入,再进入步骤s1。反馈提问流程还包括一个特殊词汇判断步骤,若存在特殊词汇,则提示输入对应词汇,替换语义语句后,再进入步骤S4。本专利技术提出的一种将查询数据的人类自然语言自动生成本文档来自技高网...

【技术保护点】
1.一种将查询数据的人类自然语言自动生成sql语句的方法,其特征在于,包括以下步骤:/nS1:用户输入查询数据的自然语句,对所述自然语句进行分词;/nS2:将分词后的自然语句去掉停用词,并识别标注名词和否定词;/nS3:对名词进行规则拼接,并与构建好的表名元数据信息进行匹配,获取对应表名,如果能获取则进入步骤S4,不能获取则进入步骤S5;/nS4:对分词并去掉停用词后的自然语言与获取到的表名做SQL生成处理;/nS41:根据表的元数据信息,判断获得的表是否有多表关联,是则对分词并去掉停用词后的自然语言根据关联嵌套规则进行条件解析,否则直接进行单表查询条件解析;/nS42:对自然语言进行时间数据解析;/nS43:对时间处理后的自然语言进行聚合查询条件解析;/nS44:对S2中标注的名词,根据元数据信息,进行查询字段和查询条件字段解析;根据S2中标注获得的否定词,对查询判断条件进行解析;/nS45:对查询聚合信息进行解析;/nS46:根据表名、字段名、查询条件字段和查询判断条件、聚合信息组装生成sql语句;/nS5:对用户输入的自然语言进行模糊查询;/nS51:判断是否存在匹配的表名,若没有匹配的表名,则进入反馈提问流程。/n...

【技术特征摘要】
1.一种将查询数据的人类自然语言自动生成sql语句的方法,其特征在于,包括以下步骤:
S1:用户输入查询数据的自然语句,对所述自然语句进行分词;
S2:将分词后的自然语句去掉停用词,并识别标注名词和否定词;
S3:对名词进行规则拼接,并与构建好的表名元数据信息进行匹配,获取对应表名,如果能获取则进入步骤S4,不能获取则进入步骤S5;
S4:对分词并去掉停用词后的自然语言与获取到的表名做SQL生成处理;
S41:根据表的元数据信息,判断获得的表是否有多表关联,是则对分词并去掉停用词后的自然语言根据关联嵌套规则进行条件解析,否则直接进行单表查询条件解析;
S42:对自然语言进行时间数据解析;
S43:对时间处理后的自然语言进行聚合查询条件解析;
S44:对S2中标注的名词,根据元数据信息,进行查询字段和查询条件字段解析;根据S2中标注获得的否定词,对查询判断条件进行解析;
S45:对查询聚合信息进行解析;
S46:根据表名、字段名、查询条件字段和查询判断条件、聚合信息组装生成sql语句;
S5:对用户输入的自然语言进行模糊查询;
S51:判断是否存在匹配的表名,若没有匹配的表名,则进入反馈提问流程。


2.根据权利要求1所述的一种将查询数据的人类自然语言自动生成sql语句的方法,其特征在于,所述停用词不包含否定词。


3...

【专利技术属性】
技术研发人员:刘科
申请(专利权)人:成都海天数联科技有限公司
类型:发明
国别省市:四川;51

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

1