当前位置:   article > 正文

数据分析与挖掘实战-电商产品评论数据情感分析_数据挖掘电商产品评论数据情感分析

数据挖掘电商产品评论数据情感分析

电商产品评论数据情感分析

背景

随着网上购物越来越流行,人们对于网上购物的需求越来越高,这让京东、淘宝等电商平台得到了很大的发展机遇。但是,这种需求也推动了更多的电商平台的崛起,引发了激烈的竞争。在这种电商平台激烈竞争的大背景下,除了提高产品质量、压低商品价格外,了解更多消费者的心声对于电商平台来说越来越有必要了,其中非常重要的就是对消费者的文本评论数据进行内在信息的数据挖掘分析。

目标

对京东某一热水器进行文本挖掘分析,目标如下。

  • 分析热水器的用户情感倾向。
  • 从评论文本中挖掘出该品牌热水器的优点与不足。
  • 提炼不同品牌热水器的卖点。

分析

本次建模针对京东商城上“美的”品牌热水器的消费者的文本评论数据,在对文本进行基本的机器预处理、中文分词、停用词过滤后,通过建立包括栈式自编码深度学习、语义网络与LDA主题模型等多种数据挖掘模型,实现对文本评论数据的倾向性判断以及所隐藏的信息的挖掘并分析,以期望得到有价值的内在内容。
主要步骤如下。

  1. 利用爬虫工具-八爪鱼采集器,对京东商城进行热水器评论的数据采集。
  2. 但对获取的数据进行基本的处理操作,包括数据预处理、中文分词、停用词过滤等操作。
  3. 文本评论数据经过处理后 ,运用多种手段对评论数据进行多方面分析。
  4. 从对应结果的分析中获取文本评论数据中有价值的内容。

处理过程

数据获取

通过八爪鱼设计采集流程,得到数据,抽取评论一列数据。

数据探索

自己采集的,内容比较清晰。

数据预处理

文本去重

编辑距离去重、Simhash算法去重对于当前需求都有所缺陷,所以为了防止误删,采用简单的文本去重思路—完全相同才删除。

机械压缩去词

去掉连续重复的累赘表达,如“太贵了太贵了太贵了”可以压缩为“太贵了”。

短句删除

子数过少的句子没有意义(相对而言)。

文本评论分词

使用jieba分词。

数据挖掘建模

情感倾向性模型
  • 训练生成词向量
  • 评论集子集的人工标注与映射
  • 训练栈式自编码网络
基于语义网络的评论分析

主要使用ROSTCM6进行分析。

基于LDA模型的主题分析

这里使用gensim这个包提取主题。

# -*- coding: utf-8 -*-
import pandas as pd


def LDA():
    '''
    LDA主题分析
    :return:
    '''
    # 参数初始化
    negfile = 'data/meidi_jd_neg_cut.txt'
    posfile = 'data/meidi_jd_pos_cut.txt'
    stoplist = 'data/stoplist.txt'

    neg = pd.read_csv(negfile, encoding='utf-8', header=None)  # 读入数据
    pos = pd.read_csv(posfile, encoding='utf-8', header=None)
    stop = pd.read_csv(stoplist, encoding='utf-8', header=None, sep='tipdm', engine='python')
    # sep设置分割词,由于csv默认以半角逗号为分割词,而该词恰好在停用词表中,因此会导致读取出错
    # 所以解决办法是手动设置一个不存在的分割词,如tipdm。
    stop = [' ', ''] + list(stop[0])  # Pandas自动过滤了空格符,这里手动添加

    neg[1] = neg[0].apply(lambda s: s.split(' '))  # 定义一个分割函数,然后用apply广播
    neg[2] = neg[1].apply(lambda x: [i for i in x if i not in stop])  # 逐词判断是否停用词,思路同上
    pos[1] = pos[0].apply(lambda s: s.split(' '))
    pos[2] = pos[1].apply(lambda x: [i for i in x if i not in stop])

    from gensim import corpora, models

    # 负面主题分析
    neg_dict = corpora.Dictionary(neg[2])  # 建立词典
    neg_corpus = [neg_dict.doc2bow(i) for i in neg[2]]  # 建立语料库
    neg_lda = models.LdaModel(neg_corpus, num_topics=3, id2word=neg_dict)  # LDA模型训练
    for i in range(3):
        neg_lda.print_topic(i)  # 输出每个主题
        print(neg_lda.print_topic(i))

    # 正面主题分析
    pos_dict = corpora.Dictionary(pos[2])
    pos_corpus = [pos_dict.doc2bow(i) for i in pos[2]]
    pos_lda = models.LdaModel(pos_corpus, num_topics=3, id2word=pos_dict)
    for i in range(3):
        neg_lda.print_topic(i)  # 输出每个主题
        print(pos_lda.print_topic(i))


if __name__ == '__main__':
    LDA()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47

后续处理

根据主题归纳。
  • 在保证热水器使用方便、价格实惠等优点的基础上,对热水器进行改进,提高产品质量。
  • 提升安装人员及客服人员的整体素质,提高服务质量。安装费用明文收取细则,并进行公开透明,减少乱收费。降低安装费和材料费,以此在大品牌竞争中凸显优势。

补充说明

这应该是本系列实战的最后一篇了(也是比较靠近生活的一篇),到此数据挖掘常用的工具、方法、操作基本上已经使用了一遍。本案例参考书为《Python数据分析与挖掘实战》,与原书有借鉴,但是较大改动代码,修复了原书一些旧版本代码错误。

具体数据集和代码可以查看我的Github,欢迎star或者fork

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/333229
推荐阅读
相关标签
  

闽ICP备14008679号