• 电商评论文本挖掘


    前言

    该项目是我在大三选修课(大数据分析与应用)的实验报告,我觉得文本挖掘的项目网上相对来说不是很多,我也是参考了许多Github上的项目,以及自己的一些所学,而完成的一个基础的文本挖掘项目。我觉的整体批注写的还比较全面,便于业余选手,或者只是想了解了解文本挖掘、机器学习、调调包的同学们学习。欢迎大家交流,源码在Github上,希望大家能点个收藏,鼓励一下!

    目录结构

    好评:好评数据(只上传了一些)。
    工具:所有代码中国另外需要读取的东西(我改变了原有的目录结构,如果下载下来要跑的话记得更改读取文件的目录)。
    差评:差评数据(只上传了一些)。
    README.md
    plus_motion.ipnb:源代码。

    1.实验目的

    利用所学,对如下数据进行文本挖掘,主要实现一下四个方面内容:

    1. 利用机器学习和文本挖掘技术完成情感分析模型搭建。
    2. 利用情感极性判断与程度计算来判断情感倾向。
    3. 利用词频和TF-IDF挖掘出正负文本中的关键点情况。
    4. 利用文本挖掘相关算法找到平台中用户讨论的集中点。

    2.数据介绍

    主要由商品id,评论时间、评论内容、点赞数、评论打分构成。
    image

    3.数据清洗

    1. 使用unique观察商品id、点赞数、评论打分的情况。
      image
    2. 查看评论打分的具体分布,发现4非常少,所以将4归为5分。并且为了方便,将5变为1,将1变为0。
      image
      image
    3. 观察每个商品好评与差评的数量分布,可以发现一个商品好评、差评最多1000条,一个商品好评>=差评。
      image
    4. 观察每年的商品数量,可以发现主要集中在2021年附近。
      image
    5. 观察评论长度分布。
      image
    6. 观察评论长度大小分布情况。
      image
    7. 根据以上观察,去掉一些长度过短、过长的评论。
      image
    8. 删除重复值。
      image
    9. 删除标点符号或英文字母过多的评论。
      image
    10. 处理HTML符号。
      image
    11. 处理*(可能是违禁语、价格、品牌),好评:差评=1:2,应该保留。但每个的数量还不一样,为了避免jieba分出来多个,将每个出现的都变为1个*。
      image
    12. 将“京东”、“奶粉”字样去除,所有商品都是奶粉,都来自于京东。
      image
    13. jieba分词。
      image
      image
    14. 根据停用词,处理分词后的结果。
      image
    15. 利用jieba.posseg进行分词后的词性识别。
      image
      image
    16. 数据清洗后的结果。
      image

    4.利用机器学习和文本挖掘技术完成情感分析模型搭建

    1. 根据不同函数情感挖掘的情况,对逻辑回归LogisticRegression、多项式贝叶斯MultionamialNB、随机森林RandomForestClassifier进行进一步探索。
    2. 首先对文字使用TF-IDF进行处理变为数字。
      image
      image
    3. 对数据进行PCA降维,从累计贡献率可以看出,使用PCA降维的效果欠佳,几乎每个特征都不能消除,特征之间都几乎不具备共线性,所以不使用PCA降维。
      image
      image
    4. 使用RandomForestClassifier模型的feature_importance_属性来找出前N个最重要的特征。
      image
    5. 根据RandomForestClassifier的重要性特征排序,分别每隔100,进行ROC比较,找到合适的特征个数,前900个已经不错。
      image
      image
      image
      image
    6. 同理使用卡方检验选出前N重要的特征,前800个特征已经相当不错。
      image
    7. 将RandomForestClassifier的前900特征,与SelectKBest前800特征,合并,形成新的特征。
      image
    8. 合并后计算ROC-AUC曲线,效果还不错。
      image
    9. 用得到的新特征开始进行三个模型训练,并分别利用网格搜索、随机网格搜索、交叉验证来进行调参,并通过计算准确率、查全率等,绘制混淆矩阵,绘制ROC-AUC曲线进行对比,最后发现逻辑回归的整体性能表现最好。
      image
      image
      image
      image
      image
      image

    5.利用情感极性判断与程度计算来判断情感倾向

    1. 主要思路:对文档分词,找出文档中的情感词、否定词以及程度副词;然后判断每个情感词之前是否有否定词及程度副词,将它之前的否定词和程度副词划分为一个组;如果有否定词将情感词的情感权值乘以-1,如果有程度副词就乘以程度副词的程度值;最后所有组的得分加起来,大于0的归于正向,小于0的归于负向,得分的绝对值大小反映了积极或消极的程度。
    2. 读取否定词、程度副词、情感极性词典。
      image
    3. 根据情感词计算情感分数。
      image
    4. 计算正确率,为0.835,效果还不错。
      image
      image

    6.利用词频和TF-IDF挖掘出正负文本中的关键点情况

    1. 利用Tf-idf将文字转为有权重的特征值。
      image
    2. 根据权重排名,取出权重比较大的特征。
      image
      image
      image
      image
    3. 绘制云词图可视化展示。
      image
      image
    4. 生成共现矩阵,利用共现矩阵查看具体一个词说了什么,大约1200-300,重要性高的词调高end。
      image
      image
      image
    5. 可以得到以下结论,顾客对以下方面比较满意/在意:宝宝喜欢,老人喜欢(少部分奶粉是老人奶粉);味道、口感、接近母乳;营养配方,身体免疫力,清火,消化吸收;正品;包装;物流速度,快递员服务(顾客喜欢下单第二天就送达);活动力度,价格,性价比,比超市便宜;大品牌;溶解性好,结块不严重;日期新鲜;自营;满意度:飞鹤>伊利>安佳>蒙牛(>德运);满意度:脱脂>全脂;满意度:进口>国产;独立小包装;可以和麦片搭配销售。
      顾客对以下方面比较不满意/在意,差评数据量不太大,很多都是上面好评原因的对立面,下面为几个主要原因:客服服务,售后;勺子;奶粉的质量、口味;买完就降价;没送赠品;保质期;结块;包装问题,快递问题;不满意:飞鹤>伊利;假货,不是原装进口。

    7.利用文本挖掘相关算法找到平台中用户讨论的集中点

    1. 利用奇异值分解对评论主题分析。
      image
      image
      image
      image
    2. 好评的主要主题为:牛奶的配方有营养,味道好;牛奶便于吸收,溶解性好,清火,有营养;口感好,香味十足;接近母乳,更喜欢飞鹤;物流快,包装好。分布为主题一最多。
      image
    3. 差评的主要主题为:味道不好,客服不满意,包装不好,勺子不好;客服不好,买完就降价,包装不好,赠品不好;勺子不好,客服不满意,买完就降价,快递不配送,少赠品。分布为主题一最多。
      image
  • 相关阅读:
    算法通关村——数字中的统计、溢出、进制转换处理模板
    python实现生存分析(Survival Analysis)
    视频分类综述(一)
    Oracle rman定时备份策略
    【SV中的多线程fork...join/join_any/join_none】
    VR虚拟现实技术在法院技能培训中的应用
    电脑录屏快捷键,轻松提升录屏效率
    Python 3.X环境下搭建Robot Framework过程及问题汇总
    第二章_Windows用户管理_实验案例_配置服务器的用户级组账户
    AD快捷键
  • 原文地址:https://blog.csdn.net/Fishermen_sail/article/details/127662086