• 改良的用于情感分类的餐馆评论数据集


    原数据说明

    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])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    用户 数目:542706
    评分/评论 数目(总计):4422473
    
    总体 评分 数目([1,5]):3293878
    环境 评分 数目([1,5]):4076220
    口味 评分 数目([1,5]):4093819
    服务 评分 数目([1,5]):4076220
    评论 数目:4107409
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    该数据集非常的大,大约1.75G,WPS或Excel根本无法打开完整的数据集

    字段说明

    在这里插入图片描述

    pd_ratings.sample(10)
    
    • 1

    在这里插入图片描述

    数据集改良

    为了减少数据集数量,和便于情感二分类处理,对该数据集做了以下处理:

    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())
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    (2681023, 8)
    
    • 1

    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])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    评论数目(总体):2681023
    评论数目(正向):2478300
    评论数目(负向):202723
    
    • 1
    • 2
    • 3

    可以看出正负向评论数量差别悬殊

    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("保存成功!")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    评论数目(总体):405446
    评论数目(正向):202723
    评论数目(负向):202723
    
    • 1
    • 2
    • 3

    最终的[cleanratings.csv]文件

    链接:https://pan.baidu.com/s/1G0_U-rkMHU4JfoK2SQyr4g
    提取码:5y1h

  • 相关阅读:
    数仓工具—Hive源码之SQL 解析(6)
    shell脚本字典创建遍历打印
    脑电病理波资料统计-----异常脑波的分类&诱发实验
    JavaScript数字、数字方法
    口袋参谋:如何一键获取竞品数据?这招实用!
    PTA 7-5 令人抓狂的四则运算
    如果在 Mac 上的 Safari 浏览器中无法打开网站
    在Tomcat中启用虚拟线程特性
    ffmpeg将一个视频中的音频合并到另一个视频
    SkeyeGisMap地图扩展(三) 自定义事件
  • 原文地址:https://blog.csdn.net/weixin_48785707/article/details/126879539