改良的用于情感分类的餐馆评论数据集
原数据说明
yf_dianping 说明
下载地址: 百度网盘
数据概览: 24 万家餐馆,54 万用户,440 万条评论/评分数据
推荐实验: 推荐系统、情感/观点/评论 倾向性分析
数据来源: 大众点评
原数据集: Dianping Review Dataset,Yongfeng Zhang 教授为 WWW 2013, SIGIR 2013, SIGIR 2014 会议论文而搜集的数据
加工处理:
只保留原数据集中的评论、评分等信息,去除其他无用信息
整理成与 MovieLens 兼容的格式
进行脱敏操作,以保护用户隐私
该数据集中主要用到的是ratings.csv
import numpy as np
import pandas as pd
pd_ratings = pd.read_csv(path+'ratings.csv')
print('用户 数目:%d' % pd_ratings.userId.unique().shape[0])
print('评分/评论 数目(总计):%d\n' % pd_ratings.shape[0])
print('总体 评分 数目([1,5]):%d' % pd_ratings[(pd_ratings.rating>=1) & (pd_ratings.rating<=5)].shape[0])
print('环境 评分 数目([1,5]):%d' % pd_ratings[(pd_ratings.rating_env>=1) & (pd_ratings.rating_env<=5)].shape[0])
print('口味 评分 数目([1,5]):%d' % pd_ratings[(pd_ratings.rating_flavor>=1) & (pd_ratings.rating_flavor<=5)].shape[0])
print('服务 评分 数目([1,5]):%d' % pd_ratings[(pd_ratings.rating_service>=1) & (pd_ratings.rating_service<=5)].shape[0])
print('评论 数目:%d' % pd_ratings[~pd_ratings.comment.isna()].shape[0])
用户 数目:542706
评分/评论 数目(总计):4422473
总体 评分 数目([1,5]):3293878
环境 评分 数目([1,5]):4076220
口味 评分 数目([1,5]):4093819
服务 评分 数目([1,5]):4076220
评论 数目:4107409
该数据集非常的大,大约1.75G,WPS或Excel根本无法打开完整的数据集
字段说明
pd_ratings.sample(10)
数据集改良
为了减少数据集数量,和便于情感二分类处理,对该数据集做了以下处理:
1.只保留 rating列 和comment列
2.数据集去重去空
column1 = ["rating"]
column2 = ["comment"]
pd_all=pd_all.dropna(how = 'any')#去空值
pd_all=pd_all.drop_duplicates(column2)#去重
#去除空数据
display(pd_all.shape, pd_all.head())
(2681023, 8)
3.按照rating大小二分类
浏览数据集,rating1,2分为差评,3,4,5分为好评。
顺便将列名改为label 和review
df = pd.read_csv('./cleanratings.csv')#经上文操作处理过的文件
def score(x):
if x>=3:#大于等于3好评
return 1
else:#评分为1,2 差评
return 0
df['label']=df['label'].transform(score)
print('评论数目(总体):%d' % df.shape[0])
print('评论数目(正向):%d' % df[df.label==1].shape[0])
print('评论数目(负向):%d' % df[df.label==0].shape[0])
评论数目(总体):2681023
评论数目(正向):2478300
评论数目(负向):202723
可以看出正负向评论数量差别悬殊
4.均衡正负向评论
通过对正向评论随机抽样,使得正负向评论数目相同
df = pd.read_csv('./cleanratings.csv')
df1=df[df.label==1].sample(202723)
df2=df[df.label==0]
df = pd.concat([df1,df2],axis=0)#按行合并
#df[df.label==1]=df[df.label==1].sample(202723).label
print('评论数目(总体):%d' % df.shape[0])
print('评论数目(正向):%d' % df[df.label==1].shape[0])
print('评论数目(负向):%d' % df[df.label==0].shape[0])
df.to_csv('cleanratings.csv',index=False)
print("保存成功!")
评论数目(总体):405446
评论数目(正向):202723
评论数目(负向):202723
最终的[cleanratings.csv]文件
链接:https://pan.baidu.com/s/1G0_U-rkMHU4JfoK2SQyr4g
提取码:5y1h