1、中国科技期刊数据库 工业 A 收稿日期:2023 年 12 月 22 日 作者简介:赵爽(1990-),男,汉族,广东江门人,硕士研究生,工程师,汉族,研究方向:电力自动化和高电压测量。-100-基于NL2SQL的数据查询与拼接技术在电力业务中的应用 赵 爽 黄思源 广东电网有限责任公司江门供电局,广东 江门 529000 摘要:摘要:随着智能电网的发展,电力系统在输、变、配、用以及调度等各个业务领域的电力数据快速增长,如何对电力数据进行高效管理、查询、分析、应用以及不连续数据的拼接,最大发挥电力数据的隐藏价值,成为研究的热点。本文针对电力数据查询效率低,目标数据不连贯,数据分析和深入挖掘数据
2、价值困难等问题,应用一种基于 NL2SQL 的数据查询及拼接技术,在实现电力数据快速查询的同时,能够对同一类型且无连续性的目标数据进行拼接,使数据的查询、分析和深入挖掘潜在价值提供技术支撑。关键词:关键词:电力数据查询;NL2SQL;数据智能交互 中图分类号:中图分类号:TP391 随着电力系统自动化程度越来越高,电力系统也朝着数字化、智能化的方向发展。电力实时数据为电网的运行状态监视和智能调度提供了数据支撑,为电网的安全稳定运行奠定了基础。同时,随着时间的推移,各个业务领域实时数据的不断累积和存储,形成了大量的电力历史数据。国家电网存储管理的数据已经达到了 PB 量级,并且会持续快速的增长下
3、去。这些历史数据量越来越大,给数据管理、查询和应用带来了一定的困难,同时这些数据蕴含的隐藏价值也难以发挥出来。国网部分地区已经搭建了数据资源共享平台、数据治理平台等,来提升电力数据的管理效率。南方电网也着手建设云端系统,使电力数据上云,来对电力数据进行统一管理和应用。另一方面,随电网的发展,老旧电力自动化设备已不能满足调控一体化的要求,综自改造后,新远动装置的采集点数据与旧采集点数据存在不连贯的问题,在调度自动化系统查找旧采集点的历史数据存在一定的困难。若长时间对这些遥测历史数据不处理,可能造成数据丢失,不能发挥出遥测数据在电力系统中长期负荷预测、运行决策、历史事件分析、电力系统规划建设等方面
4、的作用。本文针对电力数据量大、类型多,数据查询效率低,应用困难,自动化设备改造后自动化设备上送数据不连续等问题,提出应用 NL2SQL(Natural Language to SQL)算法来提实现电网数据智能交互,提高数据查询效率,提升数据利用率,最大化发挥电力数据价值。同时对改造的自动化设备采集的新旧遥测点数据进行拼接,使遥测数据查询更加便捷,数据展示更加直观,使遥测数据在电网规划设计、历史事件分析、中长期负荷预测中发挥应有价值。1 NL2SQL 数据智能交互机理 NL2SQL 是 一 种 基 于 SQL(Structured Query Language)将自然语言转化为计算机语言的技术。
5、NL2SQL 实现人机智能交互,其主要有两个步骤。步骤一是,将自然语言语句和对应的数据库结构进行编码表示;步骤二是,对编码表示的结果转换成正确的 SQL查询语句,完成数据的查询工作1。在自然语言表达中,由于汉语表达自由灵活,一词多义,句式多样等,导致中文理解难度远远大于英语,因此需要运用一定的方法对自然语句进行处理,使其表达唯一,其通常会采用两种方法来实现。一是先将自然语言查询语句转化为中间表达式,再将中间表达式用 SQL 语句映射,这也是 NL2SQL 最容易实现也是最早运用的方法。但这种方法由于语句对模板和规则过于依赖,对模板和规则以外的自然语句难以识别,运用灵活差,不能适应繁杂的电力多业
6、务领域数据查询,难以对自然语句进行准确解析,其语言处理结构如图 1 所示。方法二是机器深度学习,该方法的主要任务是将自然语言对应的 SQL 语句生成问题转变成序列生成或分类任务,并运用数据训练模型对大量的样本数据进行强化学习,最终能够输出正确的 SQL查询语句2-3。这种深度学习方式通过大量的样本数据训练后,能捕捉到复杂查询语句的语义。但但该种方中国科技期刊数据库 工业 A-101-法对训练样本数据要求较高,需要大量的样本数据对其进行训练。本文以神经网络模型算法,运用样本数据进行训练和测试,并对测试准确性进行记录。查询语句查询语句模板规则库模板规则库SQL映射语句SQL映射语句查询语句查询语句
7、神经网络模型训练神经网络模型训练SQL映射语句SQL映射语句 图 1 NL2SQL 两种实现方式示意图 1.1 神经网络模型 深度学习最大的优势在于,它能够有效减少人工的参与,主要通过训练模型从样本数据中学习,其数据处理流程示意图如图 2 所示。传统的机器学习技术模型能够解决一些简单的问题,但是难以从大量且复杂的数据中获取准确的数据特征,所以机器学习算法之前,必须通过设计手动特征库来解决繁琐的特征提取。网络提取和过滤特征后,将原始数据集转换为更高级别的矢量表示。样本数据底层特征提取中层特征提取高层特征提取数据特征提取预测识别图 2 深入机器学习流程 1.2 神经网络的训练方法 通常用于神经网络
8、的训练中,以有效解决前馈神经网络各层参数的梯度问题。该算法基于神经网络的多层叠加结构,并使用链式法则对函数进行求导,并且网络的每一层都经过相同的计算,因此可以非常高效地计算神经网络每一层的梯度参数。在当前的深度学习领域,深度神经网络训练过程可划分成两个阶段。第一阶 段是数据从网络的较低层到较高层的传播,即正向传播阶段;如果正向传播阶段产生不同的预测结果和目标值,则需要从较高网络到较低网络的预测误差的传播,即反向传播阶段5。深度神经网络的训练过程如图 3 所示。网络结构初始化网络结构初始化输入训练样本与输出向量输入训练样本与输出向量逐层计算输出值逐层计算输出值求输出预测值与目标值的差值求输出预测
9、值与目标值的差值差值是否在允许范围内训练结束,得出权值参数训练结束,得出权值参数是否计算网络中神经元的误差计算网络中神经元的误差求误差梯度求误差梯度更新权值参数更新权值参数 图 3 深度神经网络训练过程图 1.3 NL2SQL 多表查询场景下神经网络模型的选择 由于电力数据业务分类多,数据结构复杂,单表查询场景下的 NL2SQL 任务的解决方案已难以满足数据查询的要求,需要用到多表查询,而多表查询的NL2SQL 任务的复杂程度也会随之增大。由于 BERT(Bidirectional Encoder Representation from Transformers)模型中采用了 Transfor
10、mer 模型,大大促进了自然语言处理领域深度学习。且 Google 官方开源了通过超大规模的数据进行了语言模型训练的 BERT 预训练模型,使得在进行其他的自然语言处理任务的时候,可以在训练好的 BERT 预训练模型上对该任务训练时进行微调,从而大大的节约了时间成本和计算成本6。本文结合预训练语言模型 Bert,将模型分为五个环节:聚合函数预测、条件间关系预测、条件运算符预测、条件值预测和条件选择列预测。对于条件列预测,实验中将该组件为解为三个部分,以解决查询语句可能存在多个条件的情况。在各组件预测完之后,模型结合查询语句信息和数据库表格信息对各组件预测结果做规则处理,将最终结果进行封装得到
11、SQL 语句。2 NL2SQL 智能交互实现方法 2.1 问题转化和数据预处理 中文表达句式多样、形式多少样、结构灵活,如何将自然语言转化成计算机语言是一个核心问题。本文利用基于神经网络的BERT模型来将自然语言向数学序列进行转化,将查询语句与表的列名一起输入,语句中的每一个字都被映射为实数域向量。同时由于BERT 的多头自注意力结构,模型能够提取查询语句的多重语义7。由图 4 知道,查询语句由词典映射数字序列,转换成计算机语言,因此该步的关键是构建词典。自然语句转化为计算机语言后,在经过神经网络模型对数据样本进行训练后转化为数学表达式。查询语句查询语句词典映射词典映射神经网络训练模型神经网络
12、训练模型数据表达式数据表达式SQL映射语句SQL映射语句 图 4 查询语句转化和数据处理过程 2.2 词典建设 词典是文字向数学表达转化的关键。字典的丰富中国科技期刊数据库 工业 A-102-程度,决定了模型对偏僻字符、特殊字符处理能力。查询语句中每一个字符都能映射为数学向量,是模型预测正确 SQL 语句的前提条件。本文采用的 Bert 模型来实现字向量编码。模型直接继承了 Keras_Bert 内置的分词器 Tokenizer,并在 Bert 模型词表的基础上,重写分词方法构建词典,以应对查询语句中可能出现的不在 Bert 词典中的字符。2.3 查询语句数据表达式 本模型用谷歌公司发布的 B
13、ert_base 中文模型,总容量大,目前参数总量达 7500M。该模型内有 12 层 transformer 编码器构成,其结构如图 5 所示。其中文本输入主要由三部分组成,文本词嵌入、类型编码及位置编码。当输入中文查询语句时,查询语句中的每个字都将由词典映射为对应的数字表示。Bert 对输入的所有文本字符及字符串进行处理,因此需要对字符的位置就行编码9。输入文本提取特征位置编码SUM多头注意力机制多头注意力机制位置编码类型编码add&norm反馈机制add&norm 图 5 编码器机构图)10000/(sin)2,(mod/2jeldijpiPPE (1))10000/(cos)12,(m
14、od/2jeldijpiPPE (2)通过公式(1)和公式(2)让模型记住每个字符在文本序列中的位置信息。式中:Pj 为字符 j 在文本中的位置0,maxsequence length;i 为字向量的维度 0,encoding dimension;dmodel 为字向量维度的最大值。Segment embedding 的应用是为了区分上下句的关系。用于当输入文本不止一句时,上句中的字符对应的 segment embedding 全部为 0,下句中的字符对应的 segment embedding 全部为 1,本实验中间隔编码都被设为 0。多头注意力机制的思想是将主要注意力放在重要信息上。注意力计
15、算公式如下:AWXA*(3)BWXB*(4)CWXC*(5)CdABSCBAAttentionbTm)(),(6)CiBiAiiCWBWAWAttentionh,(7),(),(21nHhhhComcatCBAM (8)公式(3)-(8)中,W 为通过训练得到的权重参数;X 是输入语句字符;A、B、C 是查询向量 query、键值对 key-value 对应的矩阵表达形式;式(6)中,Sm 是 Softmax 函数的缩写,db是 B 的维度,对 C 矩阵加权,得到输出结果;式(7)是某一个注意力头的计算,A、B、C 同样被分为 h 份,把每一组注意力头分别计算注意力矩阵;式(8)就是将所有注意
16、力头连接起来,得到多注意力头 MH(MultiHead),使模型在不同字符位置下能够将不同表达子空间的信息组合在一起,便于模型理解多重语义。残差连接 Add 可以避免梯度消失。残差连接由维度相同的 Xembedding 和 Attention(Q,K,V)的转置相加得到。在之后的运算中,每经过一个模块的运算,都要把运算前的值和运算后的值相加。Norm 全称是LayerNormalization,作用是把神经网络中的隐藏层归一化标准正态分布。在这个过程中,隐藏层矩阵每行先按行求均值,如公式(9),再按行求方差如公式(10),最后归一为标准正态分布如公式(11)。在此过程中隐藏层每个维度都形成了独
17、立同分布,可以加快训练速度,加快收敛。式(11)中,是可以训练得到的参数,维度与 x 相同,一般可以初始化 为 1,为 0,是为了弥补由计算导致的信息在长度方向的损失;是为了防止除 0 而引入的参数。前馈神经网络层 Feed Forward,由两层线性变换组成,并用激活函数激活。经过 12 层上述结构,隐藏层的结果就是查询语句的数学表达。miijixm11 (9)212)(1mijijjxm (10)2)(iiijxxLayerNorm (11)2.4 模型搭建 实验中,五个组件都被视作为多分类任务,模型结构如图 6 所示,图 6 中的五个组件,聚合函数组件负责预测 SQL 语句中可能存在的聚
18、合操作;条件关系组件负责预测 SQL 语句是单条件还是多条件,多条件之间是“AND”还是“OR”的关系;条件列预测组件条中国科技期刊数据库 工业 A-103-件运算符预测组件、条件值预测组件三个组件的结果共同完成了条件三元组的预测。此外,条件值和条件列的选择,需要结合条件操作符及聚合函数的预测结果实现正确匹配,以确保在多条件时,条件列、条件运算符、条件值能 够精准组成正确的条件语句。输入输入Bert模型Bert模型聚合函数预测聚合函数预测条件关系模型条件关系模型条件运算符预测条件运算符预测条件列预测条件列预测条件值预测条件值预测输出输出 图 6 模型结构图 在模型的输入层,本实验将查询语句与表
19、头拼接起来作为 Input_1,用 Bert 预训练过的两个 token“LS”和“SEP”做标记。CLS 标记查询语句或者每个列名的开始位置,SEP 标记结束位置。间隔编码 segment embedding 在实验中全部为 0,作为输入 Input_2。这两部分输入接到 Keras_Bert 模型层,作为其输入。由于数据库表格的列名数量可能不同,实验设置了一个较大的值,当查询表格小于 此值时,对列名数量做填充和掩码操作,以分配权重,便于模型对最终结果进行处理11。3 NL2SQL 在数据查询及数据拼接上的应用 在实现 NL2SQL 智能交互后,通过查询同一类或者统一设备数据,例如同一设备新
20、旧遥测点数据,再将这些遥测数据通过新旧采集点号或者统一数据描述将数据对齐,实现对新旧数据的拼接,方便对同一类或者同一设备的数据就行查询和对比分析。3.1 数据智能查询需求(1)具备语音快速准确识别及文字语句输入。(2)语义识别高效、准确率高。通过大量数据样本训练基于神经网络的 NL2SQL 模型,能够准确理解语义,并对业务数据库数据进行快速查询。(3)可按操作人要求对同类型数或同一设备数据进行分类和数据整合拼接。(4)可对输出数据生成表格或者曲线,便于分析。3.2 总体功能结构设计 NL2SQL 智能查询系统提供包括文本和语音输入接口、数据词典、BERT 训练模型、及 SQL 语句引擎,数据抽
21、取、答案合成和输出,输出结果分类展示或数据拼接,表格或曲线生产等功能。图 7 基于 NL2SQL 数据查询系统结构 用户通过客户端或者浏览器方式访问,直接输入查询问句文本,比 如“xx 变电站,xxx 开关近三个月遥测数据”;或者移动终端客户端,直接语音输入问句。基于 NL2SQL 的数据查询系统收到提问请求后,通过词典将问句转换为字符,并根据训练所掌握的知识对语义进行理解,预测用户问题所属于业务主题,生成数据表达式,最终转换为 SQL 语句,实现对目标数据的快速查询。用户可在系统根据用户需要对查询结果数据进行更深一步的数据应用处理,比如对数据进行拼接、分类、统计、合成数据曲线等操作。4 效果
22、验证 为了验证查询系统准确率以及系统对查询结果数据处理效果,收集大量样本数据库中的信息并运用适当的算法进行数据处理,才能更有效地评估查询系统查询情况及选择准确率评价方法。NL2SQL 查询准确率一般可用两种方式:逻辑准确率、执行准确率,这种方式可以提升准确率。执行准确率只关注预测得到的结果是否为用户要查询的目标数据而不关注预测的 SQL 语句本身是否正确。如果预测结果是目标数据,则此次预测正确。而逻辑准确率关注 SQL 语句的本身,若预测的 SQL 语句与真实的 SQL语句有不同,则认为此次预测错误。由于不同的 SQL 语句有可能会查询出相同的数据,所以执行准确率一般会高于逻辑准确率。为了准确
23、且直观的反应 SQL 语句的预测精度,本实验采取逻辑准确率的评价方式,运用实验样本数据对查询准确率进行统计和评价。根据 NL2SQL 在单表领域同价结果来看,NL2SQL 在单表领域效果较好,在中文实验数据集上最高准确率达到 87.25%。同时,该智能查询系统对数据拼接、统计、生成报表等方面效果良好。图 8 和图 9 为查询出的电力遥测数据,并对新旧的数据进行拼接和曲线展示。文字输入文字输入语音识别语音识别业务数据库业务数据库样本数据库样本数据库词典词典基于BERT的训练模型基于BERT的训练模型数据表达式数据表达式SQL语句SQL语句答案合成、数据抽取及输出答案合成、数据抽取及输出同类型或者
24、同设备数据分类或拼接同类型或者同设备数据分类或拼接数据表格或曲线展示数据表格或曲线展示中国科技期刊数据库 工业 A-104-图 8 新旧遥测数据对齐 图 9 电力遥测数据拼接和生成曲线 5 结论 本文针对电力数据量大,查询效率低,难以发挥电力数据隐藏价值,同类型电力数据或同一设备数据难以关联拼接和直观展示等问题,介绍一种运用基于BERT 训练模型的 NL2SQL 技术实现对电力数据的智能交互、快速查询及数据拼接、分类、直观展示等后续处理的方法。并通过运用实验样本数据对基于 NL2SQL的智能查询系统有效性、查询准确率、数据拼接等后续处理效果进行验证,验证表明该种方法对数据的查询正确率达到 87
25、.25%能够对查询的结果进行后续报表统计、数据生成、数据拼接等进行有效处理,能够大大提高数据查询效率,有效推动电力数据资产变现。参考文献 1赵志超,游进国,何培蕾,李晓武.数据库中文查询对偶学习式生成 SQL 语句研究J.中文信息学报,2023,37(03):164-172.2殷来祥,李志强,付琼莹.基于 NL2SQL 的兵棋数据智能统计分析方法研究J.系统仿真学报,2022(1):1-11.3黄君扬,王振宇,梁家卿,肖仰华.基于自裁剪异构图的 NL2SQL 模型J.计算机工程,2022,48(09):71-77.4王秋月,程路易,徐波,王志军.基于知识增强的 NL2SQL 方法J.智能计算机
26、与应用,2022,12(07):1-7.5何志义.基于 NL2SQL 的智能报表系统的设计与实现D.武汉:中南财经政法大学,2022.6张中正,王蓓,赵建保,胡学勇,郑勇锋,王承宇.基于 NL2SQL 实现电力数据智能交互J.电网技术,2022,46(07):2564-2571.7 马 骏,李 泽 华,沈 铭 科.NL2SQL 技 术 在 电 厂 设 备 缺 陷 数 据 统 计 中 的 应 用 研 究 J.现 代 信 息 科技,2021,5(15):176-178.8欧杨磊.基于 BERT 的中文 NL2SQL 任务的技术研究D.杭州:杭州电子科技大学,2021.9张立新,于海亮,张栋栋,张珊珊,郑勇峰.基于 NL2SQL 的智能问答系统研究与应用J.电脑知识与技术,2020,16(35):83-86.10张琰.一种基于 BERT 的中文 NL2SQL 模型D.济南:山东大学,2020.11刘译璟,徐林杰,代其锋.基于自然语言处理和深度学习的 NL2SQL 技术及其在 BI 增强分析中的应用J.中国信息化,2019(11):62-67.