CN118132587A - 一种基于自然语言的数据分析方法、系统、电子设备及存储介质 - Google Patents
一种基于自然语言的数据分析方法、系统、电子设备及存储介质 Download PDFInfo
- Publication number
- CN118132587A CN118132587A CN202410291019.XA CN202410291019A CN118132587A CN 118132587 A CN118132587 A CN 118132587A CN 202410291019 A CN202410291019 A CN 202410291019A CN 118132587 A CN118132587 A CN 118132587A
- Authority
- CN
- China
- Prior art keywords
- data
- query
- natural language
- sql
- database
- 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
- 238000000034 method Methods 0.000 title claims abstract description 49
- 238000007405 data analysis Methods 0.000 title claims abstract description 14
- 239000013598 vector Substances 0.000 claims abstract description 39
- 238000012545 processing Methods 0.000 claims abstract description 29
- 230000008569 process Effects 0.000 claims abstract description 11
- 238000001514 detection method Methods 0.000 claims description 11
- 238000004590 computer program Methods 0.000 claims description 6
- 230000009471 action Effects 0.000 claims description 5
- 238000007781 pre-processing Methods 0.000 claims description 5
- 230000014509 gene expression Effects 0.000 description 18
- 238000005516 engineering process Methods 0.000 description 11
- 238000003058 natural language processing Methods 0.000 description 7
- 230000002776 aggregation Effects 0.000 description 5
- 238000004220 aggregation Methods 0.000 description 5
- 238000007726 management method Methods 0.000 description 5
- 238000004458 analytical method Methods 0.000 description 4
- 239000002131 composite material Substances 0.000 description 4
- 238000010276 construction Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 238000001914 filtration Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000012502 risk assessment Methods 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 240000003888 Phoenix reclinata Species 0.000 description 1
- 230000001174 ascending effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000005065 mining Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 238000012916 structural analysis Methods 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于自然语言的数据分析方法、系统、电子设备及存储介质,包括自然语言输入大型语言模型;大型语言模型对自然语言进行处理,生成与自然语言语义一致的多个版本查询语句;将多个版本查询语句转换为向量数据,采用相似度匹配算法从数据库中获取对应的数据资源;利用数据库管理系统获取数据资源对应的数据表结构;基于数据表结构,将多个版本查询语句转换成SQL查询语句;执行SQL查询语句,获取样例数据;基于样例数据、数据表结构和数据资源获得综合SQL查询语句;执行综合SQL查询语句,获取查询返回的数据;本发明实现了从用户自然语言查询到数据库查询结果的自动化处理流程。
Description
技术领域
本发明涉及语言处理技术领域,尤其涉及一种基于自然语言的数据分析方法、系统、电子设备及存储介质。
背景技术
随着信息技术的迅猛发展和大数据时代的到来,数据库系统已经成为各种应用领域中不可或缺的数据存储和管理工具。传统的数据库查询主要依赖于结构化查询语言,这对于非技术背景的用户来说,增加了学习和使用的难度,限制了他们对数据库中数据价值的挖掘和利用。实现自然语言驱动的数据库查询与分析技术仍然面临诸多挑战。自然语言本身的复杂性和多样性使得准确理解用户查询意图成为一项艰巨的任务。不同的用户可能使用不同的词汇和表达方式描述相同的查询需求,这就要求系统具备强大的语义理解和歧义消解能力。将自然语言请求转换为数据库可执行的查询语言(如SQL)也是一个技术难点,需要确保转换的准确性和有效性。
此外,还需要考虑查询效率、系统稳定性以及安全性等因素。在实际应用中,数据库可能包含大量的数据,如何快速响应用户的自然语言查询请求并返回准确的结果是一个重要的性能指标。同时,系统还需要具备处理并发请求、防止恶意攻击的能力。
发明内容
针对上述问题中存在的不足之处,本发明提供一种基于自然语言的数据分析方法、系统、电子设备及存储介质。
为实现上述目的,本发明提供一种基于自然语言的数据分析方法,包括:
将自然语言输入至大型语言模型;
所述大型语言模型对所述自然语言进行处理,生成与所述自然语言语义一致的多个版本查询语句;
将所述多个版本查询语句转换为向量数据,并采用相似度匹配算法从数据库中获取对应的数据资源;
利用数据库管理系统获取所述数据资源对应的数据表结构;
基于所述数据表结构,将所述多个版本查询语句转换成SQL查询语句;
执行所述SQL查询语句,获取样例数据;
基于所述样例数据、所述数据表结构和所述数据资源获得综合SQL查询语句;
执行所述综合SQL查询语句,获取查询返回的数据。
优选的是,将自然语言输入至大型语言模型包括对所述自然语言进行预处理,预处理包括基于空值、文本长度的检测以及基于停用词表和正则的合规检测。
优选的是,所述大型语言模型对所述自然语言进行处理,生成与所述自然语言语义一致的多个版本查询语句包括:
所述大型语言模型对所述自然语言进行语义理解,获取关键信息,所述关键信息包括主体、动作、时间和对象;
将所述关键信息组织成标准语法结构;
将所述标准语法结构基于Prompt设定生成所述自然语言语义一致的多个版本查询语句。
优选的是,将所述关键信息组织成标准语法结构包括将非正式或口语化的词语替换为标准化词语以及将口语化风格转换为正式风格。
优选的是,将所述多个版本查询语句转换为向量数据,并采用相似度匹配算法从数据库中获取对应的数据资源包括:
基于预训练的语言模型将所述多个版本查询语句进行向量化,获得所述向量数据;
基于相似度匹配算法,将所述向量数据与所述数据库中预先存储的Schema信息的向量进行对比,获得与所述向量数据相似度距离最近的所述向量数据。
优选的是,所述数据表结构包括数据表名称信息、相关字段信息、主键信息和外键信息。
优选的是,执行所述综合SQL查询语句前,对所述综合SQL查询语句进行评估,评估包括评估查询复杂度以及预测执行时间。
本发明还提供了一种基于自然语言的数据分析系统,包括:
输入模块,用于将自然语言输入至大型语言模型;
语义优化器模块,用于所述大型语言模型对所述自然语言进行处理,生成与所述自然语言语义一致的多个版本查询语句;
数据资源路由器模块,用于将所述多个版本查询语句转换为向量数据,并采用相似度匹配算法从数据库中获取对应的数据资源;
数据资源过滤器模块,用于利用数据库管理系统获取所述数据资源对应的数据表结构;
SQL生成器模块,用于基于所述数据表结构,将所述多个版本查询语句转换成SQL查询语句;执行所述SQL查询语句,获取样例数据;
SQL合成器模块,用于基于所述样例数据、所述数据表结构和所述数据资源获得综合SQL查询语句;
SQL执行器模块,用于执行所述综合SQL查询语句,获取查询返回的数据。
本发明还提供一种电子设备,包括至少一个处理单元以及至少一个存储单元,其中,所述存储单元存储有计算机程序,当所述程序被所述处理单元执行时,使得所述处理单元执行上述的方法。
本发明还提供一种存储介质,其存储有可由设备执行的计算机程序,当所述程序在所述设备上运行时,使得所述设备执行上述的方法。
与现有技术相比,本发明的有益效果为:
本发明实现了从用户自然语言查询到数据库查询结果的自动化处理流程,用户输入经过语义优化后,匹配相关数据资源,筛选必要信息,生成并执行SQL查询语句,最终返回查询结果。
附图说明
图1是本发明基于自然语言的数据分析方法流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
参照图1,本发明提供一种基于自然语言的数据分析方法,包括:
将自然语言输入至大型语言模型;
具体地,将自然语言输入至大型语言模型包括对自然语言进行预处理,预处理包括基于空值、文本长度的检测以及基于停用词表和正则的合规检测。
大型语言模型对自然语言进行处理,生成与自然语言语义一致的多个版本查询语句;
具体地,大型语言模型对自然语言进行语义理解,获取关键信息,关键信息包括主体、动作、时间和对象;
将关键信息组织成标准语法结构,其包括将非正式或口语化的词语替换为标准化词语以及将口语化风格转换为正式风格;
将标准语法结构基于Prompt设定生成自然语言语义一致的多个版本查询语句。
将多个版本查询语句转换为向量数据,并采用相似度匹配算法从数据库中获取对应的数据资源;
具体地,将多个版本查询语句转换为向量数据,并采用相似度匹配算法从数据库中获取对应的数据资源包括:
基于预训练的语言模型将多个版本查询语句进行向量化,获得向量数据;
基于相似度匹配算法,将向量数据与数据库中预先存储的Schema信息的向量进行对比,获得与向量数据相似度距离最近的向量数据。
利用数据库管理系统获取数据资源对应的数据表结构,数据表结构包括数据表名称信息、相关字段信息、主键信息和外键信息;
基于数据表结构,将多个版本查询语句转换成SQL查询语句;
执行SQL查询语句,获取样例数据;
基于样例数据、数据表结构和数据资源获得综合SQL查询语句;
执行综合SQL查询语句,获取查询返回的数据。
具体地,执行综合SQL查询语句前,对综合SQL查询语句进行评估,评估包括评估查询复杂度以及预测执行时间。
本发明还提供了一种基于自然语言的数据分析系统,包括:
输入模块,用于将自然语言输入至大型语言模型;
具体地,输入模块是整个系统的入口,其核心目的是接收和理解用户以自然语言形式提出的查询请求。在本模块中主要承担这是用户交互端的数据接收,对于接受到的信息,可以基于业务背景做分发,提出用户需要对数据库进行访问和分析的请求,进行一定的结构化封装。
语义优化器模块,用于大型语言模型对自然语言进行处理,生成与自然语言语义一致的多个版本查询语句;
具体地,语义优化器的主要任务是提升用户输入的自然语言查询的清晰度和准确性。在处理自然语言查询时,直接使用用户的原始输入可能会因为模糊性、语法错误或不精确的表达而导致查询效率低下或结果不准确。语义优化器通过重构和优化查询表达,确保后续处理步骤能够更加准确地理解和执行用户的意图。
语义优化器的输入是用户通过用户输入模块提供的原始自然语言查询。它依赖于用户输入模块对查询进行的初步处理,如基本的语言检测和结构分析。
在语义优化器模块中,主要使用的是大型语言模型(LLM)技术。LLM技术在处理自然语言方面具有强大的能力,能够深入理解和分析复杂的语言结构,识别语义上的微妙差异,并生成更加精确和清晰的表达。
通过应用LLM技术,不管是文心千帆、通义千问、智谱AI、OPEN AI等商业平台模型API服务,还是私有化大语言模型在对跨语言的语义理解和生成推理都有较强的表现。本发明基于私有化大模型构建的模型服务。构建Prompt Engineering,基于Prompt Learning来激发语言模型在语义标准化方面的能力。通过提供一个角色定义、目标描述、技能要求、具体转换标准,基于One-Shot Learning策略来指导模型,达到本阶段任务的稳定性。语义优化器可以有效地重构用户的查询语句,改善问题表达,并生成多种语义一致但表达形式不同的查询版本。提升查询的准确性,增强后续步骤在处理不同查询表达时的鲁棒性。此外,达到消除歧义和不明确性,确保查询表达尽可能贴近用户的真实意图。
数据资源路由器模块,用于将多个版本查询语句转换为向量数据,并采用相似度匹配算法从数据库中获取对应的数据资源;
具体地,数据资源路由器在自然语言数据库查询系统中扮演着关键角色,它的主要目的是将经过语义优化的查询与数据库中的相应数据资源相匹配。这一步骤确保了查询被正确地引导到含有所需信息的特定数据库和数据表,从而提高了查询的准确性和效率。
数据资源路由器的输入是来自语义优化器的优化后查询语句。它依赖于语义优化器提供的清晰、准确的查询表达,因为这些表达将直接影响匹配的准确度和资源的选择。
在此模块中,主要采用两种先进技术。首先是自然语言处理(NLP)技术,特别是采用基于预训练的语言模型(例如M3E_LARGE)进行文本向量化。这一过程首先涉及将用户的查询语句输入到M3E_LARGE模型中。该模型利用其深度学习算法,将自然语言文本转换为数学向量。例如,一个查询语句“查找所有2020年的销售记录”会被转换为一组数字,每个数字代表文本中的某个特定方面,如时间、对象或动作。
接下来是相似度匹配算法的应用。在用户输入查询语句并被转换为向量后,该算法将这个查询向量与数据库中预先存储的Schema信息的向量表示进行比对。这一步骤类似于在高维空间中寻找最近邻点。例如,如果查询的是销售记录,算法会在数据库的向量库中查找与“销售记录”最接近的Schema向量。相似度匹配算法包括余弦相似度、欧几里得距离、曼哈顿距离等。
在执行这些步骤之前,数据库中的每个Schema信息都要经过特殊处理。这包括将数据库中每张表的Schema信息(如字段名、数据类型等)转换为向量,并存储在向量库中。这使得数据资源路由器可以快速有效地通过比较向量来识别与用户查询最相关的数据库和数据表。
数据资源过滤器模块,用于利用数据库管理系统获取数据资源对应的数据表结构;
具体地,数据资源过滤器的关键作用是在数据库查询过程中细化并精选出与用户查询意图最为相关的数据表和字段。在自然语言处理和数据库交互的上下文中,准确对齐用户的查询意图与特定的数据资源是至关重要的。该模块不仅选择与查询直接相关的数据资源,还涵盖通过外键关联的相关表,以全面捕捉查询意图所需的所有数据维度。
数据资源过滤器的输入包括数据资源路由器模块的输出:一系列与优化后查询语句最匹配的数据库资源,以及通过外键关联的其他表的元数据。此模块依赖于之前步骤的高质量匹配结果,以确保从一开始就处于正确的数据上下文中。
这一模块主要利用数据库管理系统(DBMS)的高级元数据查询功能,以及大型语言模型(LLM)的上下文理解能力。DBMS用于详细获取每个相关数据表的结构,包括字段、主键和外键信息,而LLM技术则用于分析用户查询的上下文,以确定哪些字段最符合用户的意图。从而有效地对用户的查询意图和数据库中的具体字段进行对齐。Prompt Engineering在设计上通过详细的步骤指导和具体的例子,来激励语言模型在语义标准化和数据映射方面的能力。这种方法利用了One-Shot Learning策略,即通过一个具体的例子来指导模型理解和执行复杂的任务。通过这种方式,模型能够更准确地理解自然语言查询与数据库结构之间的关系,并能够有效地将查询映射到正确的数据库表和字段上,以达到任务的稳定性和高效性。
通过分析用户的查询语句和上下文,LLM技术帮助识别出与查询最相关的字段,而DBMS提供的元数据查询则确保了对数据库表结构的全面理解。这种手段重在提高字段选择的准确性,保了与查询相关的所有数据表(包括那些通过外键关联的表)都被考虑在内,从而实现了更全面、深入的数据探索。
SQL生成器模块,用于基于数据表结构,将多个版本查询语句转换成SQL查询语句;执行SQL查询语句,获取样例数据;
具体地,SQL生成器模块专注于根据数据资源过滤器选定的数据资源生成具体的单表SQL查询语句。此模块的核心目的是将用户的查询意图准确地转换成数据库可执行的SQL命令,专注于处理单一数据表的查询。这一步骤是实现高效、准确数据检索的关键,确保每个查询语句都精确对应于用户的具体数据需求。
SQL生成器的输入包括来自数据资源选择器的筛选后的单一数据表信息,以及相关的字段、主键和外键信息。在SQL生成器中,核心技术包括推特定数据库SQL语言构建技巧和基于大型语言模型(LLM)的语义理解能力。SQL构建技能用于将选定的数据表和字段信息转换成具体的SQL查询语句,而LLM技术则用于确保生成的语句在语义上与用户的查询意图保持一致。在Prompt设计中明确的角色定义(数据库管理员)、具体的目标(生成SQL查询语句以检索元数据信息)、操作步骤(使用SELECT、FROM和LIMIT子句)和具体要求。引导模型理解如何构建一个有效的SQL查询,强调查询结果的具体性和实用性。
SQL生成器首先利用数据库表和字段信息构建针对单表的查询语句基础结构。接着,LLM技术被用于对查询语句进行语义上的优化和调整,确保每个SQL语句不仅结构上正确,而且与用户的查询意图完全吻合。
SQL生成器的输出是一系列精确构建的单表SQL查询语句。这些查询语句结合了用户的查询意图、选定的数据表结构、以及必要的字段和键值信息。它们被设计为可直接执行,用于在数据库中检索用户请求的具体数据。这些单表查询语句是后续SQL合成步骤的基础,为生成综合性的多表查询提供了关键的构建块。
SQL合成器模块,用于基于样例数据、数据表结构和数据资源获得综合SQL查询语句;
具体地,SQL合成器模块的主要任务是将SQL生成器模块产生的单表查询语句进行合并和优化,以形成一个综合的、针对多表的SQL查询语句。这一步骤对于处理涉及多个数据表的复杂查询至关重要,特别是当用户的查询需要跨表关联和综合分析时。
SQL合成器的输入是由SQL生成器提供的一系列单表查询语句。这些语句包含了针对各个选定数据表的查询逻辑。SQL合成器依赖于这些精确构建的单表查询语句,以及原始查询中的用户意图和上下文信息。
SQL合成器主要利用了高级查询构建技术和基于大型语言模型(LLM)的上下文分析能力。LLM用于高级查询构建技术用于理解和实现不同数据表之间的关联和合并逻辑,确保整个合成过程符合用户原始的查询意图和上下文。
Prompt的设计需要基于一种高级的数据库查询语句生成专家的角色设定。不仅要求对数据库查询语言(如SQL)有深刻的理解和应用能力,还要求能够根据自然语言指令、数据库元数据和样本数据信息生成复杂的查询语句。这种设计在理解用户意图、考虑数据库表结构和关系以及包含必要的数据过滤、分组、排序和聚合功能方面的能力有着更加强的能力表现。
通过高级查询构建技术,SQL合成器能够识别和实现不同数据表之间的关系,如联结(join)、嵌套查询(subquery),以及聚合函数、分组、排序等基本操作。同时,LLM技术的应用确保了在合并查询时不会偏离用户的原始查询意图,保证查询结果的相关性和准确性。
SQL合成器的输出是一个或多个综合的SQL查询语句,这些语句能够跨多个数据表进行数据检索。它们结合了用户的查询需求、各个数据表的关键信息和关联逻辑。
SQL执行器模块,用于执行综合SQL查询语句,获取查询返回的数据。
具体地,SQL执行器模块在本发明中指的是一个用于评估、优化并执行SQL查询的高级系统组件,而不是指数据库底层的执行器。通过这些技术,SQL执行器在执行查询之前,首先对SQL语句进行详细的性能和风险评估。这包括检测可能导致全表扫描或大量资源消耗的查询,并对其进行必要的调整或重写。此外,执行器还应用特定的规则和配置来优化查询性能,确保查询在数据库上的执行既快速又安全。
SQL执行器的输出是成功执行的查询结果,这些结果经过性能优化和风险评估,确保在高效和安全的条件下从数据库中检索数据。这些结果以适合用户需求的格式呈现,使用户能够快速、准确地获得所需信息。
本申请利用大型语言模型(LLM)和先进的自然语言处理(NLP)技术,能够将自然语言输入有效转换为精确的数据库查询语句,相比现有技术,该方案能够更准确地理解复杂的自然语言查询,并将其高效转换为SQL语句,显著提高了查询的准确性和用户体验;本申请结合文本向量化、向量库和向量检索技术,实现了对数据库资源的精细匹配和选择,与传统方法相比,该方案可以更精确地定位到用户查询意图所对应的数据库资源,减少了不相关数据的检索,提高了查询的相关性和效率;本申请通过LLM技术,语义优化器不仅改善了查询表达,还生成了多种语义一致但表达形式不同的查询版本,这种方法增强了系统处理各种不同查询表达的能力,提高了查询处理的鲁棒性,确保在各种不同情境下均能达到高准确率;SQL生成器和执行器的设计高度集成,不仅生成单表查询语句,还能合成复杂的多表查询语句,并有效执行,这种集成方式使得从用户输入到最终数据检索的整个流程更加流畅和高效,尤其在处理复杂多表查询时表现突出;SQL执行器在执行查询前进行全表扫描的检测和预防,确保查询的高效执行,相比现有技术,这种预先的性能优化措施可以显著减少资源浪费和提升查询响应速度,特别是在大型数据库环境中尤为重要。
实施例
输入模块:
步骤1:接收用户输入,用户通过这个界面输入他们的查询。例如,用户可能输入:“帮我查一下华为手机昨天的订单量?”,以下具体实施细节,皆以此作为参考示例,本技术同时也可以支持更多基于JDBC的标准SQL数据库,满足各类业务场景的需求。
步骤2:对输入的查询进行初步处理,包括基于空值、文本长度的检测,以及基于停用词表和正则的合规检测。
步骤3:基于业规则,对文本下游任务进行分发。检测是需要数据库交互的操作,则进入本发明的下游环节。
语义优化器模块:
步骤1:从用户输入模块接收初步处理后的查询,例如:“帮我查一下华为手机昨天的订单量?”。
步骤2:对步骤1中的输入,通过大语言模型基于构建Prompt Engineering对Prompt做角色设定,具体如下:设定
语义理解:模型首先需要对输入文本进行语义理解,提取出关键信息,包括主体(华为手机)、动作(查询)、时间(昨天)和对象(订单量)。这通常涉及到自然语言处理(NLP)中的实体识别、意图识别和时间理解等技术。
语法重构:模型需要将提取的关键信息重新组织成符合标准语法的结构。这包括选择合适的词汇、构建正确的句子结构和使用恰当的时态等。
词汇规范化:模型需要将非正式或口语化的词汇替换为更正式和标准化的词汇。例如,将“订单量”替换为“订单总数”,以符合正式的表达习惯。
风格转换:模型需要将原始的口语化风格转换为更正式的风格。这可能涉及到对句子长度、复杂度和修辞手法的调整。
实现按照特定语言规范进行转换,成为更精确、标准化的表述。例如:“帮我查一下华为手机昨天的订单量?”转换为“查询昨日华为手机订单总数”。
步骤3:通过LLM基于Prompt设定生成查询语义一致但表达不同的版本用户意图文本,以提高后续处理的鲁棒性。
Prompt:
"Given any sentence,rephrase this sentence in five different ways,ensuring all variations preserve the original meaning of the sentence."
Example Input:
"I went for a run to the park this morning."
Example Output:
1."This morning,I took a run to the park."
2."I had a run to the park earlier today."
3."Today in the morning,my run took me to the park."
4."I chose the park as my destination for a morning run."
示例中的“查询昨日华为手机订单总数”可以生成语义一致表述不一样的4个结果:
"获取华为手机昨日订单数量。"
"查询昨天华为手机订单的总计数。"
"显示华为手机昨日的销售订单数。"
"检索昨天华为手机的订单总量。"
数据资源路由器模块:
步骤1:从语义优化器接收一组优化和多样化后的查询表达Text={t1,t2,t3……tn}列表。
步骤2:将数据库中的Schema拼装成复合结构,并将其写入向量数据库中。具体操作如下:
数据库Schema信息:
手机型号表(phone_models)
销售订单表(salesorders)
复合结构设计:
一张表封装一个复合结构的数据单元,单元主要包含数据库信息、数据表信息、字段信息、关联表信息。基本结构如下:
{database_name_en:database_name_cn}|{main_table:{table_name_en:table_name_cn}}|{col1_name_en:col1_name_cn,col2_name_en:col2_name_cn,...}|{related_tables:
[table1_name_en:table1_name_cn,table2_name_en:table2_name_cn,...]}
示例中手机型号表和销售订单表向量嵌入结构:
{mobile_sales_db:"移动商城"}|{main_table:{phone_models:"手机型号表"}}|{model_id:"型号ID",model_name:"型号名称",brand_name:"品牌名称",launch_date:"上市日期"}|{related_tables:[sales_orders:"销售订单"]}
{mobile_sales_db:"移动商城"}|{main_table:{sales_order:"销售订单表"}}|{order_id:"订单ID",model_id:"型号ID",order_date:"订单日期",quantity:"销售数量"}|{related_tables:[phone_models:"手机型号"]}
步骤3:对步骤1接收到的查询表达式列表Text进行遍历。在步骤2中的向量数据库中进行检索,按照L1距离升序排序,取前3条记录,形成一个集合Ci。最后对集合C=C1∪C2∪...Cn去重,并再次按照L1距离降序排序,最终取第一条记录。例如,示例中的一组数据总,其中“显示华为手机昨日的销售订单数。”与与销售订单表的L1距离是最小的。本环节的“显示华为手机昨日的销售订单数。”作为下文中的用户意图文本,销售订单表以及其related_tables的手机型号表作为目标表一并作为下游任务的输入。
数据资源过滤器模块:
步骤1:接收数据资源路由器中的输出数据,包含用户意图文本、目标表信息。
步骤2:调用DBMS的元数据查询接口,获取目标表中main_table和related_table的全部Schema信息,设计一个基本的JSON结构,用于适配更多的业务场景和数据库类型。以参考示例进行操作,其基本Json结构如下:
/>
/>
步骤3:调用LLM,基于Prompt设定,对步骤2中的Schema信息与用户意图进一步做对齐,只保留与用户意图相关的表和字段信息。
/>
/>
步骤4:对步骤3返回的结果进行判断,如果没有返回期望数据,则不再执行下游任务,如果返回数据符合期望,则进行结构化处理,作为下游的输入。例如,参考示例中的最后输出的结构如下:
SQL生成器模块:
步骤1:从数据资Qq.源过滤器接收输出,包括所选的数据表名称、相关字段、主键和外键信息。
步骤2:利用大型语言模型,逐一为步骤1的结果生成SQL查询语句,并默认检索前3行数据。
Prompt:
Role:You are a database administrator.
Goal:Generate an SQL query statement to retrieve metadata informationfrom the database.Tips:
Use the`SELECT`statement to choose the data to retrieve.
Use the`FROM`clause to specify the database and table to query.
Use the`LIMIT`clause to limit the result set to the first three rows.
Requirements:
-You need to provide the name of the database and the name of thetable.
-The query should return the first three rows of the table.
参考示例生成的SQL语句如下:
sales_order:SELECT order_id,model_id,order_date FROM sales_orderLIMIT 3;
phone_models:SELECT model_id,model_name FROM phone_model LIMIT 3;
步骤3:执行SQL语句,获取样例数据。
销售订单表样例数据
手机型号表样例数据
步骤4:将步骤1中的元数据信息、步骤3的样例数据,与用户意图文本一并作为本阶段的输出。
SQL合成器模块:
步骤1:接收SQL生成器输出的数据。包括以下:
示例数据SAMPLE_DATA:接收SQL生成器提供的样例数据。例如,销售订单表和手机型号表的样例数据。
元数据信息META_INFO:接收有关所选数据表的元数据信息,包括表名、字段名、主键和外键信息。
用户意图文本INSTRUCTION:接收用户的查询意图,例如,“显示华为手机昨日的销售订单数”。
步骤2:根据Prompt模板,构建一个SQL合成Prompt。
#Role:Database Query Statement Generation Expert
##Experience
Profound understanding and application of database query languageslike SQL.
##Objective
To generate complex query statements that align with user intentbased on natural language instructions{INSTRUCTION},along with provideddatabase metadata{META_INF}and sampledata information{SAMPLE_DATA}.Thisincludes data filtering,grouping,sorting,and aggregation functions.
##Requirements
-Accurately parse user natural language instructions and understandtheir query intent.
-Consider database table structures and relationships to constructquery statements logically.
-Include necessary data filtering,grouping,sorting,and aggregationfunctionalities.
##Tasks
1.Parse provided user intent instructions.
2.Identify relevant tables and fields based on database metadata andsampledata information.
3.Construct complex query statements that align with user intent,encompassing data filtering,grouping,sorting,and aggregation functionalities.
##Example Input
-User Intent Instruction:"I want to know the average sales for eachproduct in the past week,sorted in descending order by sales."
-Database Metadata:
-Table:Sales(Fields:ProductID,Date,TotalSales)
-Table:Products(Fields:ProductID,ProductName)
-Sample Data Information:[Omitted]
##Output Format
-Generated SQL query statement
##Example Output
```sql
SELECT P.ProductName,AVG(S.TotalSales)as AverageSales
FROM Sales S
JOIN Products P ON S.ProductID=P.ProductID
WHERE S.Date>=DATE_SUB(CURDATE(),INTERVAL 7DAY)
GROUP BY P.ProductName
ORDER BY AverageSales DESC;
```sql
步骤3:步骤2的结果数据经过结构化处理作为下游的输入。参考示例中的用户指令结果如下:
SQL执行器模块:
步骤1:接收SQL查询语句,从SQL合成器接收合成的SQL查询语句。
步骤2:性能和风险评估,在执行查询前,对SQL语句进行性能和风险评估。这包括检查是否有可能导致全表扫描的查询,评估查询的复杂度,以及预测可能的执行时间。
步骤3:对步骤2中存在风险的执行语句,发出预警提醒。对于安全的执行语句进行放行。
步骤4:执行SQL查询,将SQL语句发送到数据库进行执行。监控查询执行过程,捕捉可能出现的错误或性能问题。
步骤5:结果处理和格式化,收集查询返回的数据。根据需要,对数据进行格式化处理,以便于展示和进一步分析。例如,将数据转换为表格格式,或提取关键数据点进行展示。
本发明还提供一种电子设备,包括至少一个处理单元以及至少一个存储单元,其中,存储单元存储有计算机程序,当程序被处理单元执行时,使得处理单元执行上述的方法。
本发明还提供一种存储介质,其存储有可由设备执行的计算机程序,当程序在设备上运行时,使得设备执行上述的方法。
以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种基于自然语言的数据分析方法,其特征在于,包括:
将自然语言输入至大型语言模型;
所述大型语言模型对所述自然语言进行处理,生成与所述自然语言语义一致的多个版本查询语句;
将所述多个版本查询语句转换为向量数据,并采用相似度匹配算法从数据库中获取对应的数据资源;
利用数据库管理系统获取所述数据资源对应的数据表结构;
基于所述数据表结构,将所述多个版本查询语句转换成SQL查询语句;
执行所述SQL查询语句,获取样例数据;
基于所述样例数据、所述数据表结构和所述数据资源获得综合SQL查询语句;
执行所述综合SQL查询语句,获取查询返回的数据。
2.根据权利要求1所述的基于自然语言的数据分析方法,其特征在于,将自然语言输入至大型语言模型包括对所述自然语言进行预处理,预处理包括基于空值、文本长度的检测以及基于停用词表和正则的合规检测。
3.根据权利要求2所述的基于自然语言的数据分析方法,其特征在于,所述大型语言模型对所述自然语言进行处理,生成与所述自然语言语义一致的多个版本查询语句包括:
所述大型语言模型对所述自然语言进行语义理解,获取关键信息,所述关键信息包括主体、动作、时间和对象;
将所述关键信息组织成标准语法结构;
将所述标准语法结构基于Prompt设定生成所述自然语言语义一致的多个版本查询语句。
4.根据权利要求3所述的基于自然语言的数据分析方法,其特征在于,将所述关键信息组织成标准语法结构包括将非正式或口语化的词语替换为标准化词语以及将口语化风格转换为正式风格。
5.根据权利要求3所述的基于自然语言的数据分析方法,其特征在于,将所述多个版本查询语句转换为向量数据,并采用相似度匹配算法从数据库中获取对应的数据资源包括:
基于预训练的语言模型将所述多个版本查询语句进行向量化,获得所述向量数据;
基于相似度匹配算法,将所述向量数据与所述数据库中预先存储的Schema信息的向量进行对比,获得与所述向量数据相似度距离最近的所述向量数据。
6.根据权利要求5所述的基于自然语言的数据分析方法,其特征在于,所述数据表结构包括数据表名称信息、相关字段信息、主键信息和外键信息。
7.根据权利要求6所述的基于自然语言的数据分析方法,其特征在于,执行所述综合SQL查询语句前,对所述综合SQL查询语句进行评估,评估包括评估查询复杂度以及预测执行时间。
8.一种基于自然语言的数据分析系统,其特征在于,包括:
输入模块,用于将自然语言输入至大型语言模型;
语义优化器模块,用于所述大型语言模型对所述自然语言进行处理,生成与所述自然语言语义一致的多个版本查询语句;
数据资源路由器模块,用于将所述多个版本查询语句转换为向量数据,并采用相似度匹配算法从数据库中获取对应的数据资源;
数据资源过滤器模块,用于利用数据库管理系统获取所述数据资源对应的数据表结构;
SQL生成器模块,用于基于所述数据表结构,将所述多个版本查询语句转换成SQL查询语句;执行所述SQL查询语句,获取样例数据;
SQL合成器模块,用于基于所述样例数据、所述数据表结构和所述数据资源获得综合SQL查询语句;
SQL执行器模块,用于执行所述综合SQL查询语句,获取查询返回的数据。
9.一种电子设备,其特征在于,包括至少一个处理单元以及至少一个存储单元,其中,所述存储单元存储有计算机程序,当所述程序被所述处理单元执行时,使得所述处理单元执行权利要求1~7任一权利要求所述的方法。
10.一种存储介质,其特征在于,其存储有可由设备执行的计算机程序,当所述程序在所述设备上运行时,使得所述设备执行权利要求1~7任一权利要求所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410291019.XA CN118132587A (zh) | 2024-03-14 | 2024-03-14 | 一种基于自然语言的数据分析方法、系统、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410291019.XA CN118132587A (zh) | 2024-03-14 | 2024-03-14 | 一种基于自然语言的数据分析方法、系统、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118132587A true CN118132587A (zh) | 2024-06-04 |
Family
ID=91231289
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410291019.XA Pending CN118132587A (zh) | 2024-03-14 | 2024-03-14 | 一种基于自然语言的数据分析方法、系统、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118132587A (zh) |
-
2024
- 2024-03-14 CN CN202410291019.XA patent/CN118132587A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11520800B2 (en) | Extensible data transformations | |
US20240028607A1 (en) | Facilitating data transformations | |
Khoussainova et al. | SnipSuggest: Context-aware autocompletion for SQL | |
US8910120B2 (en) | Software debugging recommendations | |
US20210011926A1 (en) | Efficient transformation program generation | |
US20050102613A1 (en) | Generating a hierarchical plain-text execution plan from a database query | |
US20220058205A1 (en) | Collecting and annotating transformation tools for use in generating transformation programs | |
CN111914534B (zh) | 构建知识图谱语义映射方法及系统 | |
CN112000773B (zh) | 基于搜索引擎技术的数据关联关系挖掘方法及应用 | |
US11163788B2 (en) | Generating and ranking transformation programs | |
CN115576984A (zh) | 中文自然语言生成sql语句及跨数据库查询方法 | |
CN109241080B (zh) | 一种fql查询语言的构建使用方法及其系统 | |
US11487943B2 (en) | Automatic synonyms using word embedding and word similarity models | |
Ai et al. | Sensory: Leveraging code statement sequence information for code snippets recommendation | |
Velázquez-Rodríguez et al. | Uncovering library features from API usage on Stack Overflow | |
CN110580170B (zh) | 软件性能风险的识别方法及装置 | |
CN112183110A (zh) | 一种基于数据中心的人工智能数据应用系统及应用方法 | |
CN118132587A (zh) | 一种基于自然语言的数据分析方法、系统、电子设备及存储介质 | |
KR20110099319A (ko) | 자동적인 데이터 저장소 아키텍처 검출 | |
KR102605929B1 (ko) | 서로 다른 프로세서 자원을 할당하여 정형 데이터와 비정형 데이터를 처리하는 방법 및 이러한 방법을 제공하는 데이터 처리 시스템 | |
CN106484706B (zh) | 用于分布式系统的执行过程化sql语句的方法和设备 | |
KR102605930B1 (ko) | 데이터베이스 상에서 정형 데이터와 비정형 데이터를 처리하는 방법 및 이러한 방법을 제공하는 데이터 처리 플랫폼 | |
CN114090627B (zh) | 一种数据查询方法及装置 | |
CN115168408B (zh) | 基于强化学习的查询优化方法、装置、设备及存储介质 | |
KR102605931B1 (ko) | 복수의 서로 다른 데이터베이스 상의 정형 데이터와 비정형 데이터를 처리하는 방법 및 이러한 방법을 제공하는 데이터 처리 플랫폼 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination |