传知代码-字里行间的背叛:博文出卖了你

代码以及视频讲解

本文所涉及所有资源均在传知代码平台可获取

你的博文透露了你内心的秘密

在这里插入图片描述

随着社交媒体和短视频行业的快速发展,来自文本、视频和音频的多模态数据爆发式增长。 同时,捕捉设备的广泛使用,加上其使用的简便性、移动能力和低成本,使得捕捉不同用户的情绪线索变得容易,这与人类语言交流相同。 这三种情态在表达过程中语义上相互关联、相辅相成。方面级多模态情感分析旨在从多模态数据中识别目标方面的情感,最近在多媒体和自然语言处理领域引起了广泛的关注。 尽管最近基于文本方面的情感分析取得了成功,但现有模型主要集中于利用图像中的对象级语义信息,而忽略了明确使用视觉情感线索,尤其是面部情感。如何提炼视觉情感线索并将其与文本内容保持一致仍然是解决该问题的关键挑战。

作为多模态情感分析的一项重要任务,多模态基于方面的情感分析(MABSA)旨在将句子-图像对中表达的情感极性分类为特定方面。 与文本方面层面的情感分析相比,挖掘和利用视觉内容中方面的情感线索是核心问题同时,我在多种流行的多模态任务–多模态讽刺的数据集–MUStARD 、推特数据集-Twitter-2015 和 Twitter-2017 以及抑郁症数据集AVEC 2019 上,都得到了不错的效果,证明了该模型的可靠性。
在这里插入图片描述

【注】 文章中所用到的数据集,都经过重新特征提取形成新的数据集特征文件(.pkl),当然我也提供了原视频数据以便大家自己提取特征,下载链接都放在了附件中的 readme文件中,感兴趣的小伙伴可以进行下载,谢谢支持!

一、研究背景

作为多模态情感分析的一项重要任务,多模态基于方面的情感分析(MABSA)旨在将句子-图像对中表达的情感极性分类为特定方面。 与文本方面层面的情感分析相比,挖掘和利用视觉内容中方面的情感线索是核心问题。但由于数据集的限制以及 MABSA 任务中跨模态对齐的监督较弱,隐式捕获图像中的情感信息的方法更有可能学习到非情感线索偏差。我提出了一种简单但有效的面部敏感图像到情感文本跨模态翻译方法,该方法通过生成的面部表情描述将图像中包含的情感文本化。该方法不需要对情感图像标题生成模型进行额外的训练。 此外,在方面敏感的对齐和修改阶段,在考虑场景信息和面部表情之间的关系的同时,我采用一种预训练的视觉语言模型 CLIP 来选择性地检索图像中的面部情感线索 与目标方面最相关的。 有效解决了多人脸场景下目标方位与图像表情描述的匹配问题。 在最后阶段,应用门机制对多模态特征进行融合和去噪。
在这里插入图片描述

二、模型结构和代码

3.1 任务定义

MABSA 任务可以表述如下:给定一组多模态样本 S = { X 1 , X 2 , . . . , X ∣ S ∣ } S = \{X_1, X_2, ..., X_{|S|}\} S={X1,X2,...,XS},其中 ∣ S ∣ |S| S 表示样本的数量。对于每个样本,给定一个图像 V ∈ R 3 × H × W V \in \mathbb{R}^{3 \times H \times W} VR3×H×W,其中 3、H 和 W 分别表示图像的通道数、高度和宽度,以及一个包含 N N N 个词的文本内容 T = ( w 1 , w 2 , . . . , w N ) T = (w_1, w_2, ..., w_N) T=(w1,w2,...,wN),其中包含一个长度为 M M M 的目标方面子序列 A = ( w 1 , w 2 , . . . , w M ) A = (w_1, w_2, ..., w_M) A=(w1,w2,...,wM)。我的目标是学习一个情感分类器,为每个样本 X = ( V , T , A ) X = (V, T, A) X=(V,T,A) 预测一个情感标签
y ∈ { Positive(积极) , Negative(消极) , Neutral(中立) } y \in \{\text{Positive(积极)}, \text{Negative(消极)}, \text{Neutral(中立)}\} y{Positive(积极),Negative(消极),Neutral(中立)}

3.2 整体结构

如下图所示,所提出的模型包括三个模块:面部敏感的图像到情感文本翻译模块目标方面敏感的对齐与修改模块基于门控的多模态融合模块。对于给定的多模态推文 X = ( V , T , A ) X = (V, T, A) X=(V,T,A),将视觉输入 V V V 输入到面部敏感的图像到情感文本翻译模块中,以生成面部描述 D = { D 1 , D 2 , . . . , D I } D = \{D_1, D_2, ..., D_I\} D={D1,D2,...,DI},其中 I I I 是视觉输入 V V V 中包含的面部数量, D i = ( w 1 , w 2 , . . . , w K ) D_i = (w_1, w_2, ..., w_K) Di=(w1,w2,...,wK) 表示一个包含 K K K 个词的句子。此模块侧重于提取并将图像中包含丰富情感线索的面部表情进行文本化。随后,由于视觉输入 V V V 可能包含多个面部表情,有必要将目标方面 A A A 与相关的面部描述 D A D_A DA 进行匹配。
在这里插入图片描述

目标方面敏感的对齐与修改模块中,计算每个面部描述与目标方面 A A A 拼接后的文本与图像输入 V V V 之间的余弦相似度。然后,根据这些相似度分数选择并重写面部描述 D A D_A DA。此外,考虑到图像场景可以补充额外的语义信息,采用 CapBERT 中使用的标题转换器生成图像场景描述 C = ( w 1 , w 2 , . . . , w J ) C = (w_1, w_2, ..., w_J) C=(w1,w2,...,wJ),其中 J J J 表示图像标题的长度。

最后,在基于门控的多模态融合模块中,利用两个预训练的语言模型对面部描述和场景图像标题进行建模,然后采用门控机制进行特征融合和降噪。门控单元的输出通过线性层进行目标方面情感预测。在接下来的子部分中,我将详细介绍每个模块。

3.3 面部敏感的图像到情感文本翻译

该模块旨在解决 MABSA 中的两个固有挑战。第一个挑战是,由于多模态推文中的图像没有类别限制,在复杂图像中提取对象级情感线索非常困难。第二个挑战是,即使从图像中提取到情感线索,如何在低资源环境下将情感图像内容转化为文本模态也是一个难题。

为解决第一个挑战,如上所述,利用图像中的丰富面部表情是一种直接且有效的提取视觉情感线索的方法。首先应用面部识别工具识别所有面部 F = { F 1 , F 2 , . . . , F I } F = \{F_1, F_2, ..., F_I\} F={F1,F2,...,FI},其中 I I I 表示面部数量, F i ∈ R 3 × H F × W F F_i \in \mathbb{R}^{3 \times H_F \times W_F} FiR3×HF×WF 表示具有 3 个通道、高度为 H F H_F HF 和宽度为 W F W_F WF 的面部区域。接着,将这些面部作为输入,使用四个预训练的基于面部的分类器(Serengil 和 Ozpinar, 2021)进行面部属性分析,包括年龄、性别、面部表情(包括愤怒、恐惧、中性、悲伤、厌恶、快乐和惊讶)和种族(包括亚洲人、黑人、白人、中东人、印度人和拉丁裔)的预测。

对于第二个挑战,我希望在不额外训练新的情感图像描述模型的情况下,将图像中的面部表情转化为文本内容。因此,在面部属性分析后,根据预测置信度过滤获得的面部属性,过滤掉置信度低于阈值 θ = 0.4 \theta = 0.4 θ=0.4 的面部属性。为了生成流畅的自然语言情感面部描述,手动设计了一个基于面部属性的面部描述生成模式。

3.4 目标方面敏感的对齐与修改

考虑到多面部示例,图像中的面部表情各不相同,而儿童的愤怒表情对于预测“凯特·米德尔顿”这个方面的情感极性没有帮助。然而,相关性较弱的面部表情会引入噪声,降低模型的性能。因此,准确对齐图像中的面部表情和目标方面是必要的。该模块主要关注面部表情与目标方面的细粒度对齐与对应面部描述的重写。

鉴于 MABSA 任务不包含直接的图像-文本对齐监督,并且 MABSA 任务的数据集规模限制了模型通过对比学习进行细粒度对齐的能力,因此引入外部图像-文本对齐知识是必要的。为此,应用 CLIP 模型进行这种细粒度对齐。使用 CLIP 模型的文本编码器和图像编码器,这些编码器在大规模图像-文本配对数据集上进行了预训练,分别对连接了目标方面 A A A 的面部描述 D D D 和图像 V V V 进行编码。面部描述和图像的特征嵌入表示为:

H D & A = Text_Encoder ( concat ( D , A ) ) H_{D\&A} = \text{Text\_Encoder}(\text{concat}(D, A)) HD&A=Text_Encoder(concat(D,A))

H V = Image_Encoder ( V ) H_V = \text{Image\_Encoder}(V) HV=Image_Encoder(V)

之后,将输出的特征嵌入投影到同一特征空间中,并通过 L2 正则化计算这些特征嵌入的余弦相似度 L L L。然后,选择与当前图像相似度最高的面部描述,作为当前方面的文本化视觉情感线索。重写后的面部描述仅保留目标方面和预测面部属性中的表情。

H D & A ′ = L2_Normalize ( H D & A ⋅ W D & A ) H'_{D\&A} = \text{L2\_Normalize}(H_{D\&A} \cdot W_{D\&A}) HD&A=L2_Normalize(HD&AWD&A)

H V ′ = L2_Normalize ( H V ⋅ W V ) H'_V = \text{L2\_Normalize}(H_V \cdot W_V) HV=L2_Normalize(HVWV)

L = ( H V ′ ⋅ ( H D & A ′ ) T ) ∗ e t L = (H'_V \cdot (H'_{D\&A})^T) \ast e^t L=(HV(HD&A)T)et

其中, W D & A W_{D\&A} WD&A W V W_V WV 是可学习权重, t t t 是 CLIP 模型中的温度缩放。更多细节请参见附录。

此外,考虑到视觉场景信息对多模态语义的影响,采用 CapBERT 的基于 Transformer 的图像标题生成模型来生成图像的中性整体描述:

C = Caption_Transformer ( V ) C = \text{Caption\_Transformer}(V) C=Caption_Transformer(V)

最终,获得了对齐后的面部描述和场景图像标题,并将它们作为输入传递给下一个模块。

3.5 基于门控的多模态融合模块

在此模块中,旨在将文本输入及目标方面与生成的面部描述 D a l l D_{all} Dall 和场景图像的标题 C C C 融合到文本模态特征空间中。为了利用预训练语言模型强大的文本上下文建模能力,将面部描述和场景图像标题分别与文本 T T T 和目标方面 A A A 连接,形成两个新的句子:

[ C L S ] w 1 T , . . . , w N T [ S E P ] w 1 A , . . . , w M A [ S E P ] w 1 D a l l , . . . , w K D a l l [ S E P ] [CLS]w_1^T, ..., w_N^T[SEP]w_1^A, ..., w_M^A[SEP]w_1^{D_{all}}, ..., w_K^{D_{all}}[SEP] [CLS]w1T,...,wNT[SEP]w1A,...,wMA[SEP]w1Dall,...,wKDall[SEP]

[ C L S ] w 1 T , . . . , w N T [ S E P ] w 1 A , . . . , w M A [ S E P ] w 1 C , . . . , w J C [ S E P ] [CLS]w_1^T, ..., w_N^T[SEP]w_1^A, ..., w_M^A[SEP]w_1^C, ..., w_J^C[SEP] [CLS]w1T,...,wNT[SEP]w1A,...,wMA[SEP]w1C,...,wJC[SEP]

然后,将这些新句子输入两个预训练的语言模型中,并微调语言模型以获得 [CLS] 标记的池化输出 H [ C L S ] D ∈ R 768 H_{[CLS]}^D \in \mathbb{R}^{768} H[CLS]DR768 H [ C L S ] C ∈ R 768 H_{[CLS]}^C \in \mathbb{R}^{768} H[CLS]CR768。由于生成方法的表现,生成的面部描述和场景图像标题包含不可忽视的噪声。为减轻噪声的影响,采用门控机制对特征表示 H [ C L S ] D H_{[CLS]}^D H[CLS]D H [ C L S ] C H_{[CLS]}^C H[CLS]C 进行去噪。融合后的特征表示经过线性分类层以获得情感预测结果:

g t = σ ( W D H [ C L S ] D + W C H [ C L S ] C + b g ) g_t = \sigma(W_D H_{[CLS]}^D + W_C H_{[CLS]}^C + b_g) gt=σ(WDH[CLS]D+WCH[CLS]C+bg)

H = g t H [ C L S ] D + ( 1 − g t ) H [ C L S ] C H = g_t H_{[CLS]}^D + (1 - g_t) H_{[CLS]}^C H=gtH[CLS]D+(1gt)H[CLS]C

p ( y ∣ H ) = softmax ( W H + b ) p(y|H) = \text{softmax}(WH + b) p(yH)=softmax(WH+b)

其中, W D ∈ R 768 × 768 W_D \in \mathbb{R}^{768 \times 768} WDR768×768 W C ∈ R 768 × 768 W_C \in \mathbb{R}^{768 \times 768} WCR768×768 W ∈ R 768 × 3 W \in \mathbb{R}^{768 \times 3} WR768×3 b g ∈ R 768 b_g \in \mathbb{R}^{768} bgR768 b ∈ R 3 b \in \mathbb{R}^{3} bR3 是可学习参数, σ \sigma σ 是非线性变换函数 tanh ⁡ \tanh tanh

使用标准的交叉熵损失来优化此模块中的所有参数:

L = − 1 ∣ D ∣ ∑ l = 0 ∣ D ∣ log ⁡ p ( y ( l ) ∣ H ( l ) ) L = - \frac{1}{|D|} \sum_{l=0}^{|D|} \log p(y^{(l)}|H^{(l)}) L=D1l=0Dlogp(y(l)H(l))

三、数据集介绍

1. 多模态讽刺数据集:

  • MUStARD: 该数据集包含 690 个话语(345 个讽刺示例和 345 个非讽刺示例),这些话语源自著名电视节目,例如《老友记》、《生活大爆炸》、《黄金女郎》和《讽刺狂》。 实验数据集的详细统计数据如表一所示。
    在这里插入图片描述

2. 博文情感计算数据集

  • Twitter-2015 和 Twitter-2017: 这两个数据集由多模态推文组成,这些推文注释了文本内容中提到的方面以及每个方面的情感极性。 每条多模式推文均由图像和包含目标方面的文本组成。 由于我们的方法更关注包含人脸的示例,因此我们提取上述两个数据集中包含人脸的示例以形成 Twitterface 数据集并验证我们的模型在此数据集上的优越性。 三个数据集的详细统计数据如下表3所示
    在这里插入图片描述

在这里插入图片描述

3. 抑郁症数据集

  • AVEC2019: AVEC2019 DDS数据集是从患者临床访谈的视听记录中获得的。访谈由虚拟代理进行,以排除人为干扰。与上述两个数据集不同的是,AVEC2019中的每种模态都提供了几种不同的特征。例如,声学模态包括MFCC、eGeMaps以及由VGG和DenseNet提取的深度特征。在之前的研究中,发现MFCC和AU姿势分别是声学和视觉模态中两个最具鉴别力的特征。因此,为了简单和高效的目的,我们只使用MFCC和AU姿势特征来检测抑郁症。数据集用区间[0,24]内的PHQ-8评分进行注释,PHQ-8评分越大,抑郁倾向越严重。该基准数据集中有163个训练样本、56个验证样本和56个测试样本。

四、性能展示

1. 情感计算任务

在这里插入图片描述

2. 抑郁症检测任务,以下是模型在抑郁症数据集AVEC2019中的表现:

ModelCCCMAE
Baseline0.1116.37
EF0.34
Bert-CNN & Gated-CNN0.4036.11
Multi-scale Temporal Dilated CNN0.4304.39
Proposed0.4594.52

3. 讽刺数据集任务

ModelAccRecallF1
SMSD65.666.166.1
MIARN64.764.063.9
MFN70.169.669.7
IAIE72.171.672.0
RAVEN69.167.567.1
Proposed76.976.176.5

五、实现过程

下载附件并准备好数据集并调试代码后,进行下面的步骤,附件已经调通并修改,可直接正常运行;

下载所需环境和库包

pip install -r requirements.txt

运行

python FITE.py

六、运行过程

  1. 训练过程
    在这里插入图片描述

  2. 最终结果
    在这里插入图片描述

源码下载

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

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

相关文章

界面控件DevExtreme中文教程 - 如何与Amazon S3和Azure Blob存储集成?

DevExtreme拥有高性能的HTML5 / JavaScript小部件集合,使您可以利用现代Web开发堆栈(包括React,Angular,ASP.NET Core,jQuery,Knockout等)构建交互式的Web应用程序。从Angular和Reac&#xff0c…

1. 安装框架

一、安装 Laravel 11 框架 按照官方文档直接下一步安装即可 1. 安装步骤 2. 执行数据库迁移 在.env文件中提前配置好数据库连接信息 php artisan migrate二、安装 Filament3.2 参考 中文文档 进行安装 1. 安装 拓展包 composer require filament/filament:"^3.2" -W…

【功能安全】相关项定义item definition

目录 01 item definition定义 02 相关项组成 03 相关项最佳实践 📖 推荐阅读 01 item definition定义 概念阶段的开发是以相关项定义(Item Definition)开始的,相关项定义是对系统的描述,此系统也是标准中安全要求应用的对象。 相关项定义目的: a) 在整车层面对相关…

C++ string(2)

文章目录 1.初识迭代器和范围for1.1迭代器1.2范围for1.3 aout关键字 2.字符串长度相关计算1.size 和 length2. capacity 和 reserve 3.例题演示1. [917. 仅仅反转字母 - 力扣(LeetCode)](https://leetcode.cn/problems/reverse-only-letters/description…

spring揭秘31-spring任务调度01-spring集成Quartz及JDKTimer定时器

文章目录 【README】【1】Quartz任务调度框架【1.1】Job调度任务【1.2】任务调度触发器Trigger【1.3】\*Quartz框架执行调度任务代码实践【1.3.1】硬编码执行Quartz调度任务【1.3.2】基于生产者模式执行quartz调度任务(推荐) 【2】spring集成Quartz【2.1…

查找与排序-选择排序

选择排序也是基于“比较”和“交换”两种操作来实现的排序方法 。 每一趟排序在待排序序列中选择关键字最小(或最大)的数据元素加入到排好序的序列前(或后),直至所有元素排完为止。 一、简单选择排序 1.简单…

2024产品管理新风向:项目管理软件不懂敏捷开发?

一、产品管理与敏捷开发的紧密关联 产品管理和敏捷开发之间存在着紧密的关联,二者相互促进,共同为企业创造价值。 (一)敏捷开发为产品管理带来的优势 敏捷开发能够极大地加快产品上市速度。在传统的开发模式下,产品…

SAP 关于在交货单进行定价条件的确定简介

SAP 关于在交货单进行定价条件的确定简介 业务场景前台操作1、创建交货单2、创建交货单3、创建发票系统配置1、定义条件类型2、定义并分配定价过程3、定义交货的定价过程确定4、维护开票凭证的复制控制SAP交货单定价是针对销售交货单的价格计算过程,通常包括基本价格、折扣、附…

Java读取PDF后做知识库问答_SpringAI实现

​​​​​​​​​​​​​​ 核心思路: 简单来说,就是把PDF文件读取并向量化,然后放到向量存储里面,再通过大模型,来实现问答。 RAG(检索增强生成)介绍: 检索增强生成&#x…

数据结构——树、二叉树和森林间的转换

前言 介绍 🍃数据结构专区:数据结构 参考 该部分知识参考于《数据结构(C语言版 第2版)》129~130页 🌈每一个清晨,都是世界对你说的最温柔的早安:ૢ(≧▽≦)و✨ 目录 前言 1、基础知识 2…

Qml-Button的使用

Qml-Button的使用 Button属性 Button的继承关系: Button – AbstractButton – Control – Item; Button的属性主要继承于AbstractButton。AbstractButton属性主要如下: a.action:是一个Action类型属性,与QAction类似,用于提供快…

【论文解读系列】EdgeNAT: 高效边缘检测的 Transformer

代码: https://github.com/jhjie/edgenat 论文: https://arxiv.org/abs/2408.10527v1 论文 EdgeNAT: Transformer for Efficient Edge Detection 介绍了一种名为EdgeNAT的基于Transformer的边缘检测方法。 1. 背景与动机 EdgeNAT预测结果示例。(a, b)…

c语言基础程序——经典100道实例。

c语言基础程序——经典100道实例 001, 组无重复数字的数002,企业发放的奖金根据利润提成003,完全平方数004,判断当天是这一年的第几天005,三个数由小到大输出006,输出字母C图案007,特殊图案008&…

【Petri网导论学习笔记】Petri网导论入门学习(七) —— 1.5 并发与冲突

导航 1.5 并发与冲突1.5.1 并发定义 1.14定义 1.15 1.5.2 冲突定义 1.17 1.5.3 一般Petri网系统中的并发与冲突定义 1.18一般网系统中无冲撞概念阻塞(有容量函数K的P/T系统,类似于冲撞)一般Petri网中并发与冲突共存情况 1.5 并发与冲突 Petr…

lstm基础知识

lstm前言 LSTM(Long short-term memory)通过刻意的设计来避免长期依赖问题,是一种特殊的RNN。长时间记住信息实际上是 LSTM 的默认行为,而不是需要努力学习的东西! 在标准的RNN中,这个重复模块具有非常简单的结构,例…

路由器原理和静态路由配置

一、路由器的工作原理 根据路由表转发数据 接收数据包→查看目的地址→与路由表进行匹配找到转发端口→转发到该端口 二、路由表的形成 它是路由器中维护的路由条目的集合,路由器根据路由表做路径选择,里面记录了网段ip地址和对应下一跳接口的接口号。…

【C语言备课课件】(下)指针pointer

目录 定义type *var_name;初始化int *p &a; // p指向变量a的地址 空指针NULL,野指针,指针悬挂 解引用指针的算术运算指针与数组 数组名—首指针二维数组指针 行指针列指针 多级指针(进阶)数组指针,指针数组(进阶&#xff09…

如何利用 Python抓取网页数据 其他方式抓取网页数据列举

在 Python 中可以使用多种方法抓取网页数据,以下是一种常见的方法,使用requests和BeautifulSoup库。 一、安装所需库 在命令提示符或终端中执行以下命令安装requests和BeautifulSoup库: pip install requests pip install beautifulsoup4二…

python——类

问:小编为什么突然开始发python?难道C语言你不行了? 废话少说,让我们进入python中的类的学习!! (一)基本知识 (1)掌握类的概念 1、类的定义: 即…

python安装transformer教程

本章教程,记录在Windows中如何使用python安装transformer。 一、安装依赖 pip install transformers推荐使用国内镜像源,速度会快很多。 二、测试代码 from transformers import pipeline# 加载一个文本生成模型 text_generator = pipe