当前位置: 首页 > news >正文

关于simplifyweibo_4_moods数据集的分类问题

本来打算用情感分类数据集拿Transformer模型来练练手,发现训练效果并不好。当我分析了这个数据集的标签后发现问题了:

  1. 查看标签的分布:
import pandas as pd# 先直接读取数据,不进行后续处理
data_file = '~/data/simplifyweibo_4_moods.csv'
df = pd.read_csv(data_file)
print(df.head()) 
df['label'].value_counts().sort_index()

输出如下:

   label                                             review
0      0  啊呀呀!要死啦!么么么!只穿外套就好了,我认为里面那件很多余啊周小伦喜歡 你各種 五角星的...
1      0  嗯……既然大姚通知了……那我也表示下收到……姚,你知道吗?假如外星人入侵地球,只要摧毁我们的...
2      0                                  风格不一样嘛,都喜欢!最喜欢哪张?
3      0  好呀,试试D .I .Y .去死皮面膜1.将燕麦片加水中浸泡6小时,加入木瓜牛奶搅拌。2.放...
4      0  张老师,谢谢侬的信任!粉丝多少无所谓重在质地近日发现一个现象——他加了你关注,你回加后,他立...
label
0    199496
1     51714
2     55267
3     55267
Name: count, dtype: int64

这样看确实没啥问题,也正如网上所说的,标签的与id的对应是:

'喜悦': 0,
'愤怒': 1,
'厌恶': 2,
'低落': 3

但是使用代码:df.drop_duplicates(subset=['review']) 根据评论数据进行过滤,发现标签3消失了。
2. 查看代码分布:

from sklearn.model_selection import train_test_split# 首先检查原始数据中的标签分布
print("原始数据中的标签分布:")
raw_df = pd.read_csv(data_file)
print(raw_df['label'].value_counts().sort_index())
print("原始数据中的唯一标签:", raw_df['label'].unique())# 检查标签类型
print("\n标签的数据类型:", raw_df['label'].dtype)# 读取数据并进行基本清洗
print("\n应用数据清洗后:")
df = pd.read_csv(data_file).dropna(subset=['review','label'])
print("1. 删除空值后的标签分布:")
print(df['label'].value_counts().sort_index())# 删除重复的评论
df = df.drop_duplicates(subset=['review'])
print("\n2. 删除重复评论后的标签分布:")
print(df['label'].value_counts().sort_index())# 检查是否有label为3的数据
if 3 not in df['label'].unique():print("\n警告:数据清洗后没有label为3的数据!")# 查找原因:检查label为3的数据是否都有空值或重复label3_raw = raw_df[raw_df['label'] == 3]print(f"原始数据中label为3的样本数:{len(label3_raw)}")label3_null = label3_raw['review'].isna().sum()print(f"其中有空值的样本数:{label3_null}")# 检查是否所有label为3的样本都是重复的temp_df = raw_df.dropna(subset=['review','label'])label3_after_dropna = temp_df[temp_df['label'] == 3]print(f"删除空值后label为3的样本数:{len(label3_after_dropna)}")# 检查重复情况all_reviews = set(temp_df['review'])label3_reviews = set(label3_after_dropna['review'])unique_label3_reviews = label3_reviews - (all_reviews - label3_reviews)print(f"label为3的唯一评论数:{len(unique_label3_reviews)}")print(f"label为3的评论与其他标签重复的数量:{len(label3_reviews) - len(unique_label3_reviews)}")# 确保label列是整数类型
df['label'] = df['label'].astype(int)# 如果需要保留label为3的数据,可以修改去重策略
# 例如:只在相同标签内去重,而不是跨标签去重
def preserve_label3(raw_df):# 按标签分组,然后在每个组内去重groups = []for label, group in raw_df.dropna(subset=['review','label']).groupby('label'):# 在每个标签组内去重group_dedup = group.drop_duplicates(subset=['review'])groups.append(group_dedup)# 合并所有组return pd.concat(groups)# 应用新的去重策略
print("\n使用修改后的去重策略:")
df_preserved = preserve_label3(raw_df)
print(df_preserved['label'].value_counts().sort_index())
print("修改后的唯一标签:", df_preserved['label'].unique())# 使用修改后的数据集
df = df_preserved# 查找相同评论对应不同标签的数据
print("\n查找相同评论对应不同标签的数据:")
raw_df_clean = raw_df.dropna(subset=['review','label'])# 找出重复的评论
duplicate_reviews = raw_df_clean[raw_df_clean.duplicated(subset=['review'], keep=False)]# 按评论分组,找出每个评论对应的不同标签
review_label_groups = duplicate_reviews.groupby('review')['label'].unique()# 筛选出有多个不同标签的评论
multi_label_reviews = review_label_groups[review_label_groups.apply(len) > 1]print(f"有{len(multi_label_reviews)}条评论对应多个不同的标签")# 显示前10个多标签评论的例子
if len(multi_label_reviews) > 0:print("\n以下是前10个多标签评论的例子:")for i, (review, labels) in enumerate(multi_label_reviews.items()):if i >= 10:breakprint(f"评论: {review[:50]}{'...' if len(review) > 50 else ''}")print(f"对应的标签: {labels}")print("-" * 50)

输出如下:

原始数据中的标签分布:
label
0    199496
1     51714
2     55267
3     55267
Name: count, dtype: int64
原始数据中的唯一标签: [0 1 2 3]标签的数据类型: int64应用数据清洗后:
1. 删除空值后的标签分布:
label
0    199496
1     51714
2     55267
3     55267
Name: count, dtype: int642. 删除重复评论后的标签分布:
label
0    199496
1     51661
2     55169
Name: count, dtype: int64警告:数据清洗后没有label为3的数据!
原始数据中label为3的样本数:55267
其中有空值的样本数:0
删除空值后label为3的样本数:55267
label为3的唯一评论数:55267
label为3的评论与其他标签重复的数量:0使用修改后的去重策略:
label
0    199496
1     51714
2     55267
3     55267
Name: count, dtype: int64
修改后的唯一标签: [0 1 2 3]查找相同评论对应不同标签的数据:
有55318条评论对应多个不同的标签以下是前10个多标签评论的例子:
评论: !!!!!!!!!!我的胃~ ~ ~ 这个星期你受苦了~ ~ ~ 留口水。。。看着照片,老想家了。。...
对应的标签: [2 3]
--------------------------------------------------
评论: !!!!!!!【今年12星座最终留下啥遗憾】从我遇见你的那天起,我所做的每一件事都是为了接近你。
对应的标签: [2 3]
--------------------------------------------------
评论: !!!!!!!忘了刚梦啥了。再梦一个。
对应的标签: [2 3]
--------------------------------------------------
评论: !!!!!!終 於出了..好想要吖 : 炒起距!闽Α 2还 ?100。颇为贵左d 。
对应的标签: [2 3]
--------------------------------------------------
评论: !!!!!败了。。这个狠。这个…真狠~
对应的标签: [2 3]
--------------------------------------------------
评论: !!!半夜三更饿了什么的最讨厌了
对应的标签: [2 3]
--------------------------------------------------
评论: !!!抽自己,还有什么脸!!!还有什么脸面胖下去T .T 求掉肉那是相当相当的励志太励志了太励志了,...
对应的标签: [2 3]
--------------------------------------------------
评论: !" !一个开头恐怖,中间可笑,结局悲惨的故事:遇见芙蓉姐姐,爱上芙蓉姐姐,娶了芙蓉姐姐
对应的标签: [2 3]
--------------------------------------------------
评论: !~ !~ !~ !~ !忒可爱了,这毛毛腿。每次见到你肥肥的小手,我就想到了铜锣烧。
对应的标签: [2 3]
--------------------------------------------------
评论: !“癌症妈妈”郭雪姣一路走好!让我们记住她的乐观与坚强。【“癌症妈妈”昨天走了让我们记住她的乐观和勇...
对应的标签: [2 3]
--------------------------------------------------

可以看出标签3就是一个摆设,这个数据集就是一个三分类的数据集,而不是四分类的。

请大家注意一下。

http://www.dtcms.com/a/332725.html

相关文章:

  • 大白话解析“入口点合约”
  • Linux系统--库制作与原理
  • Java—注解
  • mysql-条件查询案例
  • zabbix部署问题后常见问题
  • Codeforces 无路可走
  • 分布式系统设计的容错机制
  • AI优质信息源汇总:含X账号,Newsletter,播客,App
  • 如何在 FastAPI 中玩转 APScheduler,让任务定时自动执行?
  • 上下文块嵌入(contextualized-chunk-embeddings)
  • collections:容器数据类型
  • C语言——深入理解指针(四)
  • 完整技术栈分享:基于Hadoop+Spark的在线教育投融资大数据可视化分析系统
  • 使用XXL-SSO实现登录认证以及权限管控
  • 解决 MySQL 查询速度缓慢的问题
  • Filebeat 轻量级日志采集实践:安装、配置、多行合并、JSON 解析与字段处理
  • Java集合Map与Stream流:Map实现类特点、遍历方式、Stream流操作及Collections工具类方法
  • 【软件设计模式】前置知识类图、七大原则(精简笔记版)
  • C++ 调试报错 常量中有换行符
  • 基于桥梁三维模型的无人机检测路径规划系统设计与实现
  • Cursor 分析 bug 记录
  • 3D视觉与空间智能
  • imx6ull-驱动开发篇25——Linux 中断上半部/下半部
  • 智谱开源了最新多模态模型,GLM-4.5V
  • 关系型数据库从入门到精通:MySQL 核心知识全解析
  • 高并发系统性能优化实战:实现5万并发与毫秒级响应
  • Kafka生产者——提高生产者吞吐量
  • LeetCode 面试经典 150_数组/字符串_最长公共前缀(20_14_C++_简单)(暴力破解)(求交集)
  • 简单使用 TypeScript 或 JavaScript 创建并发布 npm 插件
  • 从零到一:发布你的第一个 npm 开源库(2025 终极指南)