欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-10-14 11:52:58
第一部分 案例简介本案例首先利用Python文本挖掘技术,对碎片化、非结构化的电商网站评论数据进行清洗与处理,转化为结构化数据。然后对文本数据进一步挖掘与分析,采用决策树算法构建情感分类模型,探索用机器学习算法对评论标注type的可能性;依据情感词库匹配情感词,计算每条评论的情感值,进而机器标注每条评论的正负类型type,用词云图直观呈现正负评论的关键词,初步获得用户的反馈意见。最后利用gensim库构建主题挖掘模型,深入了解用户的意见、购买原因、产品的优缺点等。说明:本案例侧重分析思路及代码实现,不深...

第一部分 案例简介

本案例首先利用Python文本挖掘技术,对碎片化、非结构化的电商网站评论数据进行清洗与处理,转化为结构化数据。然后对文本数据进一步挖掘与分析,采用决策树算法构建情感分类模型,探索用机器学习算法对评论标注type的可能性;依据情感词库匹配情感词,计算每条评论的情感值,进而机器标注每条评论的正负类型type,用词云图直观呈现正负评论的关键词,初步获得用户的反馈意见。最后利用gensim库构建主题挖掘模型,深入了解用户的意见、购买原因、产品的优缺点等。

说明:本案例侧重分析思路及代码实现,不深入展开分析结果的业务解释与决策指导!

重要事情说三遍~

想听我讲案例,请点这里,进入B站
想听我讲案例,请点这里,进入B站
想听我讲案例,请点这里,进入B站

第二部分 框架

工具准备
一、导入数据
二、数据预处理
    (一)去重
    (二)数据清洗
    (三)分词、词性标注、去除停用词、词云图
三、模型构建
    (一)基于决策树的情感分类
    (二)情感分析
    (三)基于LDA模型的主题分析

第三部分 代码

工具准备

import os
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from matplotlib.pylab import style #自定义图表风格
style.use('ggplot')
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"
plt.rcParams['font.sans-serif'] = ['Simhei'] # 解决中文乱码问题

import re
import jieba.posseg as psg
import itertools
#conda install -c anaconda gensim
from gensim import corpora,models #主题挖掘,提取关键信息

# pip install wordcloud
from wordcloud import WordCloud,ImageColorGenerator
from collections import Counter

from sklearn import tree
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.metrics import classification_report
from sklearn.metrics import accuracy_score
import graphviz

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

一、导入数据

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

二、数据预处理

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

#分词,由元组组成的list
seg_content=content.apply( lambda s:  [(x.word,x.flag) for x in psg.cut(s)] )
#统计评论词数
n_word=seg_content.apply(lambda s: len(s))
#得到各分词在第几条评论
n_content=[ [x+1]*y for x,y in zip(list(seg_content.index),list(n_word))] #[x+1]*y,表示复制y份,由list组成的list
index_content_long=sum(n_content,[]) #表示去掉[],拉平,返回list
#分词及词性,去掉[],拉平
seg_content_long=sum(seg_content,[])
#得到加长版的分词、词性
word_long=[x[0] for x in seg_content_long]
nature_long=[x[1] for x in seg_content_long]
#content_type拉长
n_content_type=[ [x]*y for x,y in zip(list(reviews['content_type']),list(n_word))] #[x+1]*y,表示复制y份
content_type_long=sum(n_content_type,[]) #表示去掉[],拉平

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

三、模型构建

Python数据挖掘分析(电商产品评论数据情感分析)
Python数据挖掘分析(电商产品评论数据情感分析)
情感分析,截图部分,更多详情,请看B站视频
Python数据挖掘分析(电商产品评论数据情感分析)
Python数据挖掘分析(电商产品评论数据情感分析)
Python数据挖掘分析(电商产品评论数据情感分析)
Python数据挖掘分析(电商产品评论数据情感分析)
LDA模型,截图部分,更多详情,请看B站视频
Python数据挖掘分析(电商产品评论数据情感分析)

#主题数寻优
#这个函数可以重复调用,解决其他项目的问题

def LDA_k(x_corpus,x_dict):
    '''
    函数功能:
    '''
    #初始化平均余玄相似度
    mean_similarity=[]
    mean_similarity.append(1)
    
    #循环生成主题并计算主题间相似度
    for i in np.arange(2,11):
        lda=models.LdaModel(x_corpus,num_topics=i,id2word=x_dict) #LDA模型训练
        
        for j in np.arange(i):
            term=lda.show_topics(num_words=50)
        
        #提取各主题词
        top_word=[] #shape=(i,50)
        for k in np.arange(i):
            top_word.append( [''.join(re.findall('"(.*)"',i)) for i in term[k][1].split('+')]) #列出所有词
        
        #构造词频向量
        word=sum(top_word,[]) #列车所有词
        unique_word=set(word) #去重
        
        #构造主题词列表,行表示主题号,列表示各主题词
        mat=[] #shape=(i,len(unique_word))
        for j in np.arange(i):
            top_w=top_word[j]
            mat.append( tuple([ top_w.count(k) for k in unique_word ])) #统计list中元素的频次,返回元组
        
        #两两组合。方法一
        p=list(itertools.permutations(list(np.arange(i)),2)) #返回可迭代对象的所有数学全排列方式。
        y=len(p) # y=i*(i-1)
        top_similarity=[0]
        for w in np.arange(y):
            vector1=mat[p[w][0]]
            vector2=mat[p[w][1]]
            top_similarity.append(cos(vector1,vector2))

#        #两两组合,方法二
#        for x in range(i-1):
#            for y in range(x,i):
            
        #计算平均余玄相似度
        mean_similarity.append(sum(top_similarity)/ y)
    return mean_similarity

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

参考材料《Python数据分析与挖掘实战》

本文地址:https://blog.csdn.net/cqx2020/article/details/107116103