目录
原始数据
绘制词云图
情感分析
原始数据
原始数据为某宝一商品的用户评论数据
绘制词云图
# coding=utf-8import jiebaimport reimport wordcloudimport imageio# 打开需要分析词频的文本with open('淘宝评论3.0.txt', encoding='utf-8') as f:data = f.read()# 文本预处理 :去除一些无用的字符只提取出中文出来new_data = re.findall('[\u4e00-\u9fa5]+', data, re.S)new_data = "/".join(new_data)# 文本分词seg_list_exact = jieba.cut(new_data, cut_all=True)result_list = []with open('py_code\数据分析\词云图\停用词库.txt', encoding='utf-8') as f: #可根据需要打开停用词库,然后加上不想显示的词语con = f.readlines()stop_words = set()for i in con:i = i.replace("\n", "") # 去掉读取每一行数据的\nstop_words.add(i)for word in seg_list_exact:if word not in stop_words and len(word) > 1:result_list.append(word)# 导入 imageio 库中的 imread 函数,并用这个函数读取本地图片,作为词云形状图片py = imageio.imread('果茶.png')#如何你想要改变词云图的形状,可以添加# 词云图设置wc = wordcloud.WordCloud(width=1000, # 图片的宽height=700, # 图片的高background_color='white', # 图片背景颜色font_path='msyh.ttc',# 词云字体mask=py, # 所使用的词云图片scale=15,# contour_width=5,# contour_color='red'# 轮廓颜色)# 给词云输入文字data = ' '.join(result_list[:500])wc.generate(data)# 词云图保存图片地址wc.to_file('output5.png')
首先对评论数据进行文本预处理,包括去除无用的字符以及停用词,文本分词,最后绘制词云图如下
从词云图中我们可以看出消费者的评价主要集中在口感、包装、味道等进行了高度好评,好喝、不错、很好成为了主流趋势。说明消费者在线上购买水果茶的主要满足感来自果茶的味道、口感以及包装等因素,商家在制作以及销售的过程中应该重点在这几个方面进行加强突破
情感分析
情感分析是对带有感情色彩的主观性文本进行分析、处理、归纳和推理的过程。按照处理文本的类别不同,可分为基于新闻评论的情感分析和基于产品评论的情感分析。其中,前者多用于舆情监控和信息预测,后者可帮助用户了解某一产品在大众心目中的口碑。目前常见的情感极性分析方法主要是两种:基于情感词典的方法和基于机器学习的方法。
我们主要利用第三方库SnowNLP对用户评论做情感分析。主要原理是计算出的情感分数表示语义积极的概率,越接近0情感表现越消极,越接近1情感表现越积极。
基于SnowNLP对用户评论分析的流程
我们先把处理过的评论数据txt文件格式转换为xlsx格式,便于后面的情感分析
import xlwt #.py文件要在和xlwt和xlrd同一层目录,不然报错import pandas as pdfrom openpyxl import Workbookwork_book = xlwt.Workbook(encoding='utf-8')sheet = work_book.add_sheet('Sheet1') #sheet页第一页sheet.write(0,0,'用户评论')f = open('淘宝评论.txt', encoding='utf-8') #.py文件和TestCase.txt同一目录,第一个参数是路径 row_excel = 1 #行data = f.readlines()for line in data:print(line) #测试sheet.write(row_excel,0,line)row_excel += 1work_book.save('淘宝评论.xls') #输出在同一目录f.close()
情感分析
#加载情感分析模块from snownlp import SnowNLP#from snownlp import sentimentimport pandas as pdimport matplotlib.pyplot as plt#读取文本数据df=pd.read_excel('淘宝评论.xls')#提取所有数据df1=df.iloc[:,0]print('将提取的数据打印出来:\n',df1)# 遍历每条评论进行预测values=[SnowNLP(i).sentiments for i in df1]#输出积极的概率,大于0.5积极的,小于0.5消极的#myval保存预测值myval=[]good=0bad=0for i in values: if (i>=0.5): myval.append("正面") good=good+1 else: myval.append("负面") bad=bad+1df['预测值']=valuesdf['评价类别']=myval#将结果输出到Exceldf.to_excel('淘宝评论.xls')rate=good/(good+bad)print('好评率','%.f%%' % (rate * 100)) #格式化为百分比#作图y=valuesplt.rc('font', family='SimHei', size=10)plt.plot(y, marker='o', mec='r', mfc='w',label=u'评价分值')plt.xlabel('用户')plt.ylabel('评价分值')# 让图例生效plt.legend()#添加标题plt.title('评论情感分析',family='SimHei',size=14,color='blue')plt.show()
从图中我们可以看出,用户评论情感分析得出的分值主要集中在0.8~1.0之间,说明这1000个样本评论中,正面情感明显多于负面情感。未来更好的观察正面情感的占比情况,我们通过统计出正面情感与负面情感的个数做出来如下饼图。
如图所示,我们不难看出此商品的评论中正面情感占绝大部分,占比85%,即我们可以得出果茶类商品基本可以得到消费者的认可与好评,具有良好的消费者市场基础。
以下是心得体会:
通过这次Python项目实战,我学到了许多新的知识,这是一个让我把书本上的理论知识运用于实践中的好机会。原先,学的时候感叹学的资料太难懂,此刻想来,有些其实并不难,关键在于理解。
在这次实战中还锻炼了我其他方面的潜力,提高了我的综合素质。首先,它锻炼了我做项目的潜力,提高了独立思考问题、自我动手操作的潜力,在工作的过程中,复习了以前学习过的知识,并掌握了一些应用知识的技巧等
在此次实战中,我还学会了下面几点工作学习心态:
1)继续学习,不断提升理论涵养。在信息时代,学习是不断地汲取新信息,获得事业进步的动力。作为一名青年学子更就应把学习作为持续工作用心性的重要途径。走上工作岗位后,我会用心响应单位号召,结合工作实际,不断学习理论、业务知识和社会知识,用先进的理论武装头脑,用精良的业务知识提升潜力,以广博的社会知识拓展视野。
2)努力实践,自觉进行主角转化。只有将理论付诸于实践才能实现理论自身的价值,也只有将理论付诸于实践才能使理论得以检验。同样,一个人的价值也是透过实践活动来实现的,也只有透过实践才能锻炼人的品质,彰显人的意志。
3)提高工作用心性和主动性。实习,是开端也是结束。展此刻自我面前的是一片任自我驰骋的沃土,也分明感受到了沉甸甸的职责。在今后的工作和生活中,我将继续学习,深入实践,不断提升自我,努力创造业绩,继续创造更多的价值。
这次Python实战不仅仅使我学到了知识,丰富了经验。也帮忙我缩小了实践和理论的差距。在未来的工作中我会把学到的理论知识和实践经验不断的应用到实际工作中,为实现理想而努力。