CN114416780A - 一种通过自然语言做数据探索分析的算法 - Google Patents
一种通过自然语言做数据探索分析的算法 Download PDFInfo
- Publication number
- CN114416780A CN114416780A CN202111496828.7A CN202111496828A CN114416780A CN 114416780 A CN114416780 A CN 114416780A CN 202111496828 A CN202111496828 A CN 202111496828A CN 114416780 A CN114416780 A CN 114416780A
- Authority
- CN
- China
- Prior art keywords
- column
- index
- dimension
- algorithm
- matching
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/243—Natural language query formulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种通过自然语言做数据探索分析的算法,包括nl2sql,nl2sql包括数据层、APP层和后处理模块;数据层用于支撑APP层的各个任务模块且包括分词模型,文本相似度模型,word2vec模块,关键词库;APP层用于进行语义分析,具体为根据报表sql语句所需的信息进行模块划分;后处理模块用于将APP层各模块所得信息进行结果组装和结果拓展、兜底;本发明适应数据拓展,逻辑性强,结果返回多数是基于特定规则,提高查询效率;支持自定义规则拓展,在自定义规则库中可以添加关键字和表达方式。
Description
技术领域
本发明涉及智能数据技术领域,具体为一种通过自然语言做数据探索分析的算法。
背景技术
在互联网高速发展的当下,大数据分析已是潮流,各行各业都在引用,通过分析能够获取很多有价值的信息,用以辅助商家进行商业和业务决策。但在日常工作当中,大数据分析面临两个大的挑战:一是大数据分析门槛高,需同时具备专业的开发技能和专业的数据分析技能;二是时效低且个性化成本高:需要专业人员进行分析再形成特定的分析报告;
因此随着人工智能技术的发展,基于nlp技术进行语义分析并转化为数据查询的sql和图表形式的研发方向得到重视和发展。基于nlp技术进行大数据智能分析探索的研究分为两类:一是基于特定领域或者固定表逻辑的实现方案,该方案在新增表逻辑的情况下,需要额外的人工制定规则的工作;二是基于bert等预训练模型的多任务训练的框架,该方案需要大量标注数据进行训练,而且针对新增表逻辑的情况需重新标注数据和训练模型。总结目前研究内容偏向有监督训练或人工规则的方式,一是无法拓展新的,二是需要大量或额外的标注数据进行训练。
基于此,本发明设计了一种通过自然语言做数据探索分析的算法,以解决上述问题。
发明内容
本发明的目的在于提供一种通过自然语言做数据探索分析的算法,以解决上述背景技术中提出的目前研究内容偏向有监督训练或人工规则的方式,一是无法拓展新的,二是需要大量或额外的标注数据进行训练的问题。
为实现上述目的,本发明提供如下技术方案:
一种通过自然语言做数据探索分析的算法,包括nl2sql,所述nl2sql包括数据层、APP层和后处理模块;所述数据层用于支撑APP层的各个任务模块且包括分词模型,文本相似度模型,word2vec模块,关键词库;所述APP层用于进行语义分析,具体为根据报表sql语句所需的信息进行模块划分,划分为:表名识别、图表类型识别、limit识别、指标和聚合函数识别、维度识别、where条件识别;所述后处理模块用于将APP层各模块所得信息进行结果组装和结果拓展、兜底。
优选的,关键词库具体为基于用户定义的表结构和上传的数据抽取生成两个自定义数据结构,一个是用户自定义的表结构,另一个是根据用户自定义的表结构和数据反向生成的检索字典;所述用户自定义的表结构和检索字典通过pickle库对二者进行序列化和反序列化,用于保证多个进程之间数据的一致性。
优选的,分词模型集成了jieba分词库,具体包括采用用户自定义的表结构和检索字典生成的专业词库和开启了基于深度学习的词性标注功能;所述word2vec模块具体为预训练的词和词向量对照表;所述文本相似度模型具体为集成了编辑距离、基于word2vec的cosin距离、基于word2vec的WMD距离和基于同义词林的词语相似度算法的模块。
优选的,表名识别具体为根据用户query和各个表名和表描述信息进行WMD距离和编辑距离计算,在根据各表内维度列、表名,使用词频过滤的方式建立关键词词典,对用户query中的命中关键字采用精准匹配,最终对这些结果进行加权相似度计算,得到一个表名的倒排,从而选择相似度高的表进行进一步的分析;
所述图表类型识别具体为根据图表类型的常用中文描述,人工制定词典,且支持正则化语句匹配的模式;所述匹配的模式采用精确匹配:即用户query中需明确具体的图表类型的词语,如匹配成功,则采用用户指定的图表类型;如无,则在后处理模块中根据指标和维度情况进行图表类型补充,即采用合适图表类型进行展示。
优选的,所述limit识别还包括orderby识别,具体步骤如下:
SA1:对输入query首先进行汉语数字到阿拉伯数字的转换;
SA2:通过正则字典获取到query中所有的模式,正则字典中存放了用于匹配关键字的全部正则项,每个正则项称为一个模式;其中query可能包含1个或多个模式,多个模式之间可能存在重叠,或者补充关系,对于多个模式的情形,需要进行合成和筛选;
SA3:根据模式解析为对应的sql,limit和orderby是条件的一部分,解析得到的sql,是完整sql语句中的一个组成部分;每个组成部分,可能包含对应关联的column,数值或操作符,通过建立句法依存关系,找到每个模式依赖的column;其中句法依存关系的建立,是通过语言模型深度学习得到的。
优选的,汉语数字到阿拉伯数字的转换包括直述和值述;直述转换具体为:建立“{'一':1,'二':2,'两':2,'三':3,'四':4,'五':5,'六':6,'七':7,'八':8,'九':9,'零':0}”字典,逐字转换即可;
值述转换具体为:获取包含数字表述的连续片段,对表述中的“十、百、千、万、亿”等字提取后做相应运算。
优选的,所述指标识别具体包括以下步骤:
SB1:针对指标列的情况:根据用户query中是否包含指标列的列别名,如有则匹配成功,否则没有结果;
SB2:针对维度列的情况:根据用户query中是否包含维度类的列别名,如满足正则条件的情况下,为匹配成功;如不满足正则条件则匹配不成功。增加正则条件,避免出现跟filter和维度等结果冲突;
SB3:如果精确匹配没有结果,则执行相似度匹配;
SB31:将用户query中的时间,表关键词和维度列匹配关键词等去除后,重新分词和词性标注;
SB32:采用基于word2vec的wmd算法逐一计算指标列的别名和query的分词后的结果,并采用相似度最大的token作为关键词结果;
SB33:按照相似度排列各个指标列;
所述聚合函数识别具体包括以下步骤:
SC1:根据聚合函数的常用中文描述,人工制定词典,同时支持正则化语句匹配的模型。
SC2:聚合函数采用的是精确匹配,如能匹配,则采用用户指定的;如没有匹配上,在结果组装时采用默认兜底策略;
SD1:将SB33-SC2结果进行组合形成结果;
聚合函数为空的情况:根据指标类型选择默认合适的聚合操作函数;指标类型为数值,指标列,则默认采用sum求和操作函数;指标类型为字符串,维度列,则默认采用uniqExact去重计数操作函数;
聚合函数不为空的情况:将指标列和聚合函数进行排列组合,形成结果;针对维度列的情况,过滤掉采用sum等不合法的操作函数。
优选的,所述维度识别具体为在维度列,根据精准匹配的关键字,与维度的列名精准匹配的词语会成为group by的潜在对象;在时间维度,将表达时间维度的关键语句识别出来,再加入合适的clickhouse函数之后放入group by的对象。
优选的,所述where条件识别包含维度列过滤,指标列过滤和时间条件过滤;所述维度列过滤在query表述中存在某一列中的一个value情况时,对表格中的枚举类型数据进行提取,放到关键词字典进行匹配;在query进行了关键语句的描述情况时,识别列名,用识别的列名组成一个特定的表达形式,用正则匹配的形式匹配所有这些与列名相关的语句;
所述指标列过滤是指将文本中所有汉语表示的数值统一转化为阿拉伯数字,然后再与column和操作符共同拼接成sql中的一个过滤条件,从自然语言中提取一些数值型描述,根据描述的对象转化到sql中形成对应指标的过滤条件;所述数值型描述为汉语或阿拉伯数字;
所述时间条件过滤具体为采用正则表达式或字典设置的转换规则获取到对应的数值和对应的时间维度,转换成实际的时间条件。
优选的,10、所述结果组装具体为三种情况:
a:除了指标外,其余结果采用有结果则填写,没有则空着;
b:根据有多少个指标则组合生成多少个结果;根据各个结果复用query中词语的情况,当其中一个关键词被复用超过2的话,则该结果会被舍弃;
c:指标列结果为空的情况下,只填写指标列为空的一个结果;
所述结果拓展、兜底具体包括以下策略:
时间兜底策略:针对用户没有明确时间的情况下,采用本月,本周,今日和今年四个默认时间段进行补全;补全策略为针对单个表下所有的结果先补全本月时间段,再进行本周时间段的补全,依此类推;
维度、图表类型修正策略:程序导入需求的列表,对所存在于结果的维度和指标做匹配,找出最合适的图表类型;待选定图表类型后,根据图表类型中若有缺失或多于维度或者指标,则按照特定规则补全;该规则是根据视图初始化时生成的交叉相关性矩阵,和维度与视图表名的相关性加权得出的;特定的图表类型也会补全特定的列,如趋势线图则会补全类型为date的列作为维度,其函数会根据预计的数据点个数进行自动调整;
排序兜底策略:当orderby的列跟指标列一样时,需将指标列的聚合函数填写到orderby的列上。
图表类型兜底策略:当数据为单行单列时,即维度为空的情况,更改图表类型为翻牌器,即放大展示单个指标情况。
与现有技术相比,本发明的有益效果是:
本发明程序设计完全和数据解耦,可加入不同类型的表格,适应数据拓展;逻辑性强,结果返回多数是基于特定规则,在用户使用过程中用会适应特定的表达方式,从而提高查询效率;支持自定义规则拓展,在自定义规则库中可以添加关键字和表达方式。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明nl2sql技术方案示意图;
图2为本发明limit和orderby识别流程图;
图3为本发明汉语数字到阿拉伯数字转换流程图;
图4为本发明指标和聚合函数识别流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
请参阅图1-4,本发明提供一种技术方案:
一种通过自然语言做数据探索分析的算法,包括nl2sql,所述nl2sql包括数据层、APP层和后处理模块;所述数据层用于支撑APP层的各个任务模块且包括分词模型,文本相似度模型,word2vec模块,关键词库;所述APP层用于进行语义分析,具体为根据报表sql语句所需的信息进行模块划分,划分为:表名识别、图表类型识别、limit识别、指标和聚合函数识别、维度识别、where条件识别;所述后处理模块用于将APP层各模块所得信息进行结果组装和结果拓展、兜底。
数据层
数据层主要包含了分词模型,文本相似度模型,word2vec,关键词库等内容。这部分的词库数据和算法模型作为一个底层支撑模块,支撑上面APP层的各个任务模块。
关键词库:基于用户定义的表结构和上传的数据抽取生成两个自定义数据结构。一个是用户自定义的表结构,另一个是根据用户自定义的表结构和数据反向生成的检索字典。为了保证多个进程之间数据的一致性,采用pickle库对两个字典数据进行序列化和反序列化;
分词模型:集成了jieba分词库,一是采用用户自定义的两个字典词库生成专业词库,确保特定领域的专业名词分词准确;一个是开启了基于深度学习的词性标注功能,保障了分词和词性标注的性能和准确率;
word2vec模块:预训练的词和词向量对照表;
文本相似度模型:集成了编辑距离、基于word2vec的cosin距离、基于word2vec的WMD距离和基于同义词林的词语相似度等算法。
APP层
APP模块根据报表sql语句所需的信息进行模块划分,划分为:表名识别,图表类型识别,limit识别,指标和聚合函数识别,维度识别和where条件识别。
其中表名识别和图表类型识别等任务跟其他任务之间是没有依赖关系,但是指标识别,维度,limit和orderby和where条件等任务是依赖于表名识别的结果的,需要根据具体的表结构进行计算和匹配。
所以APP层的各个任务的执行顺序为:表名识别,图表类型识别
表名识别:
a.根据用户query和各个表名和表描述信息进行WMD距离和编辑距离计算,在根据各表内维度列、表名,使用词频过滤的方式建立关键词词典,对用户query中的命中关键字采用精准匹配,最终对这些结果进行加权相似度计算,得到一个表名的倒排,从而选择相似度高的表进行进一步的分析;
图表类型识别:
b.根据图表类型的常用中文描述,人工制定词典,如对比,柱状等词语对应柱状图和趋势,走向等词语对应折线图等;另外也支持正则化语句匹配的模式;
c.匹配模式采用精确匹配,即用户query中需明确具体的图表类型的词语,如匹配成功,则采用用户指定的图表类型;如无,则在后处理模块中根据指标和维度情况进行图表类型补充,即采用合适图表类型进行展示。
limit和orderby识别:
a.limit和orderby一般会共同出现,指定正则表达式,如排行、排序、最大5个、最小10类、最高3种和最低8个等等,如匹配成功,则取得对应数值,作为limit属性的value;按照不同的正则项,对应取得排序的方向,顺序或逆序;每次匹配成功一个单位的正则项,即生成一个模式,一段query中可能包含1个或多个模式,经过处理后,最后只保留一个模式。
对输入句子进行词性分析,当正则匹配成功时,取得正则项的中心词,通过词语间的依存关系,得到正则项所依赖的名词,根据该名词与当前表的列描述进行文本相似度匹配,得到orderby对应的column。
limit和orderby识别具体流程如下:
对输入query首先进行汉语数字到阿拉伯数字的转换。如“广东省今年销量最大的五种商品”中的“五种”,要转化为“5种”。如果是“二十五种”或者“三百五十六种”也要转化为“25种”和“356种”。这里产生了一种从汉语数字到阿拉伯数字转换的方法(另外详述)。
第二步是通过正则字典获取到query中所有的模式。正则字典中存放了用于匹配关键字的全部正则项,每个正则项称为一个模式。正则字典是可编辑的,按照预先定义的规则,可添加新的模式。如正则项“top\\d{1,2}”,它能够从query中匹配到topN这样的关键字,例如“top3”“top5”等等,topN即为一个模式,它对应的sql解析式为“ORDER BY desclimit#”,“#”为占位符。例如当匹配到“top5”时,即把“5”这个值填充到“limit 5”。因此每个模式中,可以存在1个或多个占位符,当一个正则项取得匹配时,则将匹配项中的值按照其对应的模式填充到占位符上。正则字典中,即存放着正则项与模式的对应关系,及相应的解析规则。
query可能包含1个或多个模式,多个模式之间可能存在重叠,或者补充关系。对于多个模式的情形,可能需要进行合成和筛选。目前limit和orderby的部分,仅包含一个模式,多模式的情形,在下一章节“时间条件过滤”中叙述。
下一步是根据模式解析为对应的sql。由于limit和orderby是条件的一部分,这里解析得到的sql,也是完整sql语句中的一个组成部分。每个组成部分,可能包含对应关联(依赖)的column,数值或操作符。本部分包含的是依赖column和数值。例如“今年销量最大的五种商品”,取得匹配的模式为“最大的N种”,解析式为“ORDER BY desc limit#”,包含数值为5,依赖column为“销量”。
本query中,“销量最大”和“五种”修饰的是“商品”,而“今年”和“最大”共同修饰“销量”,即“最大”是依赖“销量”column。通过建立句法依存关系,找到每个模式依赖的column,数据库存在与“销量”相匹配的列“sales_val”,则本单元解析的sql部分为“ORDERBY sales_val desc limit 5”。
句法依存关系的建立,是通过语言模型深度学习得到的。取得一个话术数据集,对每句话进行分词,词与词之间标注为“无关系”“A修饰B”“B修饰A”,可得到一个3分类的文本数据集,训练模型实现句法依存关系的推理。
补:一种从汉语数字到阿拉伯数字转换的方法
将表述如“五”“二十五”“三百六十五”等汉语形式的数值转化为阿拉伯数字。汉语表述的数字分为两种:直述和值述。
例如2003:直述为二零零三;值述为两千零三。
对于直述形式,转换方法比较简单,建立如下字典,{'一':1,'二':2,'两':2,'三':3,'四':4,'五':5,'六':6,'七':7,'八':8,'九':9,'零':0},逐字转换即可。
对于值述形式,需要对表述中的“十、百、千、万、亿”等字提取后做相应运算。
如果值述形式的数字中,不包含“十、百、千、万、亿”等字,它即等同于直述。
本方法的具体流程如下:先获取包含数字表述的连续片段,如“三千五百六十八”,最终两种形式的数字均被转化为阿拉伯数字表示,如3568。
指标和聚合函数识别:
a.聚合函数
i.根据聚合函数的常用中文描述,人工制定词典,如平均,均价等词语对应avg,求和,总计等词语对应sum;
ii.另外也支持正则化语句匹配的模型,如xx的数量进行维度列的计数匹配,以及"最[多|少]的[0-9]"正则化语句进行过滤,避免于limit模块的冲突;
iii.聚合函数采用的是精确匹配,如能匹配,则采用用户指定的;如没有匹配上,在结果组装时采用默认兜底策略;
b.指标识别
i.精确匹配
1.针对指标列的情况:根据用户query中是否包含指标列的列别名,如有则匹配成功;否则没有结果;
2.针对维度列的情况:根据用户query中是否包含维度类的列别名,如有且满足“xx的数量”等正则条件的情况下,为匹配成功;如不满足条件则匹配不成功。增加正则条件,避免出现跟filter和维度等结果冲突;
ii.相似度匹配,如果精确匹配没有结果,则执行相似度匹配
1.将用户query中的时间,表关键词和维度列匹配关键词等去除后,重新分词和词性标注;
2.然后采用基于word2vec的wmd算法逐一计算指标列的别名和query的分词后的结果,并采用相似度最大的token作为关键词结果;
3.最后按照相似度排列各个指标列
c.聚合函数和指标组装:将前面两步的结果进行组合形成结果
i.聚合函数为空的情况:根据指标类型选择默认合适的聚合操作函数;
1.指标类型为数值,指标列,则默认采用sum求和操作函数;
2.指标类型为字符串,维度列,则默认采用uniqExact去重计数操作函数
ii.聚合函数不为空的情况:将指标列和聚合函数进行排列组合,形成结果;
备注:针对维度列的情况,过滤掉采用sum等不合法的操作函数。
维度识别:
a.维度列,根据精准匹配的关键字,与维度的列名精准匹配的词语会成为groupby的潜在对象;
b.时间维度,如每周,每月和每年等表达时间维度的关键语句会被相应的被识别出来,再加入合适的clickhouse函数之后放入group by的对象;
where条件识别:where条件包含维度列过滤,指标列过滤和时间条件过滤三种类型
维度列过滤:维度列条件过滤基本存在两种表述形式:
a.第一种是query表述中存在某一列中的一个value;如下表要过滤出食品的销售额,sql语句为’where类别in[‘食品’]’,这种情况下会对表格中的枚举类型数据进行提取,放到关键词字典进行匹配;
b.另一种是query进行了关键语句的描述,例如‘收货地址以广东开头的销售额’,在这条语句中‘收货地址’为列名,用这个列名组成一个特定的表达形式,在此程序用正则匹配的形式匹配所有这些与列名相关的语句,包括‘(列名)包含。。。的’,‘(列名)结尾是。。。’等等表达方式;
指标列过滤:
a.指标列过滤是指从自然语言中提取一些数值型的描述,根据描述的对象转
化到sql中形成对应指标的过滤条件。例如“销售额大于三千”,三千即为一个数值,该数值所描述的对象为销售额,操作符为>,在数据库中搜索到与“销售额”匹配的column,比如sales_val,那么可拼成where sales_val>3000的过滤条件;
b.数值型描述可能是汉语表示(三千),也可能是阿拉伯数字(3000),在做指标列过滤前,需要先将文本中所有汉语表示的数值统一转化为阿拉伯数字,然后再与column和操作符共同拼接成sql中的一个过滤条件。
指标列过滤的方法与limit和orderby识别的方法流程基本一致。
时间条件过滤:
a.时间条件过滤与指标列过滤比较类似,大部分case都是提取数值型的描述,但比指标的提取更为复杂。最简单的情形如“某年某月某日”,其中包含三段数值,分别对应到年月日,也有“第几季度”对应到月份的区间,如第一季度对应到1月到3月,采用正则表达式获取到对应的数值和对应的时间维度,转换成实际的时间条件如where sales_date=”2021-09-03”或where sales_date>2021-01-01and sales_date<2021-03-31等。
b.还包括其它许多非数值型的表述,如“本月”“上月”“去年”“本周”“本月下旬”等等,该类表述需要通过字典的形式,先替换为年月日的时间表示,再做进一步的运算。比如“上月份”,因为需要先知道现在是2021年9月,才能得出上月份是2021年8月,所以这个处理是两步。先将“上月份”转换成%m1月,%m1表示以当前月份减去1个月,然后获取当前的月份,减去一个月后再输出为时间,即把%m1月做第二次转换,得到2021年8月。所以同理可以推导出“本月份”,需要先转化为“%m0”,二次转换即为2021年9月。如果是“过去6个月”,那么就转化为“%m6到%m0”,二次转化即为“2021年3月到2021年9月”。
c.字典中有诸如%m0这类符号表示,如%Y1表示去年,%d2表示前天,%w1表示上周,%q0表示本季度等等。还有一些固定的日期,无需做二次转换。如“元旦:1月1日”“国庆节:10月1日”“双十一:11月11日”等等,该类表述直接做1次转换即可。
d.上述所有自然语言描述的时间,最后都会通过字典设置的转换规则,按照1次转换或2次转换,得到对应的年月日,或者Y-m-d到Y-m-d,也就是
where sales_date=”Y-m-d”或where sales_date>‘Y-m-d’and sales_date<‘Y-m-d’
e.时间维度包含两种模式,一种是“Y年m月d日”,另一种是“Y年m月d日到Y年m月d日”,其中后者涵盖了前者,产生了重叠。因此,本方法中对匹配模式还提取了span,即匹配项在query中的起始位置,比如span=[3,8]代表匹配项出现在query的第3至第8个字符。对于query中所有的匹配项,如果二者的span发生重叠,则保留较长的匹配项。
后处理模块
a.结果组装
i.首先除了指标外,其余结果采用有结果则填写,没有则空着;
ii.最后根据有多少个指标则组合生成多少个结果;但会根据各个结果复用query中词语的情况,当其中一个关键词被复用超过2的话,则该结果会被舍弃;
iii.如果指标列结果为空的情况下,只填写指标列为空的一个结果;
b.结果拓展和兜底
i.时间兜底策略
针对用户没有明确时间的情况下,采用本月,本周,今日和今年四个默认时间段进行补全。补全策略为:针对单个表下所有的结果先补全本月时间段,再进行本周时间段的补全,依此类推。
备注说明:
1.补全并不是舍弃原先的结果,会复制一个结果进行补全并同时保留两个结果;
2.补全时间的结果会进行加权,优先排在没有时间的结果前面,且按照本月,本周,今日和今年的顺序进行排列;
ii.维度&图表类型修正策略
a.在大多数情况,用户是不会定义需要什么类型的图表,并且各种图标对维度和指标有一定的要求,程序会导入需求的列表,对所存在于结果的维度和指标做匹配,找出最合适的图表类型;
b.待选定图标类型后,根据图表类型中若有缺失或多于维度或者指标,则按照特定规则补全;该规则是根据视图初始化时生成的交叉相关性矩阵,和维度与视图表名的相关性加权得出,以达到补全较为相关的列的目的;特定的图表类型也会补全特定的列,如趋势线图则会补全类型为date的列作为维度,其函数(toYear、toMonth等)会根据预计的数据点个数进行自动调整;
iii.排序兜底策略
当orderby的列跟指标列一样时,需将指标列的聚合函数填写到orderby的列上。
iv.图表类型兜底策略
当数据为单行单列时,即维度为空的情况,更改图表类型为翻牌器,即放大展示单个指标情况。
本发明程序设计完全和数据解耦,可加入不同类型的表格,适应数据拓展;逻辑性强,结果返回多数是基于特定规则,在用户使用过程中用会适应特定的表达方式,从而提高查询效率;支持自定义规则拓展,在自定义规则库中可以添加关键字和表达方式。
在本说明书的描述中,参考术语“一个实施例”、“示例”、“具体示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
以上公开的本发明优选实施例只是用于帮助阐述本发明。优选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本发明的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本发明。本发明仅受权利要求书及其全部范围和等效物的限制。
Claims (10)
1.一种通过自然语言做数据探索分析的算法,其特征在于:包括nl2sql,所述nl2sql包括数据层、APP层和后处理模块;所述数据层用于支撑APP层的各个任务模块且包括分词模型,文本相似度模型,word2vec模块,关键词库;所述APP层用于进行语义分析,具体为根据报表sql语句所需的信息进行模块划分,划分为:表名识别、图表类型识别、limit识别、指标和聚合函数识别、维度识别、where条件识别;所述后处理模块用于将APP层各模块所得信息进行结果组装和结果拓展、兜底。
2.根据权利要求1所述的一种通过自然语言做数据探索分析的算法,其特征在于:所述关键词库具体为基于用户定义的表结构和上传的数据抽取生成两个自定义数据结构,一个是用户自定义的表结构,另一个是根据用户自定义的表结构和数据反向生成的检索字典;所述用户自定义的表结构和检索字典通过pickle库对二者进行序列化和反序列化,用于保证多个进程之间数据的一致性。
3.根据权利要求1所述的一种通过自然语言做数据探索分析的算法,其特征在于:所述分词模型集成了jieba分词库,具体包括采用用户自定义的表结构和检索字典生成的专业词库和开启了基于深度学习的词性标注功能;所述word2vec模块具体为预训练的词和词向量对照表;所述文本相似度模型具体为集成了编辑距离、基于word2vec的cosin距离、基于word2vec的WMD距离和基于同义词林的词语相似度算法的模块。
4.根据权利要求1所述的一种通过自然语言做数据探索分析的算法,其特征在于:所述表名识别具体为根据用户query和各个表名和表描述信息进行WMD距离和编辑距离计算,在根据各表内维度列、表名,使用词频过滤的方式建立关键词词典,对用户query中的命中关键字采用精准匹配,最终对这些结果进行加权相似度计算,得到一个表名的倒排,从而选择相似度高的表进行进一步的分析;
所述图表类型识别具体为根据图表类型的常用中文描述,人工制定词典,且支持正则化语句匹配的模式;所述匹配的模式采用精确匹配:即用户query中需明确具体的图表类型的词语,如匹配成功,则采用用户指定的图表类型;如无,则在后处理模块中根据指标和维度情况进行图表类型补充,即采用合适图表类型进行展示。
5.根据权利要求1所述的一种通过自然语言做数据探索分析的算法,其特征在于:所述limit识别还包括orderby识别,具体步骤如下:
SA1:对输入query首先进行汉语数字到阿拉伯数字的转换;
SA2:通过正则字典获取到query中所有的模式,正则字典中存放了用于匹配关键字的全部正则项,每个正则项称为一个模式;其中query可能包含1个或多个模式,多个模式之间可能存在重叠,或者补充关系,对于多个模式的情形,需要进行合成和筛选;
SA3:根据模式解析为对应的sql,limit和orderby是条件的一部分,解析得到的sql,是完整sql语句中的一个组成部分;每个组成部分,可能包含对应关联的column,数值或操作符,通过建立句法依存关系,找到每个模式依赖的column;其中句法依存关系的建立,是通过语言模型深度学习得到的。
6.根据权利要求5所述的一种通过自然语言做数据探索分析的算法,其特征在于:SA1中,所述汉语数字到阿拉伯数字的转换包括直述和值述;直述转换具体为:建立“{'一':1,'二':2,'两':2,'三':3,'四':4,'五':5,'六':6,'七':7,'八':8,'九':9,'零':0}”字典,逐字转换即可;
值述转换具体为:获取包含数字表述的连续片段,对表述中的“十、百、千、万、亿”等字提取后做相应运算。
7.根据权利要求1所述的一种通过自然语言做数据探索分析的算法,其特征在于:所述指标和聚合函数识别的指标识别具体包括以下步骤:
SB1:针对指标列的情况:根据用户query中是否包含指标列的列别名,如有则匹配成功,否则没有结果;
SB2:针对维度列的情况:根据用户query中是否包含维度类的列别名,如满足正则条件的情况下,为匹配成功;如不满足正则条件则匹配不成功。增加正则条件,避免出现跟filter和维度等结果冲突;
SB3:如果精确匹配没有结果,则执行相似度匹配;
SB31:将用户query中的时间,表关键词和维度列匹配关键词等去除后,重新分词和词性标注;
SB32:采用基于word2vec的wmd算法逐一计算指标列的别名和query的分词后的结果,并采用相似度最大的token作为关键词结果;
SB33:按照相似度排列各个指标列;
所述指标和聚合函数识别的聚合函数识别具体包括以下步骤:
SC1:根据聚合函数的常用中文描述,人工制定词典,同时支持正则化语句匹配的模型。
SC2:聚合函数采用的是精确匹配,如能匹配,则采用用户指定的;如没有匹配上,在结果组装时采用默认兜底策略;
SD1:将SB33-SC2结果进行组合形成结果;
聚合函数为空的情况:根据指标类型选择默认合适的聚合操作函数;指标类型为数值,指标列,则默认采用sum求和操作函数;指标类型为字符串,维度列,则默认采用uniqExact去重计数操作函数;
聚合函数不为空的情况:将指标列和聚合函数进行排列组合,形成结果;针对维度列的情况,过滤掉采用sum等不合法的操作函数。
8.根据权利要求1所述的一种通过自然语言做数据探索分析的算法,其特征在于:所述维度识别具体为在维度列,根据精准匹配的关键字,与维度的列名精准匹配的词语会成为group by的潜在对象;在时间维度,将表达时间维度的关键语句识别出来,再加入合适的clickhouse函数之后放入group by的对象。
9.根据权利要求1所述的一种通过自然语言做数据探索分析的算法,其特征在于:所述where条件识别包含维度列过滤,指标列过滤和时间条件过滤;所述维度列过滤在query表述中存在某一列中的一个value情况时,对表格中的枚举类型数据进行提取,放到关键词字典进行匹配;在query进行了关键语句的描述情况时,识别列名,用识别的列名组成一个特定的表达形式,用正则匹配的形式匹配所有这些与列名相关的语句;
所述指标列过滤是指将文本中所有汉语表示的数值统一转化为阿拉伯数字,然后再与column和操作符共同拼接成sql中的一个过滤条件,从自然语言中提取一些数值型描述,根据描述的对象转化到sql中形成对应指标的过滤条件;所述数值型描述为汉语或阿拉伯数字;
所述时间条件过滤具体为采用正则表达式或字典设置的转换规则获取到对应的数值和对应的时间维度,转换成实际的时间条件。
10.根据权利要求1所述的一种通过自然语言做数据探索分析的算法,其特征在于:所述结果组装具体为三种情况:
a:除了指标外,其余结果采用有结果则填写,没有则空着;
b:根据有多少个指标则组合生成多少个结果;根据各个结果复用query中词语的情况,当其中一个关键词被复用超过2的话,则该结果会被舍弃;
c:指标列结果为空的情况下,只填写指标列为空的一个结果;
所述结果拓展、兜底具体包括以下策略:
时间兜底策略:针对用户没有明确时间的情况下,采用本月,本周,今日和今年四个默认时间段进行补全;补全策略为针对单个表下所有的结果先补全本月时间段,再进行本周时间段的补全,依此类推;
维度、图表类型修正策略:程序导入需求的列表,对所存在于结果的维度和指标做匹配,找出最合适的图表类型;待选定图表类型后,根据图表类型中若有缺失或多于维度或者指标,则按照特定规则补全;该规则是根据视图初始化时生成的交叉相关性矩阵,和维度与视图表名的相关性加权得出的;特定的图表类型也会补全特定的列,如趋势线图则会补全类型为date的列作为维度,其函数会根据预计的数据点个数进行自动调整;
排序兜底策略:当orderby的列跟指标列一样时,需将指标列的聚合函数填写到orderby的列上。
图表类型兜底策略:当数据为单行单列时,即维度为空的情况,更改图表类型为翻牌器,即放大展示单个指标情况。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111496828.7A CN114416780A (zh) | 2021-12-08 | 2021-12-08 | 一种通过自然语言做数据探索分析的算法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111496828.7A CN114416780A (zh) | 2021-12-08 | 2021-12-08 | 一种通过自然语言做数据探索分析的算法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114416780A true CN114416780A (zh) | 2022-04-29 |
Family
ID=81265861
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111496828.7A Pending CN114416780A (zh) | 2021-12-08 | 2021-12-08 | 一种通过自然语言做数据探索分析的算法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114416780A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115080603A (zh) * | 2022-08-16 | 2022-09-20 | 广东省科技基础条件平台中心 | 一种数据库查询语言转换方法、装置、设备及存储介质 |
-
2021
- 2021-12-08 CN CN202111496828.7A patent/CN114416780A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115080603A (zh) * | 2022-08-16 | 2022-09-20 | 广东省科技基础条件平台中心 | 一种数据库查询语言转换方法、装置、设备及存储介质 |
CN115080603B (zh) * | 2022-08-16 | 2023-01-17 | 广东省科技基础条件平台中心 | 一种数据库查询语言转换方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Vasiliev | Natural language processing with Python and spaCy: A practical introduction | |
US11232270B1 (en) | Applied artificial intelligence technology for using natural language processing to train a natural language generation system with respect to numeric style features | |
US20210157975A1 (en) | Device, system, and method for extracting named entities from sectioned documents | |
US9588960B2 (en) | Automatic extraction of named entities from texts | |
CN114616572A (zh) | 跨文档智能写作和处理助手 | |
RU2732850C1 (ru) | Классификация документов по уровням конфиденциальности | |
Ghosh et al. | Natural language processing fundamentals: build intelligent applications that can interpret the human language to deliver impactful results | |
CN109117470B (zh) | 一种评价文本信息的评价关系提取方法及装置 | |
CN111428503A (zh) | 同名人物的识别处理方法及处理装置 | |
CN109840255A (zh) | 答复文本生成方法、装置、设备及存储介质 | |
CN114896275A (zh) | 一种将自然语言文本转为sql语句的方法及系统 | |
CN108536673B (zh) | 新闻事件抽取方法及装置 | |
CN115344666A (zh) | 政策匹配方法、装置、设备与计算机可读存储介质 | |
Hasegawa et al. | Extracting conceptual graphs from Japanese documents for software requirements modeling | |
CN114416780A (zh) | 一种通过自然语言做数据探索分析的算法 | |
Hutajulu et al. | Text Data Processing in Requirement Specifications as a Reference for Similarities Between Use Case Diagrams and Use Case Descriptions for Smart Sleeping Lamp Application Documents | |
Kazman | Structuring the text of the Oxford English Dictionary through finite state transduction | |
CN108170661A (zh) | 一种规则文本的管理方法及系统 | |
US11361565B2 (en) | Natural language processing (NLP) pipeline for automated attribute extraction | |
Elbarougy et al. | Graph-Based Extractive Arabic Text Summarization Using Multiple Morphological Analyzers. | |
CN117420998A (zh) | 一种客户端ui交互组件生成方法、装置、终端及介质 | |
CN113065329A (zh) | 数据的处理方法和装置 | |
CN114298048A (zh) | 命名实体识别方法及装置 | |
JP7227705B2 (ja) | 自然言語処理装置、検索装置、自然言語処理方法、検索方法およびプログラム | |
Ordoñez et al. | Multimodal indexing and search of business processes based on cumulative and continuous N-grams |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |