2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > Python文本挖掘练习(五)// 电商产品评论数据情感分析

Python文本挖掘练习(五)// 电商产品评论数据情感分析

时间:2019-12-04 22:19:29

相关推荐

Python文本挖掘练习(五)// 电商产品评论数据情感分析

第一部分 案例简介

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

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

重要事情说三遍~

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

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

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

第二部分 框架

工具准备

一、导入数据

二、数据预处理

(一)去重

(二)数据清洗

(三)分词、词性标注、去除停用词、词云图

三、模型构建

(一)基于决策树的情感分类

(二)情感分析

(三)基于LDA模型的主题分析

第三部分 代码

工具准备

import osimport numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsfrom matplotlib.pylab import style #自定义图表风格style.use('ggplot')from IPython.core.interactiveshell import InteractiveShellInteractiveShell.ast_node_interactivity = "all"plt.rcParams['font.sans-serif'] = ['Simhei'] # 解决中文乱码问题import reimport jieba.posseg as psgimport itertools#conda install -c anaconda gensimfrom gensim import corpora,models #主题挖掘,提取关键信息# pip install wordcloudfrom wordcloud import WordCloud,ImageColorGeneratorfrom collections import Counterfrom sklearn import treefrom sklearn.model_selection import train_test_splitfrom sklearn.feature_extraction.text import CountVectorizerfrom sklearn.metrics import classification_reportfrom sklearn.metrics import accuracy_scoreimport graphviz

一、导入数据

二、数据预处理

#分词,由元组组成的listseg_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组成的listindex_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,[]) #表示去掉[],拉平

三、模型构建

情感分析,截图部分,更多详情,请看B站视频

LDA模型,截图部分,更多详情,请看B站视频

#主题数寻优#这个函数可以重复调用,解决其他项目的问题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数据分析与挖掘实战》

链接:/s/1na4I2yYZpjj3vByfbgZXGg

提取码:zj7p

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。