Dynamic Extraction of Subdialogues for Dialogue Emotion Recognition

对话情感识别的子对话动态提取

  • 摘要
  • 1. 介绍
  • 2 相关工作
    • 2.1 对话上下文建模
    • 2.2 常识知识
  • 3 方法
    • 3.1 问题定义
    • 3.2 模型概述
    • 3.3 特征提取模块
    • 3.4 依赖性建模
    • 3.5 交互式子对话提取模块
    • 3.6 重要性增强的多头自注意力模块
    • 3.7 子对话框主题提取模块
    • 3.8. 分类模块
  • 四、实验
    • 4.1 数据集
    • 4.1 实验细节
    • 4.2 基线
    • 4.3. 结果与分析

摘要

对话中的情绪识别(ERC)的目的是识别对话中每一个话语中所表达的情绪。然而,以往的一些方法并没有充分考虑到对话中每个说话者的话语和目标话语的相对位置信息对情绪分析的影响,也忽略了不同子主题下目标话语所表达的情绪的差异。我们引入了一种动态提取子对话(DESD)方法的情绪识别来解决这些问题。该方法利用每个说话者的话语和目标话语的相对位置信息来提取子对话。通过考虑每个说话者对情感表达的贡献,我们可以更准确地捕捉到对话中的情绪动态。此外,我们还提取了子对话的主题信息,以捕捉不同的子主题对目标话语情绪的影响。通过在四个不同数据集上的实验,验证了网络的有效性。我们的代码可在以下网站中获得:https://anonymous.4open.science/r/DESD-1FDF。

1. 介绍

对话情绪识别的目的是理解对话参与者的情绪状态,包括积极、消极和中性,以及情绪类别,如快乐、愤怒和悲伤。它被广泛应用于社交媒体分析、心理健康监测等领域,有助于提高用户体验和智能决策。

在对话中,情感通常是基于语境的,理解一个话语的情感需要同时考虑前面和后面的语境。因此,对话情绪识别需要对对话上下文进行建模,以确保变化和情绪进化被正确地捕获。许多以前的方法利用递归神经网络(RNNs)(DialogRNN[1],DialogXL[2],DialogueCRN[3],ERCMC[4])和图神经网络(GNNs)(DAG-ERC[5],MM-DFN[6],KGCN-ERC[7],CMCF-SRNet[8])模型对话的上下文信息和语义特征的话语捕捉情绪的传播和变化。这些方法在建模环境中取得了良好的效果。尽管之前的方法为语义分析提供了基础,但是他们没有充分考虑说话人话语与目标话语之间的相对位置信息及其对情绪分析的潜在影响。此外,这些研究忽略了同一目标话语在不同的子主题下可能表达出不同的情绪的事实。考虑到对话可能涉及几个不同的子主题,如图1所示。并且,相同的话语在不同的主题语境下可能有不同的情感颜色,如图2所示。为了解决这一问题,我们提出了一种动态的子主题选择方法,并优化了多重注意力机制,以增强对相关话语的关注。此外,我们采用变分自编码器技术来提取每个子对话的主题信息,用于准确地捕捉目标话语的情绪倾向。

在这里插入图片描述

在这里插入图片描述
在本文中,为了更准确地识别对话中参与者的情绪,我们提出了一种动态子对话提取(DESD)的情绪识别方法。具体来说,我们首先使用双向长短期记忆(LSTM)对上下文和说话者的依赖关系进行建模,然后根据话语的接近程度和说话者的相对位置动态选择子对话。然后,我们利用重要性增强的多头自注意力来评估对话中话语的重要性,捕捉最重要的话语进行情感识别,并将更多的注意力集中在这些话语上。此外,我们利用一个变分自编码器来提取子对话的主题,以帮助情绪识别。我们对4个常用的ERC数据集进行了广泛的实验,实验结果表明,我们提出的DESD在四个数据集上取得了很好的效果。

本文的主要贡献如下:

  • 结合说话者的相对位置信息,我们提出了一种动态提取子对话(DESD) 用于情绪识别,以提高对话情绪识别的准确性。
  • 我们设计了一个交互式子对话提取模块来提取每个子对话,以及一个重要性增强的多头自注意力模块(IEMHSA)和一个子对话主题提取模块(TEM),以提高对话情绪识别的准确性。我们的方法在四个数据集上都取得了良好的性能: DailyDialog、MELD、IEMOCAP和EmoryNLP。

2 相关工作

2.1 对话上下文建模

深度学习技术在对话情绪识别领域得到了广泛的应用,特别是递归神经网络(RNN)和图卷积网络(GCN)技术。这些技术利用神经网络模型,通过深入分析文本数据,来准确地识别对话中的情绪态度。在会话情绪识别中,RNN是一种常用的模型,通过对文本序列的时间信息进行建模,可以帮助理解会话中情绪的语境和演化。其中,bc-LSTM [9]是一个基于LSTM的模型,设计用于捕获同一视频中来自其周围环境的话语的上下文信息。DialogueRNN[1]使用了三个门控循环单元来对说话者、前一个话语的上下文和前一个话语的情绪进行建模。 Icon[10]将自我和对话者的情感影响分层建模为一个能够生成上下文总结的全局记忆。CMN [11]通过引入一种基于注意力的跳跃机制,将门控循环单元集成到由每个说话者的历史话语建模的记忆中。双向快速门控循环单元(BiFAGRU)[12]引入了一个注意AGRU来更新门控循环单元(GRU)的内部状态,并进一步改进AGRU为BiAGRU,以平衡最近和遥远的记忆上下文信息。MuCDN [13]使用两种独立的方法,显式和隐式,来有效地处理多方对话中的上下文和说话者建模。DialogueEIN[14]利用语义交互网络捕获对话级语义上下文表征,利用情绪交互网络对情绪交互进行建模。

除了RNNs外,GNNs也被广泛应用于会话情绪识别中。GNNs可以通过卷积操作捕获文本中的局部特征,如情感单词和短语,来帮助情感分类。DialogueGCN[15]通过图网络解决了RNN方法中上下文传播的问题,主要是通过对话者和对话者之间的自依赖性来实现交互依赖性。SumAgagGIN[16]引入异构概括图来推断与主题相关的情绪短语,增强话语表征,并构建聚合图来捕捉相邻话语的短期情绪影响。DAG-ERC [5]引入了有向无环GNNs,用于在单个层中反复收集每个话语的先行信息,从而实现了对远程上下文的编码。S+PAGE [17]通过双流会话transformer(TSCT)和PAG提取上下文特征,然后使用条件随机场(CRF)层对情绪标签的全局转移进行建模。MMDFN [6]利用梯度分离融合(GDF)模块,通过学习内在的序列模式和控制信息流,自然地融合多模态上下文信息。GraphCFC [18]将对话建模为多模态定向异构图,并通过PairCC策略逐步融合这些特征。引入GAT-MLP来求解GNN过平滑问题。这些模型的引入和改进导致了对话情绪识别表现的显著提高。

随着预训练语言模型的流行,会话情绪识别的研究不断发展,越来越多的方法开始使用这些模型来提高表现。其中一些方法包括对话框eCRN[3]、CoMPM [19]、M2FNet [20]和抓取[21]。这些方法利用了预训练的语言模型的力量,显著提高了对话情绪识别的准确性。

2.2 常识知识

为了帮助对话情绪识别,一些方法利用外部常识知识来提供额外的上下文信息。这些知识可以来自各种领域,包括情感词汇、情感知识图和领域专业知识。通过引入这些额外的知识,该模型能够更好地理解和解释对话中的情感内容。例如,KET [22]利用情感图注意力机制来平衡知识实体的相关性和情绪性。COSMIC[23]是基于一个广泛的常识性知识库,它被用于捕捉个性、事件、精神状态、意图和情绪之间的复杂的相互作用。SKAIG [24]通过结合过去、现在和未来的信息来源来增强上下文建模,这使得边在建模话语之间的心理交互中发挥关键作用。TODKAT [25]利用注意力和门控机制来整合通过不同方法检索到的常识知识。

3 方法

3.1 问题定义

给定一个包含N个连续话语的对话上下文{u1,u2,u3,…un}和M个说话者{s1,s2,s3,…,sm},每个话语在表达一种情感时都与一个特定的说话者相关联。ERC的主要目标是识别说话者si所说的话语ui表达的情感。

3.2 模型概述

我们提出的体系结构,如图3所示,包括以下关键模块。(1)特征提取模块使用RoBERTa从每个话语中提取关键特征。(2)依赖建模建模上下文和每个说话者之间的依赖关系。(3)交互式子对话提取模块根据话语的接近程度和说话者的相对位置,动态选择子对话。(4)重要性增强的多头自注意力增强了子对话对整个对话中目标话语的重要性。(5)子对话主题提取模块使用一个变分自编码器提取每个子对话框的主题。(6)分类模块将每个模块的输出拼接在一起,以预测每个话语的情绪。

在这里插入图片描述

3.3 特征提取模块

我们利用预训练的语言模型RoBERTa [26]的语言理解能力来捕获话语的语义信息。具体来说,我们用一个特殊的标记[CLS]拼接每个话语,并将其输入RoBERTa模型。然后,我们提取最后一层嵌入的[CLS]作为话语的特征表示。
在这里插入图片描述

3.4 依赖性建模

上下文依赖建模(CDM):为了更全面、更有效地理解对话中的语义信息,我们在模型中引入了一个双向的LSTM [27]。通过使用双向LSTM,我们可以同时考虑上下文信息来更准确地建模和分析对话。
在这里插入图片描述

我们利用双向LSTM不仅关注当前的话语,还可以回溯到之前对话的历史,以更好地理解话语中的情感、态度和语义。

说话者依赖建模(SDM):为了捕捉每个说话者独特的情感表达模式和独特的风格,我们提取每个说话者的话语,并将它们输入一个双向LSTM中进行分析。

在这里插入图片描述
在这个过程中,我们不仅收集说话者的话语,而且对潜在的情感和语言风格进行更深入的挖掘。通过使用双向LSTM,我们可以有效地捕捉说话人单词中的上下文信息,而不局限于一个话语或一个单词的表面意义。这有助于我们更全面地理解情感表达,以及他们可能使用的特定语言习惯和修辞手法

在这里插入图片描述

3.5 交互式子对话提取模块

为了充分考虑每个说话者的话语与目标话语之间的相对位置信息对情绪分析的影响。我们提出了一种交互式的子对话提取方法,如图4所示。该方法的目的是通过在更精细的层次上考虑子对话和情感背后的交互作用,来提高对话理解的准确性

在这里插入图片描述

窗口尺寸选择:通常,每个话语只与少数相邻的历史话语相关联。此外,为了确保每个说话者尽可能地在子对话中被表示,我们采用了一个窗口大小(表示为w’)度量,其中w’是通过考虑在一段文字中出现的不同说话者M的数量总和以及目标话语的数量来计算的。
在这里插入图片描述
话语选择:说话者的说的话在对话中往往以不规则的顺序出现,我们制定了一套规则来选择子对话。作为子对话的一部分,我们选择了在窗口内不同说话者相对于目标话语位置为1的历史话语。这有助于更准确地捕捉对话中的情感动态,因为考虑了每个说话者对情感表达的贡献。 子对话选择过程遵循以下规则:
在这里插入图片描述
在这里插入图片描述
接下来,我们将那些相对位置不等于1的话语设置为0。为了更符合对话的特点,我们还将目标话语后的所有话语都设为0。特别是,xo和xo之间的相对位置被设置为1。然后,我们使用修改后的相对位置信息来生成子对话的掩模。最终,我们得到了完整对话的MASK矩阵,如图5(a)所示。我们使用这个MASK矩阵来确定每个话语的子对话范围
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3.6 重要性增强的多头自注意力模块

考虑到最接近目标话语的话语通常具有更高的信息密度,我们的目标是更准确地赋予这些话语更大的权重。为此,我们引入了一种重要性增强的多头自注意力机制,该机制利用交互式子对话框提取模块中的MASK矩阵,有意地强调重要话语的影响。

具体来说,我们首先修改了MASK矩阵中的1值,对其添加子对话的重要性得分。得分是根据子对话中话语数量与整个对话中话语数量的比率计算得出的随后,将MASK矩阵中的所有0值修改为1值。注意力加权矩阵M‘如图5(b)所示,这个新的矩阵M’用于校正原始的注意力分数。
在这里插入图片描述

接下来,我们使用多头自注意力机制[28]来计算每个话语的注意力分数,然后乘以M‘,然后归一化,得到重要性增强的注意力分数。最后,我们乘以这些注意力分数与权重矩阵V来生成话语的向量表示,并将所有注意力头的结果连接起来:
在这里插入图片描述

3.7 子对话框主题提取模块

为了解决同一目标话语在不同的子主题下可能表达不同情绪的事实。我们使用变分自动编码器(VAE)[29]来获取关于每个子对话W的主题信息。变分自动编码器有助于将子对话映射到一个潜在的空间,其中每个维度对应于一个主题或情感因素。这样,我们就可以捕捉每个子对话的主题特征,让我们对对话中涉及的不同主题有更深入的理解。
在这里插入图片描述

编码过程:对于话语wi,我们使用神经网络来推导与wi相关的分布p(Z | wi)。在这种情况下,我们假设这个与话语wi相关的分布是一个多元独立的正态分布。我们从这个分布中抽样,得到一个隐变量zi,然后用它来拟合话语wi。我们利用两个神经网络f1和f2来计算µi,δi的wi:
在这里插入图片描述
为了提高生成能力,使网络尽快收敛,我们期望δi收敛到1,µi收敛到0,即N(µi,δi)≈N(0,1)。

在这里插入图片描述
解码过程:从隐变量分布q(Z)中采样zi。为了使编码过程与解码过程一致,让q(Z)与p(Z | wi)相同。其中,假设q(Z) = N(0,1)。因此,q(Z) = p(Z | wi) = N(0,1)。之后,使用神经网络wˆi = g(zi):将zi映射到wˆi,神经网络g(Z),也可以表示为q(W | Z)。

在这里插入图片描述

损失VAE的性能可以通过变分下界(ELBO)损失来评估,该损失由重构损失和KL损失组成。重构损失用于计算生成数据wˆi与原始数据wi之间的相似度程度(尽可能高性能)。相比之下,KL损失作为额外的损失,用于衡量一般正态分布与标准正态分布之间的差异(规范隐空间的组织)。
在这里插入图片描述
变分自编码器通过将文本映射到一个低维的连续空间,将文本的语义信息编码为隐变量的值。由于相似的主题通常对应于潜在空间中相似的数据点,所以我们使用隐变量zi作为主题向量h c
在这里插入图片描述

3.8. 分类模块

我们将从这三个模块中得到的结果拼接起来,然后将它们通过一个情绪分类器进行话语情绪预测。

在这里插入图片描述
随后,在模型训练阶段,我们使用交叉熵损失函数,其定义如下:
在这里插入图片描述
其中,B为对话段落数,Bj为第j次对话中的话语数。yj、k和yˆj、k分别表示第j次会话中第k个话语的实际情绪标签和对应的预测标签分布。L‘表示总损失。

四、实验

4.1 数据集

我们在实验中使用了四个常用的数据集,并组织了这些数据集的统计数据。
在这里插入图片描述

IEMOCAP[30]是由南加州大学的SAIL实验室收集的一个多模态视听数据集,其中包括由专业演员扮演的两人对话,共计12个小时。该数据集涵盖了10个演员(5名男性和5名女性),并被分为5个阶段,每个阶段包括1名男演员和1名女演员。这些对话被标记为6种不同的情绪状态。DailyDialog [31]是一个高质量的多回合对话数据集,只包含低噪声的文本,涵盖了各种日常生活主题上的对话,并且在对话中没有固定的说话者。这些对话被标记为七种不同的情绪状态。MELD [32]起源于电视剧《老朋友》。它以多人对话的形式呈现,这是情感线的“老朋友”部分的多模态扩展,包含文本和视频信息。这些对话被贴上了七种情绪状态和三种情感状态的标签。EmoryNLP [33]是从电视剧《老朋友》中收集的多人对话数据集。这些对话被标记为7个不同的内容。

4.1 实验细节

在本节中,我们将详细介绍我们所提出的方法的实际实现步骤。首先,我们使用RoBERTa模型来提取与上下文无关的话语级特征,将其维度设置为1024,并将它们作为预处理输入。此外,我们在模型中引入非线性激活函数之前引入了dropout,并将dropout大小设置为0.2。我们将多头自我注意信息的初始值设为4来学习不同的上下文信息。在训练过程中,我们使用Adam [34]优化器对模型的参数进行调整,学习率设置为1e-4。这些选择和设置有助于提高模型的性能和可靠性。

4.2 基线

我们在四个常用的ERC数据集上测试了该模型,并将DESD与以下基线进行了比较:

基于RNN的方法:对话框RNN[1]使用三个GRUs来建模话语的不同方面。DialogXL [2]使用增强的内存来存储更长的历史上下文,同时利用自我注意机制来处理多方结构,以更好地感知对话的内容。[3]设计了一个多轮推理模块,通过该模块可以提取和整合情感线索更有效。ERCMC [4]使用相对位置嵌入和GRU来捕捉话语和对话状态的确切表示。EmoLR [35]通过自适应地生成细粒度的标签分布来更全面地捕获语义信息,从而定量地描述情绪强度。HU-对话[36]通过在权重共享三元结构中实现不确定性建模,有效地建模了情绪识别任务(ERC)中的上下文级和模态级的不确定性。

基于gnn的方法: DAG-ERC [5]提供了一种更直观的方法来建模一个遥远的对话上下文和附近的上下文之间的信息流。MM-DFN [6]通过捕获不同语义空间中的上下文信息的动态来实现冗余减少和多模态互补增强。KGCNERC [7]为每个话语寻找最合适的局部窗口,并建立合理的话语连接,以增强对话的一致性和逻辑。CMCF-SRNetd [8]同时考虑局部上下文和说话者情绪,并通过语义细化模块提取有效的语义特征和上下文信息。快乐的[37]引入了一个基于图的对比学习框架,该框架利用视图间和视图内的对比损失来增强与不同情绪状态相关的表征的可区分性。MMPCGN [38]通过异构图卷积神经网络聚合相邻节点的信息,获得丰富的语义信息。

一种基于外部常识知识的方法:宇宙[23]首先整合不同的常识元素,然后学习基于这些元素的对话中不同对话者之间的相互作用。TODKAT [25]将主题增强的语言模型与从基于对话上下文信息的知识库中获得的常识性话语结合起来。AutoML-Emo [39]引入了一种针对相关知识和模型的选择的AutoML策略,利用了情绪一致性的影响。

4.3. 结果与分析

我们将DESD与每日对话框、MELD、国际电子地图和EmoryNLP数据集上的基线论文中的结果进行了比较;结果见表二。对于MELD、IEMOCAP和EmoryNLP数据集,我们使用加权的平均-f1作为度量。相比之下,对于每日对话框数据集,考虑到其中立类别的高比例,我们使用MicroF1,它忽略了中立类别,作为度量。实验结果表明,我们的DESD模型在四个数据集上都表现良好,且其指标明显优于以往的方法。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

IDEA使用Maven生成普通项目没有生成iml文件解决方法

右击主目录选择: Open in Terminal 在生成的控制台输入: mvn idea:module 回车便自动生成iml文件啦! 双击下主目录就可以看见啦

javax.net.ssl.SSLException: Received fatal alert: protocol_version已经解决

起因: 在帮别人讲解项目时,将项目的tomcat配置完,点击运行后,报错,信息如标题。 解决办法: 在csdn百度问题,得到的方法主要有几个: 1.jdk要配置在1.8以上; 2.数据库地…

【MySQL】ON WHERE 和 ON AND 的区别

1. 查询语句语法规则 “[ ]” 包含的内容可以省略; “{ }” 包含的内容必须存在; DISTINCT: 设定 **distinct** 可以去掉重复记录; AS: 表明或字段名过长时,可以用 **AS** 关键字起别名,也可…

06.配置邮件报警

配置邮件报警 我的授权码:HCHNVOAENURLOACG 1.定义发件人 密码是163邮箱的授权码 2.配置收件人 我就配置收件人是qq邮箱了 3.启动动作 验证邮件发送成功

Redis如何避免数据丢失?——AOF

目录 AOF日志 1. 持久化——命令写入到AOF文件 写到用户缓冲区 AOF的触发入口函数——propagate 具体的实现逻辑——feedAppendOnlyFile 从用户缓冲区写入到AOF文件(磁盘) 函数write、fsync、fdatasync Redis的线程池 AOF文件的同步策略 触发的入口函数——…

特斯拉擎天柱机器人:工厂自动化的未来

随着技术的进步,工业自动化已经逐步进入了一个新的纪元。特斯拉最近公布的擎天柱机器人Optimus的演示,不仅仅展示了一个高科技机器人的能力,更是向我们揭示了未来工厂的可能性。 特斯拉擎天柱机器人的功能展示 马斯克在最新的演示中向我们展…

使用Nuxt.js实现服务端渲染(SSR)

Nuxt.js 是一个基于 Vue.js 的框架,它提供了服务器端渲染(SSR)和静态站点生成(SSG)的能力,使开发者能够轻松地构建高效、优雅的前端应用。Nuxt.js 集成了许多开箱即用的功能和工具,帮助开发者快…

C语言—深入理解指针(2)

1.数组名的理解 不难发现,数组名就是数组首元素的地址。 但是有两个例外: 1.sizeof(数组名) 这里的数组名表示整个数组,计算的是整个数组的大小,单位是字节。 2.&数组名 这里的数组名也表示整个数…

MacOS miniconda安装方法

打开macos “终端” 应用 执行命令 mkdir -p ~/miniconda3curl https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-MacOSX-arm64.sh -o ~/miniconda3/miniconda.shbash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3rm -rf ~/miniconda3/mini…

CPU基本知识点

目录 1.概念 2.分类 3.运作原理 4.指令系统 1.概念 CPU:英文Central Processing Unit,即中央处理器。 解释和执行指令的功能单元,它是计算机的中枢神经系统(即核心)。 是计算机最核心的部件,主要是运算…

嵌入式数据库SQLite 3配置使用详细笔记教程

0、惨痛教训 随着管理开发的项目体积越来越庞大,产品系统涉及的数据量也越来越多,并且伴随着项目不久就要交付给甲方了。如果项目的数据信息没有被妥善管理,后期设备的运行状态、操作状况等数据流信息不能被溯源,当出现了一些特殊…

【35分钟掌握金融风控策略16】贷前风控策略详解-1

目录 贷前风控策略详解 贷前风控目标 精准审核申请贷款客户资质 对申请贷款客户进行合理定额 对申请贷款客户进行合理定价 推动实现利润最大化 贷前风控数据源 客户贷款时提供的数据 贷前风控策略详解 俗话说,良好的开端是成功的一半,而贷前是风…

C++新手村指南:入门基础

目录 C概念 C发展史 C关键字(C98) 命名空间 命名空间的定义 命名空间的使用 C中的输入&&输出 缺省参数 缺省参数的概念 缺省参数的分类 函数重载 函数重载概念 函数重载实现 引用 引用的概念 引用的特性 常引用 引用的使用场景…

基于单片机的小型自动浇灌系统设计

摘 要:以单片机为主控芯片,结合传感器和计算机,搭建了一套智能化的浇灌系统;利用LabVIEW 设计并编写了基于状态机程序架构的上位机软件,实现了友好的用户交互界面,实时测量、显示与记录等功能,并由主控芯片进行浇灌。经测试,本系统具有结构简单,研制成本低,运…

详细介绍一下PointPillars算法的网络结构

PointPillars是一种用于3D目标检测的算法,它主要使用了点云数据和深度学习模型。 PointPillars算法的网络结构主要可以分为三个主要阶段: Pillar Feature Net(点云特征处理网络):此阶段的主要任务是将输入的点云数据转…

回答篇:测试开发高频面试题目

引用之前文章:《测试开发高频面试题目》 https://blog.csdn.net/qq_41214208/article/details/138193469?spm1001.2014.3001.5502 本篇文章是回答篇(持续更新中) 1. 什么是测试开发以及其在软件开发流程中的作用。 a. 测试开发是指测试人员或…

Java:Servlet详解

目录 一、什么是Servlet 二、Servlet原理 Servlet的生命周期 三、 Servlet注释 WebServlet 一、什么是Servlet Servlet是JavaWeb开发的一种技术,Servlet程序需要部署在Servlet容器(服务端)中才能运行,常见的Servlet容器有Tom…

【C++】环境搭建CentOS Clion报错Unsupported git Version 1.8.3.1

【C】环境搭建Clion-Unsupported git Version 1.8.3.1 Git升级步骤1.卸载旧版本2.安装依赖3.下载git最新版本包4.解压git文件包5.编译文件5.将git加入环境变量6.验证git版本 如上图所示,报错Unsupported git Version 1.8.3.1 At least 2.17.0 is required 报错意思…

windows驱动开发-inf文件(一)

驱动总是和inf文件相关,在WinDDK的时候,许多inf文件都需要开发工程师手动编写,不过,现在已经可以使用inx文件来生成inf文件了,它经常用于驱动的安装和卸载;不过,并不是所有的驱动都需要使用inf文…

小白修复msvcp140.dll丢失的解决方法,一键修复丢失的dll文件

在我们使用电脑时,常常会碰到各种烦人的状况。比方说,当我们期待畅玩游戏时,可能会突然遭遇一则令人沮丧的提示:“打开游戏缺少msvcp140.dll文件”。这个问题会给我们带来困扰和不愉快,但庆幸的是,有多种解…