Skip to content

一个比较基础、全面的文本挖掘过程。包含了利用机器学习和文本挖掘技术完成情感分析模型搭建;利用情感极性判断与程度计算来判断情感倾向;利用词频和TF-IDF挖掘出正负文本中的关键点情况;利用文本挖掘相关算法找到平台中用户讨论的集中点。

Notifications You must be signed in to change notification settings

MatoYing/TextMining

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

74 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

电商评论文本挖掘

前言

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

目录结构

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

README目录

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

About

一个比较基础、全面的文本挖掘过程。包含了利用机器学习和文本挖掘技术完成情感分析模型搭建;利用情感极性判断与程度计算来判断情感倾向;利用词频和TF-IDF挖掘出正负文本中的关键点情况;利用文本挖掘相关算法找到平台中用户讨论的集中点。

Topics

Resources

Stars

Watchers

Forks