【知识图谱导论-浙大】第三、四章:知识图谱的抽取与构建

news2024/9/29 13:23:39

前文:

【知识图谱导论-浙大】第一章:知识图谱概论
【知识图谱导论-浙大】第二章:知识图谱的表示

说明:原视频中的第三章主要介绍了图数据库相关的内容,有兴趣的可以查看相关课件或者对应的视频:

【知识图谱理论】(浙大2022知识图谱课程)第三讲-知识图谱的存储与查询

本文对应的视频链接如下:

【知识图谱理论】(浙大2022知识图谱课程)第四讲-知识图谱的抽取与构建

背景

在传统的知识工程中,知识获取遇到了瓶颈。成年人脑包含近1000亿神经元,每个神经元都可能有近
1000的连接。模拟这样的人脑需要约100TB的参数。假设这100TB的参数能完整的存储人脑中的知识,靠人工编码可以获取这样规模的知识吗?单个人脑中的知识仍然是有限的,如果需要获取全体人类知识,靠人工编码是无法完成的。

深度学习的一个重大贡献是在感知层面,实现了事物和对象的准确识别,但仅仅识别是远远不够的。当人们看到一张图片(画面),不仅要识别其中包含的对象,还需要理解图片中的事物之间的关联关系,并进一步从感知产生知识,再进一步到认知层面。

通过识别世间万物,形成关于万物的知识,进而形成关于万物的概念,并发明了语言来描述这些概念。概念相互组合进而产生逻辑,依赖这些逻辑来完成推理。更为复杂的知识来源人们对事物关系更为深层次的把握。例如使用数学符号描述的模型,就是依赖概念符号进一步抽象出来的更为深层次的关于世界的知识。

让机器自动地从识别、感知出发去构建概念,进而产生逻辑和生成模型还是有很长的道路要走。既然利用机器来表示和自动化获取全部人类知识是很艰难的,知识图谱也就没有必要再陷入传统知识工程的困境中了。于是,知识图谱把知识获取的内容限定于比较清晰的任务,如:概念抽取、实体识别、关系抽取、事件抽取等。

知识图谱构建的数据主要来源:

  1. 结构化数据,如数据库等
  2. 半结构化数据,如表格,列表等
  3. 纯文本
  4. 多媒体数据等
    在这里插入图片描述

从不同来源、不同结构的数据中进行知识提取,形成知识存入到知识图谱。

通常情况下,知识图谱工程项目是通过已有的结构化数据完成能启动,再进一步利用文本图谱等数据来补全知识图谱。

最为直接快速地获取知识图谱数据的方法是从已有的关系数据库中抽取,通常的做法是先定义一个common schema或本体,然后通过映射语言将关系模型映射到本体语言。

当前大部分任务还是从文本中获取知识图谱数据。于是就将任务分解为如下几个任务:

  1. 命名实体识别,主要完成从文本中识别出实体
  2. 概念抽取,主要完成怎么从大量的语料中发现多个词组成的相关术语
  3. 关系抽取,主要完成怎样从句子中抽取一组实体之间的关系
  4. 事件抽取,主要完成如何从文本中抽取事件,任务更加复杂(触发词,事件发生的时间、地点、涉及的对象等等)

实体识别与分类

实体识别与分类主要目标是从文本中识别实体的边界及其类型。例如:
在这里插入图片描述

基于规则和模板的命名实体识别

该方法就是构建模板,然后在文本中进行匹配。例如:
在这里插入图片描述

基于序列标注的方法

基于规则的方式优点、缺点都很明显。所以更为常用的做法就是利用机器学习的算法。实体识别任务可以转换为序列标注的问题,例如:
在这里插入图片描述
在做序列标注之前,则是需要确定实体识别的序列标签体系,例如:
在这里插入图片描述
常见的序列标注模型有:

  1. 隐马尔可夫模型(HMM)
  2. CRF条件随机场
  3. 基于深度学习的实体识别方法

HMM在序列标注上的简单使用

HMM是一个有向图模型,基于马尔可夫性,假设特征之间是独立的。例如:
在这里插入图片描述
待识别的文本作为观测变量,文本对应的标签作为隐变量。

HMM要素定义

使用隐马尔可夫模型进行序列标注的描述如下:

  1. 隐藏状态集合Q,对应所有可能的标签集合,大小为N;观测状态集合V,对应所有可能的词的集合,大小为M;
  2. 对于一个长度为T的序列,I对应状态序列(即标签序列),O对应观测序列(即词组成的句子);
  3. 状态转移概率矩阵 A = [ a i j ] N ∗ N A=[a_{ij}]_{N*N} A=[aij]NN:转移概率是指某一个隐藏状态(如标签“B-Per”)转移到下一个隐藏状态(如标签“I-Per” )的概率。例如,B-ORG标签的下一个标签大概率是I-ORG,但一定不可能是I-Per;
  4. 发射概率矩阵 B = [ b j ( k ) ] N ∗ M B=[b_j(k)]_{N*M} B=[bj(k)]NM:指在某个隐藏状态(如标签“B-Per”)下,生成某个观测状态(如词“陈”)的概率;
  5. 隐藏状态的初始分布 Π = [ π ( i ) ] N \Pi = [\pi(i)]_N Π=[π(i)]N,这里指的是标签的先验概率分布。
HMM的计算问题
  1. 评估观察序列概率:给定模型 λ = ( A , B , Π ) \lambda =(A,B,\Pi) λ=(A,B,Π) 和观测序列O(如一句话“浙江大学位于杭州”),计算在模型 λ \lambda λ下观测序列O出现的概率 P ( O ∣ λ ) P(O|\lambda) P(Oλ),这需要用到前向后向算法。
  2. 模型参数学习问题:即给定观测序列O,估计模型 λ \lambda λ的参数,使该模型下观测序列的条件概率 P ( O ∣ λ ) P(O|\lambda) P(Oλ)最大。这个问题的求解需要用到基于EM算法的鲍姆-韦尔奇算法。
  3. 预测问题:也称为解码问题,即给定模型 λ \lambda λ和观测序列O,求最可能出现的对应的隐藏状态序列(标签序列),这个问题的求解需要用到基于动态规划的维特比算法。
求观测序列的概率:前向后向算法

问题:假设模型参数全知,要求推断某个句子出现的概率,处理过程如下:
在这里插入图片描述

模型参数的估计与学习

在这里插入图片描述
使用鲍姆韦尔奇算法-EM算法进行模型参数的估计与学习,如下:
在这里插入图片描述

解码隐藏状态序列:维特比算法

问题:给定训练好的模型,给定一句话,预测每个词对应的实体标签
在这里插入图片描述
在这里插入图片描述

CRF条件随机场

在这里插入图片描述
在这里插入图片描述

基于深度学习的实体识别方法

随着人工神经网络的发展,深度学习模型可以做到自动产生实体识别任务所需的特征。基于深度学习的实体识别主要流程如下(A Survey on Deep Learning for Named Entity Recognition. (TKDE2020)):
在这里插入图片描述

BiLSTM+CRF模型

主要流程如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

基于预训练语言模型的实体识别

A Survey on Deep Learning for Named Entity Recognition. (TKDE2020)
在这里插入图片描述

实体识别解码策略

A Survey on Deep Learning for Named Entity Recognition. (TKDE2020)
在这里插入图片描述

实体关系抽取与属性补全

实体关系抽取主要是从文本中抽取出两个或者多个实体之间的语义关系;是从文本中获取图谱三元组的主要技术手段,通常被用于知识图谱的补全。例如:
在这里插入图片描述
实体关系抽取有多种方法,如下:
在这里插入图片描述
当前深度学习技术不断发展,端到端的抽取方法能大幅减少特征工程,并减少对词性标注等预处理模块的依赖,成为当前关系抽取的主流技术路线。

Piece-wise CNN Model——PCN

一种位置敏感的CNN关系抽取模型。
在这里插入图片描述

基于BiLSTM的关系抽取

为了解决CNN不能处理长线依赖,RNN有梯度消失的问题,有学者提出了如下模型:
Attention-Based Bidirectional Long Short-Term Memory Networks for Relation Classification(ACL 2016)
模型结构如下:
在这里插入图片描述
其中LSTM用来编码语句:
在这里插入图片描述
Attention层学习权重:
在这里插入图片描述

基于图神经网络的关系抽取

图神经网络在图像领域的成功应用证明了以节点为中心的局部信息聚合同样可以有效的提取图像信息。

利用句子的依赖解析树构成图卷积中的邻接矩阵,以句子中的每个单词为节点做图卷积操作。如此就可以抽取句子信息,再经过池化层和全连接层即可做关系抽取的任务。

相关论文:Graph Convolution over Pruned Dependency Trees Improves Relation Extraction. (EMNLP2018)

模型结构如下:
在这里插入图片描述

基于预训练语言模型的关系抽取

使用预训练语言模型做关系抽取的一些论文如下:

  1. Simple BERT Models for Relation Extraction and Semantic Role Labeling[J], 2019.
  2. Matching the Blanks : Distributional Similarity for Relation Learning. (ACL2019)

在这里插入图片描述

半监督的关系抽取

众所周知,深度学习模型是需要很多标注数据的,标注成本比较高。因此也有研究人员提出了半监督的抽取模型。

基于远程监督的关系抽取

使用比较多的是:基于远程监督的关系抽取。

远程监督的基本假设:两个实体如果在知识库中存在某种关系,则包含该两个实体的非结构化句子
均可能表示出这种关系。

在进行基于远程监督的关系抽取中,会引入大量的噪声信息,基于这个问题有学者提出:基于多实例学习(降噪学习),Neural Relation Extraction with Selective Attention over Instances. (ACL2016),核心思想如下:

  1. 包含相同实体对的句子组成一个Bag
  2. 基于注意力机制选择样本

在这里插入图片描述
除此之外,还有基于强化学习(降噪学习)的方法,Reinforcement Learning for Relation Extraction from Noisy Data. (AAAI2018),

  1. 采取强化学习方式在考虑当前句子的选择状态下选择样例;
  2. 关系分类器向样例选择器反馈,改进选择策略

在这里插入图片描述

基于Boostsrapping的关系抽取

这种方法的主要思想是:使用少量实例作为初始种子集合,然后进行学习得到新的规则库,进而基于新老规则库抽取新的元组,并扩充种子集合,通过不断迭代从非结构化数据中寻找和发现新的潜在三元组。
在这里插入图片描述
基于bootstrap这种标注语料思想以及神经网络的学习能力,有学者提出了:Neural Snowball for Few-Shot Relation Learning. (AAAI2020),
在这里插入图片描述
通过转移现有关系的语义知识来学习新关系。当然这种做法也不是尽善尽美的,其存在语义漂移问题:
在这里插入图片描述
新增加的实例与种子不相关。解决语义漂移的方法也有不少,例如:

  1. 限制迭代次数,迭代次数越多,漂移现象越严重
  2. 采用语义类型Semantic Type对样本进行过滤和约束
  3. 对抽取结果进行类型检查

属性补全

属性补全是指:对实体拥有的属性及属性值进行补全。现实中的任何事物都需要若干属性进行描述。
在这里插入图片描述
主要的解决方案有:抽取式和生成式。

属性补全在商品属性补全得到了应用。在商品关键属性补全后,利于买家选择,利于提升导购,利于优质选品。解决方法:借助算法的图文识别能力,通过商品图片预测商品的类目、同款、品牌。

在这里插入图片描述
在这里插入图片描述

抽取式的属性补全

抽取输入文本中的字词,组成预测的属性值。预测出的属性值一定要在输入侧出现过。
在这里插入图片描述
这里也可以使用序列标注的方式来进行属性的抽取。

该方法的特点只能抽取在输入文本中出现过的属性值预测属性值一定在输入中出现过,具有一定可解释性,准确性也更高。

生成式的属性补全

直接生成属性值,而这个属性值不一定在输入文本中出现,只要模型在训练数据中见过即可。
请添加图片描述
该方法的特点:可以预测不在文本中出现的属性值;只能预测可枚举的高频属性,导致很多属性值不可获取;预测出来的属性值没有可解释性。

拓展

关系抽取有pipline的解决方案,也有joint的方案。其中pipline的解决方法通常就是先抽取实体,然后再进行关系之间的抽取。而joint的方案则直接将实体以及实体之间的关系同时抽取处理。其中pipline的方式容易造成误差传播,实体识别的结果严重影响这关系抽取的结果。

使用joint的实体、关系抽取也是可以使用序列标注的方法解决,这里需要关注如何设计标注的抽取的方式:Joint Extraction of Entities and Relations Based on a Novel Tagging Scheme. (ACL2017),该结构如下:
在这里插入图片描述

**现实的场景中还存在实体嵌套情况,那么针对这种情况该如何解决呢?**有学者提出级联三元组抽取的方法:A Novel Cascade Binary Tagging Framework for Relational Triple Extraction. (ACL2020),结构如下:
在这里插入图片描述
现实的场景中有些实体之间可能存在多种关系,传统的模型主要关注单标签的关系抽取,俺么该怎么办? 有学者提出了一种胶囊网络:Attention-based capsule networks with dynamic routing for relation extraction. (EMNLP2018),

结构如下:
在这里插入图片描述
如图所示,模型首先通过预训练的 embedding 将句子中的词转化为词向量;随后使用BiLSTM 网络得到粗粒度的句子特征表示,再将所得结果输入到胶囊网络,首先构建出primary capsule,经由动态路由的方法得到与分类结果相匹配的输出胶囊。胶囊的模长代表分类结果的概率大小。

现实的场景中还存在多元的关系抽取,传统的关系抽取是抽取两个实体之间的关系,对于多元的实体如何抽取关系呢?

例如订购关系,其中包含:买家,卖家,商品 三个实体。有学者提出Graph LSTM:Cross-Sentence N-ary Relation Extraction with Graph LSTMs(TACL 2017),模型如下:
在这里插入图片描述
对于一些复杂的环境中,有些实体的关系是在多个句子中体现的,或者是在所篇章中体现的。这就引入了新的问题:跨句和篇章的关系抽取。有学者提出了对应的解决方案:Incorporating Relation Paths in Neural Relation Extraction(EMNLP 2017),如下:
在这里插入图片描述
篇章级别的抽取问题相对复杂,难度也比较大。

概念抽取

概念是人们把所感知的事物的共同本质特点抽象出来加一概括的表达。概念之间的关系有:isA关系、subclassOf。通常应用于本体构建。例如:
在这里插入图片描述
概念是认知的基石:人们可以通过概念认知同类实体,如昆虫这一概念使得我们能够认知各种各样的昆虫,无需纠缠细节的不同,概念也可以用于解释现象,如:遇到老虎为什么要跑?老虎是食肉动物。

实体与概念,概念与概念之间的关系属于自然语言处理中的语言上下位关系,如:A isA B,通常称A是B的下位词,B是A的上位词。

概念抽取并构建成无环图的过程又被称为Taxonomy。

概念抽取的几种方法

在这里插入图片描述
基于深度学习的方法通常将任务转换为序列标注任务进行解决。

概念知识的应用

概念知识可以帮助机器理解自然语言。如:
在这里插入图片描述
概念知识可以帮助理解搜索意图,获得更加准确的结果,如:
在这里插入图片描述

事件识别与抽取

事件又是一个哲学问题。在知识图谱中人们认为:事件是发生在某个特定的时间点或时间段、某个特定的地域范围内,由一个或者多个角色参与的一个或者多个动作组成的事情或者状态的改变。

其中:不同的动作或者状态的改变代表不同类型的事件;同一个类型的事件中不同的要素代表了不同的事件实例;同一个类型的事件中不同粒度的要素代表不同粒度的事件实例;
在这里插入图片描述
事件抽取。从无结构文本中自动抽取结构化事件知识:什么人/组织,什么时间,在什么地方,做了什么事。
在这里插入图片描述
事件发现和分类。识别触发词(Trigger):体现发生事件的核心词语,比如这里的quit;分类事件类型(Event Type):比如“离职”事件。
在这里插入图片描述
事件要素抽取。识别事件要素(Event Argument):参与事件的实体;分类要素的角色(Argument Role):参与事件的实体在事件所扮演的角色。
在这里插入图片描述

事件抽取方法

基于模式匹配的抽取方法

基于模式匹配的抽取方法是指对于某种类型的事件的识别和抽取是在一些模式的指导下进行的。模式匹配的过程就是事件识别和抽取的过程。一般可以分为两个步骤,以AutoSlog这个抽取系统为例:

首先包含两个假设:

  1. 事件元素首次提及之处即可确定该元素与事件间的关系
  2. 事件元素周围的语句中包含了事件元素在事件中的角色描述

然后通过句法分析和人工标注规则匹配的方式实现事件抽取。

在这里插入图片描述
基于人工标注语料的模式匹配:模板的产生完全基于人工标注语料,学习效果高度依赖于人工标注质量。为了进一步提升效果,人们提出基于弱监督的模式匹配。

基于弱监督的模式匹配:人工标注耗时耗力,且存在一致性问题;弱监督方法不需要对语料进行完全标注,只需要人工对语料进行一定的预分类或者知道种子模板,由机器根据分类语料或种子模板,自动进行模式学习。

以AutoSlog-TS系统为例,它不需要进行文本的标注,只需要一个预先分类的训练语料,类别是与该语料相关还是不相关,在抽取的过程中首先会过一遍语料库。对每一个名词短语根据句法分析产生抽取规则,然后再整体过一下语料库,产生每个规则的统计数据。根据在相关文本中更长出现的抽取规则,更有可能是最好的抽取规则,根据这一假设将规则进行筛选。基于弱监督的方法可以解决标注标准不一致的问题。同时也降低了模式获取的工作量。

其核心思想:在相关文本中更常出现的抽取规则更有可能是好的抽取规则

在这里插入图片描述

基于模式匹配的方法在特定领域中性能较好,便于理解和后续应用,但对于语言、领域和文档形式都有不同程度的依赖,覆盖度和可移植性较差;模式匹配的方法中,模板准确性是影响整个方法性能的重要因素,主要特点是高准确率低召回率。

基于机器学习的抽取方法

这里主要了解一下基于神经网络的事件抽取方法:DMCNN。模型结构如下:
在这里插入图片描述
对应的论文是:Event Extraction via Dynamic Multi-Pooling Convolutional Neural Networks. (ACL2015)。

它把事件抽取过程看作两阶段多分类任务。第一步是触发子分类,利用dmcnn对句子中的每个词进行分类,判断是否为触发词,如果句子中存在触发词则进行第二步的要素分类,同样是用dmcnn给触发词分配要素,同时匹配要素到角色。

基于深度学的方法都有一个通病,就是需要大量的标注语料。于是有学者提出基于深度学习和弱监督的方法。例如:基于外部知识库的弱监督方法:Leveraging FrameNet to Improve Automatic Event Detection. (ACL 2016)。

其中:

  1. FrameNet是语言学家定义及标注的语义框架资源,采用层级的结构。
  2. FrameNet和事件抽取有着很高的相似性;
  3. ACE 语料训练的分类器去判定FrameNet中句子的事件类别,再利用全局推断将FrameNet的语义框架和ACE中的事件类别进行映射。
    在这里插入图片描述

知识抽取的前沿技术

基于深度学习的知识抽取方法大多都依赖海量的标注数据。在真是的数据中,数据通常是长尾的,数据的标注成本也制约着模型的效果。知识抽取在少样本和零样本的场景下面临着严峻的挑战。例如:给定极少的包含某种关系的样本模型很难在测试集中识别出这一关系,且无法抽取不在训练集中的关系。

知识是不断更新的,我们也需要模型不断学习后抽取新的知识。然而模型在持续学习新知识抽取范式的时候,存在灾难性遗忘问题,这也衍生了一些需求:少样本知识抽取、零样本知识抽取、终生知识收取。

少样本知识抽取

人类可以根据很少的样本就能学习到知识。然而机器仍然需要大量的数据才能获得预测能力。那么如何让机器具备少样本学习能力就成了学者研究的重点。少样本学习的经典模型:

  1. N-way-K-shot
  2. 原型网络

原型网络:Prototypical networks for few-shot learning. (NeurIPS2017)
在这里插入图片描述
对于每个类别的若干样本,可以通过特征平均的方式取得每个类别的原型,对于未知的X,通过计算X与原型中心的距离,可以判断出它所属的类别。

少样本问题的特性是容易受到噪声的干扰,因此有学者提出基于混合注意力的原型网络的少样本关系抽取模型。通过引入Instance-Level Attention和Feature-Level Attention减少原型计算的影响。Hybrid Attention-based Prototypical Networks for Noisy Few-Shot Relation Classification. (AAAI2019)
在这里插入图片描述
除此之外还有:基于实体关系原型网络的少样本知识抽取Bridging Text and Knowledge with Multi-Prototype Embedding for Few-Shot Relational Triple Extraction. (COLING2020),以进行三元组的抽取。
在这里插入图片描述
在这里插入图片描述
我们知道三元组的抽取包含实体以及实体之间的关系。显然就可以学习实体原型以及关系原型的方式,基于原型网络实现少样本知识获取。

零样本学习

零样本学习(zero short learning, zsl),基于可见标注数据集及可见标签集合,学习并预测不可见数据集结果.
在这里插入图片描述
当前使用的主要方法有:转换问题设定,学习输入特征空间到类别描述的语义空间的映射。

基于阅读理解的零样本关系抽取:将零样本关系抽取问题转换成阅读理解,已知实体对中的一个实体以及它们之间的关系,去抽取另一个实体。Zero-Shot Relation Extraction via Reading Comprehension. (CONLL2017)
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/150163.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[Linux理论基础1]----手写和使用json完成[序列化和反序列化]

文章目录前言一、应用层二、再谈"协议"三、 网络版计算器手写版本使用第三方库json实现完整代码总结前言 理解应用层的作用,初始HTTP协议;理解传输层的作用,深入理解TCP的各项特性和机制;对整个TCP/IP协议有系统的理解;对TCP/IP协议体系下的其他重要协议和技术有一定…

JPG格式如何转为PDF格式?快来学习如何转换

图片是我们经常用到的一种便携式文件,像我们日常的照片或者是一些学习资料、工作资料都是图片形式的,我们经常会把这些图片发送给其他人,这时候就需要想一个简单的办法把图片一次性发送过去,所以我们可以将图片转换为PDF文件&…

暨 广告、推荐、搜索 三大顶级复杂业务之 “广告业务系统详叙”

文章目录暨 广告、推荐、搜索 三大顶级复杂业务之 “广告业务系统详叙”广告系统的核心功能ADX 架构流程概述典型 ADX 架构图概述消息中心抱歉,有段日子没码字了,后面会尽量补出来分享给大家。这段时间整理了关于 “广告业务” 相关的思考,作…

OSPF笔记(五):OSPF虚链路--普通区域远离骨干区域

一、OSPF 虚链路 1.1 虚链路邻居关系: hello包只发送一次,没有dead时间 虚链路配置邻居指的是RID,非接口IP 1.2 虚链路解决的问题: 普通区域远离骨干区域0的问题 普通区域连接两个骨干区域0问题 (1)…

SpringSecurity授权功能快速上手

3. 授权 3.0 权限系统的作用 例如一个学校图书馆的管理系统,如果是普通学生登录就能看到借书还书相关的功能,不可能让他看到并且去使用添加书籍信息,删除书籍信息等功能。但是如果是一个图书馆管理员的账号登录了,应该就能看到并…

最新款发布 | 德州仪器(TI)60G单芯片毫米波雷达芯片 -xWRL6432

本文编辑:调皮哥的小助理 概述 最近,德州仪器(TI)推出了单芯片低功耗 57GHz 至 64GHz 工业(汽车)毫米波雷达传感器IWRL6432,具有 7GHz 的连续带宽,可实现更高分辨率。除了UWB雷达之外,IWRL6432目前是毫米波雷达带宽最…

漏洞挖掘-不安全的HTTP方法

前言: 年关将至,这可能是年前最后一篇文章了。已经有一段时间没有更新文章了,因为最近也没有学到什么新的知识,也就没什么可写的,又不想灌水。最近关注的好兄弟们多了很多,在这里也是十分感谢大家的支持&am…

Make RepVGG Greater Again | 中文翻译

性能和推理速度之间的权衡对于实际应用至关重要。而重参化可以让模型获得了更好的性能平衡,这也促使它正在成为现代卷积神经网络中越来越流行的架构。尽管如此,当需要INT8推断时,其量化性能通常太差,无法部署(例如Imag…

SQL BETWEEN 操作符

BETWEEN 操作符用于选取介于两个值之间的数据范围内的值。 SQL BETWEEN 操作符 BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。 SQL BETWEEN 语法 SELECT column1, column2, ... FROM table_name WHERE column BETWEEN value1 AND va…

力扣714题 买卖股票的最佳时机含手续费

class Solution {public int maxProfit(int[] prices, int fee) {// 买第一天股票所需要的全部费用(买入)int buy prices[0] fee; // 利润总和int sum 0;for(int p:prices){// 如果买后些天的股票所需的全部费用比第一天的少,就买后边这天的(买入)if(p fee < buy){buy …

【Python】python深拷贝和浅拷贝(一)

【Python】python深拷贝和浅拷贝&#xff08;一&#xff09; 定义 直接赋值&#xff1a;其实就是对象的引用。浅拷贝&#xff1a;拷贝父对象&#xff0c;不会拷贝对象的内部的子对象。深拷贝&#xff1a; copy 模块的 deepcopy 方法&#xff0c;完全拷贝了父对象及其子对象。…

SpringBoot过滤器与拦截器

为什么要有过滤器和拦截器&#xff1f; 在实际开发过程中&#xff0c;经常会碰见一些比如系统启动初始化信息、统计在线人数、在线用户数、过滤敏高词汇、访问权限控制(URL级别)等业务需求。这些对于业务来说一般上是无关的&#xff0c;业务方是无需关注的&#xff0c;业务只需…

Ubuntu20.04安装ROS Noetic

一、实验环境准备 1.使用系统:Ubuntu20.04&#xff08;安装不做赘述&#xff0c;可看我另外一篇博客Ubuntu20.04安装&#xff09;&#xff0c;可到Ubuntu官网下载https://ubuntu.com/download/desktop 2.配置网络&#xff0c;使其可通互联网 二、在Ubuntu20.04上搭建ROS机器人…

树上差分-LCA

树上差分算法分析&#xff1a;练习例题差分的基本思想详情见博客&#xff08;一维、二维差分&#xff09;&#xff1a; https://blog.csdn.net/weixin_45629285/article/details/111146240 算法分析&#xff1a; 面向的对象可以是树上的结点&#xff0c;也可以是树上的边 结点…

springmvc 文件上传请求转换为MultipartFile的过程

前言: 最近在研究文件上传的问题,所以就写下这个博客,让大家都知道从流转换为MutipartFile的过程,不然你就知道在方法中使用,而不知道是怎么样处理的,是不行的 从DiaspatherServlet说起: 别问为啥,去了解tomcat和servlet的关系,我后面会 写这篇博客的 servlet的生命周期 ini…

[ 数据结构 ] 查找算法--------线性、二分、插值、斐波那契查找

0 前言 查找算法有4种: 线性查找 二分查找/折半查找 插值查找 斐波那契查找 1 线性查找 思路:线性遍历数组元素,与目标值比较,相同则返回下标 /**** param arr 给定数组* param value 目标元素值* return 返回目标元素的下标,没找到返回-1*/public static int search(…

63.Python 调用类的属性和方法

63.调用类的属性和方法 文章目录63.调用类的属性和方法1. 调用属性的语法2.调用类的方法3.总结1. 调用属性的语法 我们根据类创建了一张奥迪A6的小汽车。根据汽车流水线呢&#xff0c;汽车生产完之后&#xff0c;需要移交给检查部门检查车辆的外观、颜色(属性)等是否与图纸一致…

JavaEE高阶---SpringBoot 统一功能处理

一&#xff1a;什么是SpringBoot 统⼀功能处理 SpringBoot统一功能处理是AOP的实战环节。我们主要学习三方面内容&#xff1a; 统一用户登录权限验证&#xff1b;统一数据格式返回&#xff1b;统一异常处理。 二&#xff1a;统一用户登录权限验证 Spring 中提供了具体的实现…

Scala 集合常用函数

文章目录集合常用函数一、基本属性和常用操作1、常用方法2、案例示例二、衍生集合1、衍生集合常用方法操作2、案例示例三、集合简单计算函数1、常用计算操作2、案例示例四、集合计算高级函数1、语义说明2、案例示例集合常用函数 一、基本属性和常用操作 1、常用方法 (1) 获取…

Release库与Debug库混用导致释放堆内存时产生异常的详细分析

目录 1、问题描述 2、使用Windbg启动Debug版本的exe程序进行分析 3、进一步分析 4、问题复盘 5、为什么Debug库与Release库混用可能会出异常&#xff1f; 6、最后 VC常用功能开发汇总&#xff08;专栏文章列表&#xff0c;欢迎订阅&#xff0c;持续更新...&#xff09;ht…