[0061] 概率古贝尔盒(Gumbel盒子)中,这些最小和最大点分别取为独立的Gumbel‑min和Gumbel‑max的随机变量,最小和最大端点条件:盒子bi和bj都由一个d维向量表示,其中d是盒子的维度,盒子的每个维度都有最小端点和最大端点,并且对于每个维度k,都满足bm,k
[0062] 步骤2.1.2,盒子bi和盒子bj的体积和交集可以表示为:
[0063] (2);
[0064] (3);
[0065] 其中,函数 ,β是温度参数,是一个超参数,γ是欧拉常数;表示盒子bi维度k下的最小端点, 表示盒子bj维度k下的最小端点, 表示盒子bi
维度k下的最大端点, 盒子bj维度k下的最大端点;Vol(box)为盒子体积公式; 为
盒子bi和盒子bj的交集公式;
[0066] 步骤2.2,定义条件概率推理:
[0067] 用r(ei,ej)表示事件ei、ej之间的关系,设定阈值δ,根据条件概率定义P(bi|bj)和P(bj|bi)的表达式:
[0068] (4);
[0069] (5);
[0070] 式中, 为盒子bi和盒子bj交集的体积,Vol(bj)为盒子bj的体积,Vol(bi)为盒子bj的体积;
[0071] 通过将 和 的值分别与阈值δ进行比较,获得如下关系:
[0072] (a)包含关系:若 ,则盒子bj包含在bi中;若,则盒子bi包含在bj中;
[0073] bi和bj是将事件ei和ej编码为Rd中的盒子;
[0074] (b)不包含关系:若 、 均大于等于δ,则盒子bi和bj重叠但互不包含;若 、 均小于δ,则盒子bi和bj不重叠;
[0075] 通过这个公式,满足了所需的对称性约束,即r(ei,ej)=父子关系 r(ej,ei)=子父关系。例如给定事件e2发生在事件e1之后,表明e2是e1的子事件。盒子可以将这两个事件表示为独立的盒子,并通过使b1包含盒子b2来保留它们的语义,还可以推断它们反对称关系,即事件e1是事件e2的父事件。
[0076] 步骤2.3,构建BCE损失函数以训练模型:
[0077] BCE损失函数如下:
[0078] (6);
[0079] (7);
[0080] (8);
[0081] 批次B是一组数据样本的集合,是BERE模型训练或评估的一部分;这组数据样本包括一对事件(ei,ej)以及与该对事件相关的标签和概率值,其作用是定义在批次B数据样本上计算损失函数的范围;在这批数据样本上,将使用所描述的损失函数进行计算,该损失函数用于衡量BERE模型的性能和训练模型;
[0082] 式中,L1为BCE损失函数,y0(i,j)、y1(i,j)分别为两个标签空间;ln(·)表示以e为底d的自然对数函数;I(·)表示指示函数,盒子bi、bj是将事件ei和ej编码为R 中的盒子,δ为阈(i,j)
值;若 大于等于阈值δ,那么y0 被设置为1,否则为0;若 大于等于阈值
(i,j)
δ,那么y1 被设置为1,否则为0;为了方便表示,使用二维二元变量作为标签空间,在两个标量维度下使用 和 对r(ei,ej)进行评估;
[0083] 步骤2.4,通过输入步骤1获得包含语义信息的向量表达式,获得实体之间的关系标签。
[0084] 构建盒子过程如图3所示,图3中的(A)可以看出构建盒子将三个事件进行关联,事件e1为发生了暴风雨、事件e2为电力停电、事件e3为机器不能运转,经关联后可知事件e1在事件e2、事件e3之前,事件e2在事件e3之前;图3中的(B)可以看出盒子具有四种关系:父子关系、子父关系、同指关系和模糊关系;图3中的(C)可以看出BERE模型和传统VECTOR模型之间的根本区别:BERE模型将把事件映射到一致的盒子表示中,无论顺序如何;VECTOR模型分别处理两种情况,无法保持逻辑一致性。
[0085] 步骤3,建立few‑shot命名实体识别模型,对步骤1获得的包含语义信息的向量表达式进行实体识别处理,获得实体标签:
[0086] 步骤3.1,域源中构建模型:
[0087] 步骤3.1.1,构建CONTAINER:
[0088] (a)构建标记嵌入表达式:
[0089] 给定包含n个标记的序列[x1,x2,...,xn],并将步骤1构建PLM的输出作为中间表示ht:
[0090] (9)’
[0091] 其中,t取值范围为1至n, ,l 表示中间表示的纬度;ht是PLM模型对输入标记xt的编码,即标记嵌入,其中文本被切分成的基本单元叫做标记;在给定的文本序列中,PLM(Pretrained Language Model)输出的结构通常是一个张量,其中包含了与输入文本序列中的每个标记相关的表示。这个张量的结构通常是一个形状为[v,d]的矩阵,其中:v是文本序列中标记的数量,也就是序列长度;d是每个标记的隐藏层表示的维度,通常是一个固定的数字,取决于具体的语言模型,例如BERT的隐藏层表示通常是768维。
[0092] CONTAINER集成了双层BERT的PLM,使用PLM使CONTAINER能够利用大规模数据的预训练知识,并将其应用于特定的下游任务;这提供了更好的数据表示,有助于改进few‑shot命名实体识别的性能;通过减小相似实体之间的嵌入距离,增加不相似实体之间的距离,CONTAINER能够更好地捕捉不同实体类别之间的差异,提高分类性能。
[0093] (b)通过投影网络将中间表示通道化,以生成标记嵌入:
[0094] 设标记嵌入ht遵循高斯分布,使用投影网络fµ和fΣ生成高斯分布的参数:
[0095] (10);
[0096] 其中, 、 分别表示高斯嵌入的均值和对角协方差;l表示高斯分布的纬度;该投影层网络为fµ和fΣ通过ReLU接一个单层网络来实现;ELU代表指数线性单‑14
元;ϵ≈e 用于数值稳定性;
[0097] 步骤3.1.2,校准模型:
[0098] (a)定义有效标记对:
[0099] 命名实体识别旨在将每个标记xt分配给其对应的标签yt;任意两个标记xp和xq的标签分别为yp和yq,若标签值相同,即yp=yq,则将两个标记xp和xq视为正样本,并将两个标记xp和xq及其对应的标签yp和yq称为有效标记对;其中p和q取值范围为1至n,表示两个标记xp和xq为序列[x1,x2,...,xn]中任意两个标记;
[0100] (b)根据KL散度计算对比损失:
[0101] 给定高斯嵌入N(µp,Σp)和N(µq,Σq),计算两个标记xp和xq的KL散度如下:
[0102] (11);
[0103] 其中,Tr(.)表示矩阵的迹,N(µp,Σp)表示标记xp的高斯嵌入公式,µp表示xp高斯嵌入的均值矩阵,Σp表示xp高斯嵌入的对角协方差矩阵, 表示Σp的可逆矩阵,N(µq,Σq)表示标记xq的高斯嵌入公式,µq表示xq高斯嵌入的均值矩阵,Σq表示xq高斯嵌入的对角协方差矩阵;l表示高斯分布的纬度;
[0104] 由于KL散度不是对称的,所以需要计算KL散度的两个方向,通过以下公式校准:
[0105] (12);
[0106] 式中,d(p,q)表示校准结果;
[0107] 此步骤利用对比学习来优化标记的嵌入,能够提高表示学习的质量,使得标记(token)的嵌入能够更好地捕捉数据中的关键信息和语义。
[0108] 步骤3.2,训练模型:通过在源域中使用训练数据集Xtr来训练的模型;具体过程为:
[0109] 步骤3.2.1,源域中使用训练数据集Xtr来训练模型:
[0110] 将现有的电网语料库或网上公开的数据集形成训练集Xtr,在每个训练步骤中,从训练数据集Xtr中随机不重复抽取一个批次大小为S的序列批次X,即 ,对于每个样本,通过将相应的标记序列传递给CONTAINER模型来获得其高斯嵌入N(µs,Σs);
[0111] 步骤3.2.2,为标记u找到序列批次X内的正样本Xu,并随后计算标记xu相对于批次中所有其他有效标记对的高斯嵌入损失,以计算批次X中所有标记对的分布差异。高斯嵌入对比学习的CONTAINER框架如图4所示,例如输入句子“Tom Johnson was born in 1961”,使用训练标签PER和DATE在源域中进行训练:将Tom和Johnson打上标签PER,通过PLM生成中间表示;将1961打上标签DATE,通过PLM生成中间表示;was、born和in打上O标签,通过PLM生成中间表示;CONTAINER使相同标签的中间表示聚集,非相同标签的中间表示分散,使得实体识别的结果更加准确。
[0112] 步骤3.3,优化模型:
[0113] 手动标注的少量电网非结构化文档数据样本形成少样本支持集Xsup,该支持集中具有K个标记,使用少样本支持集微调模型,使其适应于目标域,所述目标域为电网非结构sup sup化文档;对于每个支持标记及其标签 的PLM中间表示为ha ;xa 为支
sup sup
持标记,ya 为xa 的标签,a取值为1至K;
[0114] 由于微调时只有少量样本,因此将它们放入单个批次中;若目标类别有多个少样本时,模型可以通过优化高斯嵌入的KL散度来有效适应新的领域;
[0115] 如图5所示,通过最近邻支持集标签为测试样本分配标签,例如输入句子“Byd was founded in China”使用目标标签ORG和LOCATION进行优化,将Byd打上标签ORG,通过PLM生成中间表示;将China打上标签LOCATION,通过PLM生成中间表示;将was、founded和in打上O标签,通过PLM生成中间表示;CONTAINER使相同标签的中间表示聚集,非相同标签的中间表示分散。
[0116] 步骤3.4,测试模型:采用现有的电网语料库或网上公开的数据集形成测试集Xtest,该测试集中具有M个标记,通过最近邻分类器在测试集Xtest中进行推理,以建立few‑test
shot命名实体识别模型:对于测试数据集Xtest,得到PLM中间表示hb ,其中 ;将
test
xb 分配给在PLM表示空间中最接近的支持标记,即:
[0117] (15);
[0118] 式中, 表示在支持数据集 中遍历每一个数据实例和它对应的标签, 表示两个中间表示之间的欧几里得距离的平方值。
[0119] 投影网络的投影层之前的表示实际上包含了比最终输出的表示更多的信息,因此在测试模型时不使用投影层,这有助于性能的提升。模型通过PLM计算测试数据的表示,并在推断过程中找到最近邻的支持集;根据PLM表示空间中最接近的支持标记来为测试数据分配标签,这样可以利用支持数据的标签信息来进行推断。
[0120] 图6所示,通过最近邻支持集标签为测试样本分配标签,例如输入句子“Nvidia launches RTX series GPUs”使用目标标签ORG和LOCATION进行测试,将Nvidia打上标签ORG,通过PLM生成中间表示;将GPUs打上标签LOCATION,通过PLM生成中间表示;将launches、RTX和series打上O标签,通过PLM生成中间表示;通过最近邻分类器对中间表示执行Few‑Shot命名实体识别。
[0121] 步骤3.5,输入需要识别的文档导入建好的few‑shot模型中进行识别。
[0122] 步骤4,通过整合实体和关系信息,将实体标签和关系标签作为特征或上下文信息均添加到BERE模型和few‑shot命名实体识别模型的输入中,实现自动识别。
[0123] 实施例2
[0124] 一种电网轻量级非结构化文档内容自动识别的装置,包括存储器和一个或多个处理器,所述存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于实现实施例1所述的电网轻量级非结构化文档内容自动识别方法。
[0125] 实施例3
[0126] 一种计算机可读存储介质,其特征在于,其上存储有程序,该程序被处理器执行时,实现实施例1所述的电网轻量级非结构化文档内容自动识别方法。
[0127] 应用例
[0128] 本实施例采用软件Python来处理。电网数据文档包含以下信息:变电站名称、位置、运行状态、供电范围、异常事件报告、线路故障、保护设备状态等。且文档的结构并不固定,有些是日常巡检报告,有些则是事故分析报告,还有些是设备维护记录等。例如:
[0129] 文档1,“2023年某月某日,A变电站,运行正常,供电范围覆盖全区,无异常事件。”[0130] 文档2,“2023年某月某日,B变电站,线路故障报告,影响西部供电,故障已定位于10号线路,预计3小时内修复完成。”
[0131] 文档3,“保护设备:断路器A1,位置:C变电站,状态:待维护。”
[0132] 本实施例的电网轻量级非结构化文档内容自动识别方法,包括如下步骤:
[0133] 步骤1,通过建立PLM,以上述文档数据作为输入,获得包含语义信息的向量表达式;
[0134] 处理文档1时,对于“2023年某月某日”,输出一个768维的向量,其包括表达式为[0.85, ‑0.23, 0.47,……]的向量;
[0135] 对于“A变电站,运行正常”,为“A变电站”和“运行正常”各输出一个768维的向量,其包括表达式为[0.12, ‑0.87, 0.48,……]的向量,这些向量通过数字或数字的顺序关系反映每个分词的固有意义,能够识别出“A变电站”与“运行正常”之间正常的顺序关系。
[0136] 对于“供电范围覆盖全区” ,为“供电范围”、“覆盖”和“全区”各输出一个768维的向量,其包括表达式为[‑0.56, 0.92, ‑0.33,……]的向量;
[0137] 对于“无异常事件”,模型输出一个768维的向量。
[0138] 处理文档2时,对于“2023年某月某日”,输出一个768维的向量,其包括表达式为[0.77, 0.23, ‑0.62,……]的向量;
[0139] 对于“B变电站,线路故障报告”,并为“B变电站”、“线路故障”和“报告”各输出一个768维的向量,其包括表达式为[0.91, ‑0.14, 0.38,……]的向量,这些向量通过数字或数字的顺序关系反映每个分词的固有意义;
[0140] 对于“影响西部供电”,并为“影响”、“西部”和“供电”各输出一个768维的向量;
[0141] 对于“故障已定位于10号线路”,并为“故障”,“已”,“定位于”和“十号线路”各输出一个768维的向量;
[0142] 对于“预计3小时内修复完成” 并为“预计”,“3小时内”和“修复完成”各输出一个768维的向量。
[0143] 处理文档3时,对于“保护设备:断路器A1”, 并为“保护设备”和“断路器A1” 各输出一个768维的向量,其包括表达式为[‑0.44, ‑0.89, 0.11……]的向量;
[0144] 对于“位置:C变电站” ,并为“位置”和“C变电站”各输出一个768维的向量;
[0145] 对于“状态:待维护” 并为“状态”和“待维护”各输出一个768维的向量。
[0146] 步骤2,通过盒子事件提取关系构建BERE模型,以便对步骤1获得包含语义信息的向量表达式进行关系提取,获得实体之间的关系标签;
[0147] 处理文档1时,根据前述过程获得的向量表达式,获得“A变电站”和 "运行正常”的关系标签“设备状态” ;
[0148] 处理文档2时,根据前述过程获得的向量表达式,获得“B变电站"和 “10号线路"的关系标签是“故障位置”;
[0149] 处理文档3时,根据前述过程获得的向量表达式,获得“断路器A1”和“C变电站”的关系标签是“设备位置”,获得“断路器A1”和“待维护”的关系标签是“设备状态”。
[0150] 步骤3,使用few‑shot命名实体识别模型,对步骤1中的向量表达式进行处理;
[0151] 处理文档1时,识别出实体1:“A变电站”,标签为“地点”,实体2:“运行正常”,标签为“状态”;
[0152] 处理文档2时,识别出实体1:“B变电站”,标签为“地点”,实体2:“10号线路”,标签为“设备”。
[0153] 处理文档3时,识别出实体1:“断路器A1”,标签为“设备”,实体2:“C变电站”,标签为“地点”,实体3:“待维护”,标签为“状态”。
[0154] 步骤4,通过整合实体和关系信息,将实体标签和关系标签作为特征或上下文信息均添加到BERE模型和few‑shot命名实体识别模型的输入中,实现自动识别。
[0155] 处理文档1时,获得实体 “A变电站”,标签为“地点”,实体“运行正常”,标签为“状态”;“A变电站"和 “运行正常"的关系:“设备状态”。
[0156] 处理文档2时,获得实体“B变电站”,标签为“地点”,实体“10号线路”,标签为“设备”;“B变电站”和 “10号线路”的关系: “故障位置”。
[0157] 处理文档3时,获得实体 “断路器A1”,标签为“设备”,实体 “C变电站”,标签为“地点”,实体3:“待维护”,标签为“状态”;“断路器A1”和 “C变电站”的关系:“设备位置”,“断路器A1”和“待维护”的关系:“设备状态”。
[0158] 以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,熟悉该领域的技术人员应该明白本发明包括但不限于附图和上面具体实施方式中描述的内容。任何不偏离本发明的功能和结构原理的修改都将包括在权利要求的范围中。