多模态情感分析——MVSA数据集

一、原始数据集

数据集链接:https://mcrlab.net/research/mvsa-sentiment-analysis-on-multi-view-social-data/

数据集介绍:由两个独立的数据集组成,分别是MVSA-Single数据集和 MVSA-Multi数据集,前者的每条图文对只有一个标注,后者的每条图文对由三个标注者给出。官方声明MVSA-Single数据集包含 5,129 条图文对(实际只有4869条),MVSA-Multi 包含了 19,600 条图文对(实际19600条,)。

(1)MVSA-Single数据集

图片

(2)MVSA-Multi数据集

图片

二、处理方法

(1)MVSA-Single数据集

删除 MVSA-Single 数据集中图片和文字标注情感的正负极性不同(存在positive和negative)的图文对,剩余的图文对中,如果图片或者文本的情感有一者为中性(neutral),则选择另一个积极或者消极的标签作为该图文对的情感标签,最终得到4511个图文对。

图片

(2)MVSA-Multi数据集

采用投票机制,即有 2 个或 2 个以上的标注者给出的情感极性标注一致,则保留该条数据,否则删除。先基于MVSA-Single 的方法确定每个人的标签,然后根据三个人统计结果进行投票,最终得到17510个图文对。

注:由于数据集中存在损坏图片:3151.jpg、3910.jpg、5995.jpg,因此将其进行去除,最终实际得到17507个图文对。

图片

 处理后的数据:多模态情感分析——MVSA数据集

最后:

如果你想要进一步了解更多的相关知识,可以关注下面公众号联系~会不定期发布相关设计内容包括但不限于如下内容:信号处理、通信仿真、算法设计、matlab appdesigner,gui设计、simulink仿真......希望能帮到你!

5a8015ddde1e41418a38e958eb12ecbd.png

### 使用MVSA数据集进行模型训练 MVSA(Multi-View Sentiment Analysis)数据集是一个多视角情感分析数据集,通常用于研究图像和文本之间的关联以及它们共同表达的情感。以下是基于提供的引用内容和其他专业知识构建的一个完整的解决方案。 #### 数据准备 在使用MVSA数据集之前,需要完成以下准备工作: 1. 下载并解压MVSA数据集文件。 2. 将其划分为训练集、验证集和测试集。 3. 对图像和文本分别进行预处理操作。 对于图像部分可以采用标准的图像增强技术;而对于文本,则可以通过分词器将其转换成向量表示形式[^1]。 ```python import os from sklearn.model_selection import train_test_split from torchvision.transforms import Compose, Resize, ToTensor from transformers import BertTokenizer def prepare_data(data_dir): images = [] texts = [] tokenizer = BertTokenizer.from_pretrained('bert-base-uncased') transform = Compose([Resize((224, 224)), ToTensor()]) for file_name in os.listdir(os.path.join(data_dir, 'images')): image_path = os.path.join(data_dir, 'images', file_name) text_file = open(os.path.join(data_dir, 'texts', f"{file_name.split('.')[0]}.txt"), encoding='utf8').read() encoded_text = tokenizer.encode_plus( text_file, add_special_tokens=True, max_length=512, padding='max_length', truncation=True, return_attention_mask=True, return_tensors="pt" ) images.append(transform(Image.open(image_path))) texts.append(encoded_text['input_ids']) X_train_img, X_val_img, y_train_txt, y_val_txt = train_test_split(images, texts, test_size=0.2, random_state=42) return (X_train_img, y_train_txt), (X_val_img, y_val_txt) data_directory = './mvsa_dataset' train_data, val_data = prepare_data(data_directory) ``` #### 构建多模态模型架构 这里推荐一种融合BERT与ResNet特征提取器的方法来创建一个多模态学习框架[^3]: ```python import torch.nn as nn from torchvision.models import resnet50 from transformers import BertModel class MultimodalSentimentAnalysis(nn.Module): def __init__(self): super(MultimodalSentimentAnalysis, self).__init__() self.resnet = resnet50(pretrained=True) self.bert = BertModel.from_pretrained('bert-base-uncased') self.fc_image = nn.Linear(1000, 768) self.classifier = nn.Sequential( nn.Dropout(p=0.1), nn.Linear(768 * 2, 256), nn.ReLU(), nn.Linear(256, 3) # Assuming three sentiment classes: positive, neutral, negative. ) def forward(self, img_inputs, txt_inputs, attention_masks=None): features_images = self.resnet(img_inputs) pooled_output_texts = self.bert(txt_inputs.squeeze(dim=1), attention_mask=attention_masks).pooler_output combined_features = torch.cat((features_images.view(-1, 1000), pooled_output_texts), dim=-1) output = self.classifier(combined_features) return output model = MultimodalSentimentAnalysis().cuda() if torch.cuda.is_available() else MultimodalSentimentAnalysis() ``` #### 训练过程配置 定义损失函数、优化器以及其他必要的超参数设置,并执行实际的训练循环[^4]: ```python criterion = nn.CrossEntropyLoss() optimizer = optim.Adam(model.parameters(), lr=1e-5) for epoch in range(num_epochs): # Loop over the dataset multiple times running_loss = 0.0 model.train() for imgs, txts in dataloader: optimizer.zero_grad() outputs = model(imgs.cuda(), txts.cuda()) loss = criterion(outputs, labels.cuda()) loss.backward() optimizer.step() running_loss += loss.item() ``` ---
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MatpyMaster

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值