用Python对用户评论典型意见进行数据挖掘文档格式.docx
- 文档编号:14114825
- 上传时间:2022-10-18
- 格式:DOCX
- 页数:12
- 大小:817.70KB
用Python对用户评论典型意见进行数据挖掘文档格式.docx
《用Python对用户评论典型意见进行数据挖掘文档格式.docx》由会员分享,可在线阅读,更多相关《用Python对用户评论典型意见进行数据挖掘文档格式.docx(12页珍藏版)》请在冰豆网上搜索。
1、数据清洗后的好评率
2、好/中/差评的概览
3、典型意见分析
首先来看看MIX2的大致情况:
一共有3497条评论,其中有些评论内容还是完全相同的。
用户大概在购买9天后后评论(可能与到货日期有关),平均打分为4.87分,评论里面有些完全相同的,小米MIX2只有一种颜色等等。
接下来我们先做第一件事情
京东采用的是5分制,其中4-5分为好评,2-4分为中评,1分为差评。
MIX2的好评率为96.63%,与京东官网的一致。
粗略的浏览以下评论,我们发现有这么几种无效评论。
第一种全是标点符号或者就一两个字:
这种情况可以利用正则表达式来去除,第二种比较麻烦,如:
这种评论中它纯属凑字数和灌水,不含任何产品的特征。
一种想法是看看评论中涉及的名词是否是领域中的词语,但是实际情况会非常复杂,比如
“用的很不错”、“太差了”...
它并没有主语,并不知道它评价的是啥。
这里我们反过来,假设每一类无效评论都有类似的关键词,一个评论中的词语只要有一些垃圾评论关键词,我们就把它判定为无效评论。
当然并也不需要给定所有的无效评论词,利用tfidf可以通过一个词语顺藤摸瓜找到其他类似的词语。
(还可以利用文本相似性算法寻找)
另外还有一种情况,虽然不属于无效评论,但是影响好评占比。
这种情况在追评中出现的较多,还有就是京东默认的好评。
虽然内容是差评,但是标记的分值是5分。
理论上也可以通过算法找出大部分。
在NLP领域中,有一个课题叫做情感分析(sentimentanalysis),它可以判断一句话的情感方向是正面的还是负面的(以概率大小给出,数值在0-1之间)。
如果一段评论的情感方向与对应的评分差异过大,则我们有理由相信它的评分是有误的。
当然这里有一个条件,那就是这个情感分析算法是非常准确的。
有大神专门用电商评论训练了一个开源的情感分析包snownlp,我们来看看这个包效果怎样。
嗯嗯,准确率为92.63%,看上去很高,但。
。
因为我把所有评论都判定为好评,那正确率也有96.54%。
再看上图中的ROC曲线,嗯,惨不忍睹。
曲线跟x轴之间的面积(记作AUC)越大,说明模型的判别能力越好。
一般情况曲线会在对角线之上(对角线相当于随机预测的结果),可以此时AUC=0.157,比随机结果差多啦。
更好的情感分析估计需要利用大量领域的语料重新训练才行,本文就暂不讨论这个啦。
二、好/中/差评的语义理解
语义理解是一个非常难的课题,本文不追求绝对精准,仅希望能对产品的评论有一个快速的理解。
本文将从三个方面来阐述同类型评论语料的语义:
1、词云。
它会统计一段文本中各个词语出现的次数(频数),频数越大,在词云中对应的字体也越大。
通过观察词云,可以知道一段文本主要在讲哪些东西
2、TextRank。
TextRank算法是一种用于文本的基于图的排序算法,可以给出一段文本的关键词。
其基本思想来源于谷歌的PageRank算法,通过把文本分割成若干组成单元(单词、句子)并建立图模型,利用投票机制对文本中的重要成分进行排序,仅利用单篇文档本身的信息即可实现关键词提取、文摘。
和LDA、HMM等模型不同,TextRank不需要事先对多篇文档进行学习训练,因其简洁有效而得到广泛应用。
3、主题分解。
假设每一段文本都是有主题的,比如新闻里的体育类、时事类、八卦类等。
通过对一系列的语料库进行主题分解(本文采用的是LDA),可以了解语料库涉及了哪些主题。
(本文用的LDA实际效果不怎么好,暂且仅供娱乐。
更好的方法后续或许会更新)
分析词云、关键词和主题容易发现
1、好评集中在:
屏幕、惊讶、手感、全面屏、边框,大致就是讲小米不错;
手感很好;
全面屏很惊艳之类的;
2、中评集中在:
屏幕、还好、失望、边框等
3、差评集中在:
客服、失灵、售后、失望、模式、微信等,大致就是失灵;
微信时的屏幕?
因为版本等出现了一些售后客服问题?
只能说还凑合,模模糊糊、断断续续能理解一些。
因为它只给出了词语,并没有配套的情感。
三、典型意见抽取和挖掘
电商评论不同于一般的网络文本,它主要的特点在于语料都是在针对产品的某些特征作出评价。
这一节我们希望能通过算法找到这些特征。
细想下,语料主要在对特征做出评价,而特征一般是名词,评价一般是形容词。
相对来讲产品的形容词不会很多,如“不错”、“流畅”、“很好”之类的,所以可以通过关联分析来发现初始的特征-形容词对,如("
"
-"
不错"
)、("
流畅"
)等。
通过关联分析找打的特征-形容词对需要筛选,主要表现在两点。
1、里面不只名词-形容词对,两个名词,形容词-动词等都有可能;
2、没有考虑两个词语在文本之间的距离。
比如名词是第一句话中的,形容词则是最后一句话中的;
筛选好后其实还不够,关联分析只会挖掘支持度大于一定数值的特征,我们称这种特征为"
常见特征"
那不常见特征怎么办?
怎么才能挖出来?
注意到上面已经挖掘出很多形容词啦,这些就是产品的最常用评价词语啦,我们可以通过它们反向挖掘出"
不常见特征"
可以看到与有关的大部分特征都找出来啦,另外有一些是关于京东的,如"
速度"
、"
京东"
快递"
还一些不是特征的,比如:
"
有点"
"
想象"
在语料中搜索与"
外观"
有关的语句,先看看大家在讲"
时,都在聊些啥?
看来小米MIX2的外观还是很不错的,有很多人都是冲着外观买的。
接下来我们来量化各个特征的好评占比和差评占比。
本来这里是想利用snownlp情感分析包来完成的,因为它能给出评价是否是正面的具体概率大小。
考虑到情感分析目前的准确率,这里我们还是用原始的评分来量化。
以刚刚的关键词"
外观|质感"
为例,我们有
利用这种方法,扩大到上述所有的特征可以得到:
可以看到提及最多的特征依次为:
感觉、屏幕、速度、手感、系统、边框、摄像头、全面屏、拍照、体验、256g、外观、质量、性价比
其中比较好的依次为:
性价比、质量、手感、速度、外观、感觉
其中稍差些的依次为:
256g、屏幕、边框、拍照、摄像头、系统、体验、全面屏
最后的最后我们来看下这些特征对应的语料。
总结一下差评主要表现在:
No1.256g版本发货问题
No2.窄边框问题
No3.拍照问题,MIX2的拍照效果有待提升
No4.前置摄像头在下面不方便
No5.系统,MIUI广告多
四、报告输出
这里安利一个自己造的轮子:
reportgen,结合DataFrame格式可以自动化生成PPTX报告。
目前Github关注量已经有20+啦。
在reportgen中,每一页幻灯片被简化成四部分:
标题、副标题、主体(数据图、表格、文本框或图片)、脚注。
只要给定每一页的这些数据,reportgen就能帮您自动生成pptx,一般四行代码就完成啦。
如:
当然本文的pptx要复杂一些,相应的代码和生成的报告如下:
本文作者
JSong
Python中文社区专栏作者,华东师范大学硕士,擅长数据分析与挖掘。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Python 用户 评论 典型 意见 进行 数据 挖掘
![提示](https://static.bdocx.com/images/bang_tan.gif)