结合逻辑规则与文本表示以实现可解释的知识图谱推理-Knowledge-Based Systems期刊(影响指数8.8)-2023

本文主要是介绍结合逻辑规则与文本表示以实现可解释的知识图谱推理-Knowledge-Based Systems期刊(影响指数8.8)-2023,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

摘要

在使用 KG 中的事实三元组的基础上,通过学习逻辑规则以可解释的模式处理 KG 推理。一些规则学习方法只是简单地应用阈值来降低由 KGs 派生大量候选规则引起的指数复杂度。其他方法是在 KG 嵌入事实的基础上对候选规则进行剪枝。然而,这些方法只考虑了事实三元组(主要包含结构信息),而忽略了现实世界 KG 中的大量语义信息。这种情况削弱了寻找高质量规则的方法。为此(To this end),我们提出了一种联合方法,将逻辑规则与文本表示相结合,用于可解释的 KG 推理,称为 LoTus。首先,LoTus 获得了只有事实三元组的结构嵌入,以及具有实体描述的文本嵌入,这些嵌入随后被集成到实体和关系的表示中。其次,通过所提出的结合 KGs 中的结构和文本表示的联合剪枝策略选择最佳的候选规则。最后,LoTus 通过具有规则度量的过滤过程捕获高质量规则并去除低质量规则。它通过学习规则降低了 KG 推理的时间复杂度,同时提供了可解释性。在不同数据集上的大量实验表明,与基线相比,LoTus 在 KG 推理指标 Hits@1,Hits@10和平均倒数排名(MRR)上具有竞争力的性能,并在最近的规则学习方法中取得了显着的优势。

在LoTus中,规则度量是指用于评估规则质量的一种度量方法。它可以帮助我们衡量规则的质量和可靠性,从而过滤掉低质量的规则,只保留高质量的规则。

具体的规则度量方法可能会因不同的应用场景和需求而有所不同。一般来说,规则度量可以考虑以下因素:

  1. 规则的支持度(support):衡量规则在数据集中的应用频率,支持度越高,说明规则越普遍适用。
  2. 规则的置信度(confidence):衡量规则的可靠性,置信度越高,说明规则越可信。
  3. 规则的覆盖度(coverage):衡量规则的实用性,覆盖度越高,说明规则能够应用的场景越多。
  4. 规则的新颖度(novelty):衡量规则的创造性或独特性,如果一个规则具有很高的新颖度,那么它可以提供额外的信息或新的视角。

通过综合考虑这些因素,我们可以对规则进行评估和筛选,以获得更符合要求或更具价值的规则。

1.  介绍

典型的知识图谱推理方法主要集中于独立地表示三元组中的关系和实体,如 TransE 和 RESCAL,它们是缺乏可解释性的黑盒模型。最近,规则学习已被广泛应用于提取 KG 中的逻辑规则,以实现可解释范式

可解释范式是一种机器学习模型,其输出结果可以被人类理解。这种模型通常使用易于理解的算法和模型结构,以便人们能够理解模型是如何做出决策的。

与黑盒模型相比,可解释范式更加透明和易于理解。在黑盒模型中,人们通常无法理解模型是如何做出决策的,因为模型的内部工作原理和参数是未知的。但是,在可解释范式中,模型的决策过程是透明的,人们可以理解模型的决策依据和逻辑。

从 KG 中提取的规则通常是闭合路径规则(CP规则),这是一阶Horn子句,由相同变量连接的原子组成。体原子被约束以在 KG 中形成直接路径,而头原子则闭合该路径。下面是CP规则R_{0}的示例:

R_{0}中,X,Y,Z是变量。R_{0}的长度是体原子的数量,即2。通过给定的规则,推理过程可以被可解释性地表示。例如,假设事实 bornInCity(Marie Curie, Warsaw) 和 cityOf(Warsaw, Poland),事实 bornInCountry(Marie Curie, Poland) 可以通过规则R_{0}推断为推理结论。然而,在学习 KG 推理的逻辑规则方面仍然存在一些挑战

第一,学习知识图谱中的规则所面临的问题是其效率问题。KG总是包含数千个实体和关系,甚至数百万个三元组,因此由于数量激增,学习规则的泛化过程将花费指数级时间。具体来说,一个规则的长度为n,它的复杂度为O(|R|^{n}),其中 |R| 是 KG 中关系的数量。一些KG推理研究适用于通过不同度量的值来过滤规则,但它们对于学习高质量规则并不全面。例如,指标的值可能很高,因为有大量的事实满足以下规则:

然而,R_{1}在某些情况下可能会产生误导。例如,当X,Y,Z分别实例化为 Marie Curie,France 和 Paris 时,我们从R_{1}得出结论,Marie Curie 出生在 France,这与她出生在 Poland 的事实相反。为了解决这个问题,有一些其他方法来修剪候选项,并使用关系和实体的表示来获得更准确的规则。

然而,另一个问题是,仅仅考虑上述方法的事实三元组忽略了足够的语义信息,这将影响KG推理的高质量规则学习。例如,在图1中,三元组 language(Harry Potter
and the Philosopher’s Stone, English)中的实体 Harry Potter and the Philosopher's Stone 可以代表奇幻电影或奇幻小说,仅通过典型的三元组很难区分。在外部描述中使用“film”一词时,该实体指的是 KG 中的奇幻电影。通过增强实体和关系的表示,可以提取出高质量的逻辑推理规则。具体而言,描述中的粗体字“first instalment”“second instalment”“English”提供了防止规则R_{2}被过滤的信息。不合理的规则R_{3}可以被过滤,它导致了不恰当的推理结果,因为获奖信息不在 Harry Potter and the Chamber of Secrets 的描述中。描述中的文本信息有助于在 KG 中选择高质量的规则,并进一步提高 KG 推理的性能。

为此,我们提出了一种可解释 KG 推理方法,将逻辑规则与文本表示相结合,称为LoTus(incorporating Logic rules with Textual representations for interpretable reasoning)。特别地,LoTus 采用了与文本描述融合的嵌入来剪枝候选规则。首先,LoTus 通过实体的描述获得 KG 中实体和关系的结构表示和文本表示。其次,它采用了联合剪枝方法来降低指数复杂度并选择最佳的候选规则。联合剪枝方法通过设计的组合模块自动将知识库中实体和关系的结构信息和文本信息结合起来。最后,LoTus 通过 KG 中三元组计算的规则过滤过程获得高质量的规则。LoTus 的有效性将通过链接预测任务反映在 KG 推理结果中,其可解释性由所学习的规则表示。

主要贡献如下:

-提出了一种 KG 推理方法 LoTus,以获得高质量的规则,减少高复杂度的耗时。同时,它为 KG 推理提供了一种可解释的模式。

-提出了一种具有综合关系和实体嵌入的联合剪枝方法,该方法通过自动组合事实三元组和文本描述的信息来获得。据我们所知,这是第一次将结构和文本表示结合起来以获得高质量的规则。

-在 KG 上的实验验证了 LoTus 的有效性。它在解释推理过程所花费的时间和学习规则的质量方面实现了卓越的性能。与广泛使用的黑盒模型和最近提出的一些规则学习方法相比,LoTus 通过学习到的高质量规则在 KG 推理上取得了有竞争力的性能。

2.  相关工作

KG 中基于逻辑规则的 KG 推理可以分为两类,基于统计的和基于深度学习的。

2.1.  基于统计

2.2.  基于深度学习

3.  准备工作

3.1.  KGs的一阶规则

知识图(KG)被定义为 \mathbb{G}=\left \{\mathbb{R}, \mathbb{E},\mathbb{T} \right \},其中\mathbb{R}是关系的集合,\mathbb{E}是实体的集合。\mathbb{T}\subseteq \mathbb{E} × \mathbb{R} × \mathbb{E},由类似 r(e_{1}e_{2}) 这样的三元组组成,是\mathbb{G}中三元组的集合,其中 r ∈ \mathbb{R}e_{1}e_{2}\mathbb{E}。Horn子句表示二元原子的集合,其中一个原子由一个谓词符号和几个参数组成。在带规则学习的KG推理任务中,我们打算将事实三元组推广到原子中的参数是变量的规则,例如:

其中X,Y,Z_{1},……,Z_{n-1}都是变量,r_{h}r_{i} (1≤i≤n) 是KG的集合R中的特定谓词。如图2所示,实例化的规则 bornInCity(Mary, New York City)∧cityOf(New York City, U.S.)→bornInCountry(Mary, U.S.)。由蓝色箭头和黑色虚线箭头表示,它以可解释的方式提供了一种推理策略。

3.2.  一阶规则的度量

假设CP规则R_{c}如规则(3)的形式,R_{c}的支持度定义为评估规则的正确预测数量:

其中 \underset{b}{\rightarrow} 指的是实例化的CP规则体r_{1}(x,z_{1})\wedge r_{2}(z_{1},z_{2})\wedge ...\wedge r_{n}(z_{n-1},y)。 x,z_{1}z_{2},...,z_{n-1},y 是实例化R_{c}中的实体。在我们的任务中,我们在评估 CP 规则时更喜欢两个标准化程度,即头部覆盖率和标准置信度。规则 R_{c} 的头部覆盖率,在方程式(5)中表示为 hc(R_{c}),表示正确预测与满足KG中头部的三元组的比率。规则 R_{c} 的标准置信度表示为 Conf(R_{c}),将分母更改为满足 body 的三元组:

头部覆盖率是指知识图谱中能够覆盖的问题或事实的比例。在知识图谱中,覆盖率指的是对于一个特定的问题或事实,这里指的是h(x, y),知识图谱中是否存在与之相关的实体、属性或关系的信息。

标准置信度是指知识图谱中每个三元组(实体1-关系-实体2)的置信度。在知识图谱中,每个三元组都由两个实体和一个关系组成,它们之间的关系通常具有一定的置信度。

4.  方法

LoTus 专注于学习判别规则进行推理,这需要特定的目标谓词作为主谓词来学习符合条件的CP规则,如规则(3)。在知识图谱中结合逻辑规则的知识图谱推理任务定义如下。给定目标谓词 r_{h} 作为规则的头部,并且知识图谱 \mathbb{G}=\left \{\mathbb{R}, \mathbb{E},\mathbb{T} \right \},该方法提取CP规则的集合C作为规则(3)的形式。提取的CP规则R_{c} ∈ C,其中的谓词由\mathbb{R}的原子和\mathbb{E}中的实体实例化的变量组成。C中提取的规则用于通过预测KG中缺失的实体进行推理,例如 r(e_{1},?)。图3显示了 LoTus 的三个部分:KG表示,联合剪枝,规则过滤和链接预测。前两部分是主要组成部分。表1给出了符号。

4.1.  KG表示

我们演示了使用采样的事实三元组和外部文本生成KG嵌入。LoTus 首先对与目标谓词 r_{h} 相关的实体和关系进行采样,并创建 \mathbb{G} 的子集 G 。为了提取出包含更多逻辑语义信息的规则,我们提取长度大于1的CP规则。在采样过程中,相关实体被分为两部分:E_{0} 包含与 r_{h} 相关的实体,E_{i} 包含与 E_{i-1} 相关的实体。采样实体 E 的集合是这两个部分的并集。

基于采样实体E,关系子集和 KG 分别产生为 R 和 G 。同时,对给定的文本集进行采样,得到对应于E的子集T。在这个过程中,逆谓词被引入到 KG 中。例如,如果三元组 r(e_{1}e_{2}) 在采样的KG G 中,则逆三元组 r^{-1}(e_{1}e_{2}) 也将被添加到 KG 中。由于样本化的知识图谱中谓词较多,因此在提取CP规则时将更加全面。

在 LoTus 中,我们生成具有结构信息的嵌入和具有外部文本的语义信息的嵌入,并将它们连接起来。对于结构表示,LoTus 采用翻译模型,评分函数定义为:

其中,e_{1}^{f}r^{f} 和 e_{2}^{f} 分别是e_{1}、r 和 e_{2} (头实体、关系、尾实体)的事实结构表示。对于文本表示,评分函数定义为:

其中 r^{d} 指的是 r 的文本表示。e_{1}^{d} 和 e_{2}^{d} 分别是 e_{1} 和 e_{2} 的描述的文本表示。它们由编码模型 M 初始化,该模型是多层卷积神经网络 (CNN)。我们还使用预训练语言模型(PLM)作为替代句子嵌入方法来编码实体的描述:

其中 x_{i} 表示描述中嵌入的第 i 个单词。 z^{d} 是描述的句子嵌入。我们使用多层感知(MLP)来调整嵌入的维度。在训练嵌入期间,我们根据评分函数(6)和(7)来最小化边际损失:

其中 \gamma > 0 是边际超参数。负样本 e_{1}^{-}e_{2}^{-} 是通过随机替换头/尾实体生成的。文本嵌入的损失函数是类似的。

句子嵌入的局限性:句子嵌入方法虽然能够将句子的语义信息转化为向量表示,但它们通常只考虑句子内部的信息,而忽略了句子之间的上下文和语义关系。这使得句子嵌入在处理一些复杂的语言任务时可能不够准确。

替代句子嵌入方法(Alternative Sentence Embedding Methods)是指那些不使用句子嵌入作为主要技术手段,而是采用其他方法来处理句子数据的方法。这些方法可以包括:

  1. 文本分类:这种方法将句子数据分类到不同的类别中,然后使用类别信息来处理句子。
  2. 文本聚类:这种方法将句子数据聚类成不同的簇,然后使用簇信息来处理句子。
  3. 语义匹配:这种方法通过比较两个句子的语义相似度来处理句子。
  4. 实体链接:这种方法通过将句子中的实体链接到知识图谱中的实体上来处理句子。
  5. 情感分析:这种方法通过分析句子中的情感信息来处理句子。

4.2.  联合剪枝

联合剪枝用于减少大量逻辑规则候选。本小节主要演示如何使用结合结构和文本表示的评分函数来选择最佳候选 CP 规则。为了实现联合剪枝过程,我们通过设计的超参数 λ 连接结构嵌入和文本嵌入:

对于另一种组合策略,为了自动结合结构和文本表示,我们设计了一个自适应模块  LoTus-A 。该模块如图 3 所示。为了实现联合剪枝过程,我们通过自适应组合模块连接结构嵌入 e^{f} 和文本嵌入 e^{d} :

d(·) 是指两个表示之间的距离。自动模块通过距离计算相似度,并将其值作为结合两个向量的注意力权重。然后通过 p_{i} = (p_{i}^{f} , p_{i}^{d}) 获得组合表示:

根据这些计算公式,调整外部文本有效性的值是基于从实体和关系的嵌入中获取的文本和结构信息而自适应的。此外,该值适用于不同的实体和关系。它更加灵活,因为在组合不同的实体和关系时,λ 的值是相同的。例如,实体 Marie Curie 的结构嵌​​入是 e_{Marie_Curie}^{f} ,文本嵌入是 e_{Marie_Curie}^{d}p_{Marie_Curie} = (p_{Marie_Curie}^{f} , p_{Marie_Curie}^{d}) 由等式(11)计算。如果计算后p_{Marie_Curie} = (0.2,0.8),则选择 λ 的值为 0.8。对于另一个实体或关系 i,自适应组合模块 p_{i} 的值与 p_{Marie_Curie} 不同,这意味着可以根据不同的实体和关系嵌入自适应地选择 λ 的值。关系的组合过程类似。

联合剪枝生成最佳候选 CP 规则,排名为 \mu _{1}\mu _{2}。在实验中,我们分别通过 \mu _{1}\mu _{2} 选择最重要的规则,并选择公共规则作为候选规则。这种剪枝过程可以有效地降低复杂性和消耗的时间。为了定义用于选择最佳 CP 规则的评分函数,我们应该首先考虑规则中涉及的关系谓词的语义相似性。扩展到 CP 规则,r_{1}\wedge r_{2}\wedge ...\wedge r_{n} 和 r_{h} 之间的语义相似性可以作为规则的指示符。受此启发,我们基于规则 R_{c} 的关系嵌入定义得分函数 \mu _{1}

其中 sim(·) 表示嵌入的相似度。谓词的嵌入是 r_{i}

对于实体嵌入,我们通过加权共现来产生评分函数。对于规则(3)这样的广义 CP 规则,共现是相关性的度量,这意味着 r_{1} 和 r_{2} 的 co-occurrence(共现)取决于在 r(E_{s} , E_{0}) 中 r_{1} 尾部和 r_{2} 头部的聚合嵌入之间的相似性:

其中 w_{s}w_{0} 分别是集合 E_{s}E_{0} 中确切实体的权重。如果我们不把 E_{s}E_{0} 视为加权集,则 w_{s} 和 w_{0} 分别为 1/|E_{s}|和 1/|E_{0}| 。因此,得分函数 \mu _{2} 为:

其中 E_{X}^{r_{1}} 表示实体 X 在 r_{1}(X,Z_{1}) 中的平均嵌入。E_{X}^{r_{h}}E_{Y}^{r_{n}}E_{Y}^{r_{h}}E_{Z_{i}}^{r_{i}}E_{Z_{i}}^{r_{i+1}} 可以用类似的方式解释。

在知识图谱中,co-occurrence通常指的是两个或多个实体(例如,单词、短语、实体、概念等)在文本或数据集中同时出现的频率或次数。这个概念主要用于表示实体之间的相关性或共现关系。

例如,在文本中,“苹果”和“水果”这两个实体可能会经常同时出现。那么,我们就可以说“苹果”和“水果”之间存在co-occurrence关系。

4.3.  规则过滤和链接预测

规则过滤是为了从候选者中获取高质量的规则。根据第 3 节中的指标,我们使用头部覆盖率和标准置信度来选择输出规则。如果候选的这两个值满足预定阈值 hc_{min}Conf_{min} ,则获得最终的CP规则。

在计算过程中,我们使用关系的相邻矩阵来模拟数据集中的谓词。如果三元组存在,则矩阵中对应的元素将为1。规则 R_{c} 的推理过程表示为相邻矩阵的乘积。因此,hc(R_{c}) 和 Conf(R_{c}) 可以表示为:

其中 sum(·) 计算矩阵中非零元素的数量,而 ◦ 是 Hadamard 乘积。乘积运算 \Pi 表示多个矩阵的 Hadamard 乘积。定义的函数 I 在值大于1时将矩阵中的元素设置为1。M_{r_{h}} 和 M_{r_{i}} 分别表示谓词r_{h} 和 r_{i} 的相邻矩阵。

LoTus 通过实例化规则来实现推理过程并获得缺失实体。链接预测过程被表述为实体排序任务。单条规则 R_{i} 的推理过程可以模拟为主体谓词 \prod _{i=1}^{n}M_{r_{i}} 的相邻矩阵乘积,然后将 m 条规则的所有矩阵结果相加,对缺失实体进行排序:

整体算法如算法1所示。

5.  实验结果

5.1.  数据集、指标和基线

5.2.  实验细节

5.3.  与基线比较

5.3.1.  与嵌入方法的比较

5.3.2.  与规则学习方法的比较

5.4.  消融研究

5.4.1.  复杂度分析

5.4.2.  外部文本和事实三元组的影响

5.5.  文本编码模型分析

5.6.  案例分析

表 8 使用一些规则来说明 LoTus 在获得可解释的 KG 推理的高质量规则时的有效性。表 8 中的第一块指示了该方法在 FB15K237 上的没有外部文本的示例规则。目标谓词是/film/story_by,第一个块中的规则都满足阈值,但是突出显示的红色斜体规则具有较低质量并且可以被 LoTus 删除。例如,规则 /film/story_by(X, Z) ∧ /marriage/spouse(Z, Y) →/film/story_by(X, Y) 在完成 KG 推理过程时在逻辑上是不正确的,因为即使该规则的头部覆盖率 (hc) 和标准置信度 (Conf) 值高于阈值, z 的配偶 y 没有涉及 z 编写的 story x 的概率也很高。然而,在合并知识图谱的结构和文本信息后,我们的方法不会产生这些规则并保留高质量的规则,如表 8 的第二个块所示。

在图5中,我们利用一些真实案例来说明外部文本的重要性。表8第一块中的规则(1)和(4)仍然被LoTus保留,这意味着通过实体的描述,提取高质量规则,低质量规则例如规则(2)、(3) ) 和 (5) 则被筛选掉。如果规则 (1) 中实例化的 X、Z、Y 分别为 OctopussyFor Your Eyes OnlyIan Flaming,且给定的主体三元组 /film/prequel(Octopussy,For Your Eyes Only) 和 /film/story_by(For Your Eyes Only,Ian Fleming),规则(1)可以获得真正的三元组/film/story_by(Octopussy,Ian Fleming)。对于规则(1),图5上方所示的描述可以为学习过程提供补充文本信息。诸如 ‘‘thirteenth’’, ‘‘twelfth’’, ‘‘James Bond series’’
和 ‘‘Ian Fleming’’等突出显示的描述可以提高表示,这将支持规则(1)作为高质量规则的合理性并提高其在候选规则中的排名。

对于图5的下半部分,LoTus-w/o-text无法删除规则(2),这意味着在没有外部文本的情况下,很难将规则(2)作为低质量规则删除。然而在LoTus看来,如果规则(2)中实例化的X、Y、Z分别是FrankenweenieTim BurtonHelena Bonham Carter,则 LoTus 可以使用通过突出显示的描述来增强表示从而区分实体。这些描述,尤其是突出显示的文本,帮助 LoTus 删除了规则 (2),因为对 Frankenweenie 和 Helena Bonham Carter 的描述表明,他们不应该通过关系 /film/story_by 连接起来。

6.  总结

在本文中,我们提出了一种将规则学习与文本信息相结合的方法,用于可解释的 KG 推理,名为 LoTus。为了克服学习逻辑规则时效率问题和文本语义不足的挑战,该方法在剪枝过程中添加外部文本,以在更短的时间内提取高质量的规则。数据集上的实验结果通过与黑盒嵌入模型的比较证明了其有效性,并表明我们的方法相对于最近的可解释知识图谱推理任务的规则学习方法的改进。进一步的实验全面地证明了联合剪枝过程对知识图谱中逻辑规则学习的影响,并且证明了学习到的规则可以明确地解释知识图谱的推理过程。 LoTus 在更多 KG 上的可扩展性和性能仍然需要改进。未来,我们打算通过更多来自其他数据集的谓词来学习高质量的规则,例如课程领域的知识图谱,并尝试以差分策略学习CP规则。

这篇关于结合逻辑规则与文本表示以实现可解释的知识图谱推理-Knowledge-Based Systems期刊(影响指数8.8)-2023的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/666350

相关文章

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

Python实现微信自动锁定工具

《Python实现微信自动锁定工具》在数字化办公时代,微信已成为职场沟通的重要工具,但临时离开时忘记锁屏可能导致敏感信息泄露,下面我们就来看看如何使用Python打造一个微信自动锁定工具吧... 目录引言:当微信隐私遇到自动化守护效果展示核心功能全景图技术亮点深度解析1. 无操作检测引擎2. 微信路径智能获

Python中pywin32 常用窗口操作的实现

《Python中pywin32常用窗口操作的实现》本文主要介绍了Python中pywin32常用窗口操作的实现,pywin32主要的作用是供Python开发者快速调用WindowsAPI的一个... 目录获取窗口句柄获取最前端窗口句柄获取指定坐标处的窗口根据窗口的完整标题匹配获取句柄根据窗口的类别匹配获取句

在 Spring Boot 中实现异常处理最佳实践

《在SpringBoot中实现异常处理最佳实践》本文介绍如何在SpringBoot中实现异常处理,涵盖核心概念、实现方法、与先前查询的集成、性能分析、常见问题和最佳实践,感兴趣的朋友一起看看吧... 目录一、Spring Boot 异常处理的背景与核心概念1.1 为什么需要异常处理?1.2 Spring B

Python位移操作和位运算的实现示例

《Python位移操作和位运算的实现示例》本文主要介绍了Python位移操作和位运算的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 位移操作1.1 左移操作 (<<)1.2 右移操作 (>>)注意事项:2. 位运算2.1

如何在 Spring Boot 中实现 FreeMarker 模板

《如何在SpringBoot中实现FreeMarker模板》FreeMarker是一种功能强大、轻量级的模板引擎,用于在Java应用中生成动态文本输出(如HTML、XML、邮件内容等),本文... 目录什么是 FreeMarker 模板?在 Spring Boot 中实现 FreeMarker 模板1. 环

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

SpringMVC 通过ajax 前后端数据交互的实现方法

《SpringMVC通过ajax前后端数据交互的实现方法》:本文主要介绍SpringMVC通过ajax前后端数据交互的实现方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价... 在前端的开发过程中,经常在html页面通过AJAX进行前后端数据的交互,SpringMVC的controll

Spring Security自定义身份认证的实现方法

《SpringSecurity自定义身份认证的实现方法》:本文主要介绍SpringSecurity自定义身份认证的实现方法,下面对SpringSecurity的这三种自定义身份认证进行详细讲解,... 目录1.内存身份认证(1)创建配置类(2)验证内存身份认证2.JDBC身份认证(1)数据准备 (2)配置依

利用python实现对excel文件进行加密

《利用python实现对excel文件进行加密》由于文件内容的私密性,需要对Excel文件进行加密,保护文件以免给第三方看到,本文将以Python语言为例,和大家讲讲如何对Excel文件进行加密,感兴... 目录前言方法一:使用pywin32库(仅限Windows)方法二:使用msoffcrypto-too