当前位置:   article > 正文

SnowNLP实现情感分析(今日头条用户评论为数据源)_positive = [] negative = [] neutral=[] for review

positive = [] negative = [] neutral=[] for review in df2: s = snownlp(review

SnowNLP是一个python写的类库,可以方便的处理中文文本内容,是受到了TextBlob的启发而写的,由于现在大部分的自然语言处理库基本都是针对英文的,于是写了一个方便处理中文的类库,并且和TextBlob不同的是,这里没有用NLTK,所有的算法都是自己实现的,并且自带了一些训练好的字典。注意本程序都是处理的unicode编码,所以使用时请自行decode成unicode。

  1. from snownlp import SnowNLP
  2. import pandas as pd
  3. import os
  4. print('评论情感分析中.....')
  5. filePath = 'C:/Users/JayDen/Desktop/预处理评论数据/'
  6. filelist=os.listdir(filePath)
  7. for t in filelist:
  8. txt = open('C:/Users/JayDen/Desktop/预处理评论数据/'+t, 'r',encoding="utf-8") #加载要处理的文件的路径
  9. text = txt.readlines()
  10. #确认读取文件成功,并关闭文件节省资源
  11. txt.close()
  12. #遍历每一条评论,得到每条评论是positive文本的概率,每条评论计算完成后输出ok确认执行成功
  13. comments = []
  14. comments_score = []
  15. for i in (text[0].split()):
  16. a1 = SnowNLP(i)
  17. a2 = a1.sentiments
  18. comments.append(i)
  19. comments_score.append(a2)
  20. #将结果数据框存为.xlsx表格,查看结果及分布
  21. table = pd.DataFrame(comments, comments_score)
  22. table.to_excel('C:/Users/JayDen/Desktop/情感分析数据/'+t[0:-4]+'评论情感分析.xls', sheet_name='result')
  23. print('情感分析成功!')

这是我之前所爬取的今日头条关于某个台风的相关评论 

 

  1. import matplotlib
  2. import pandas as pd
  3. from pandas import DataFrame
  4. import xlrd
  5. import numpy as np
  6. import matplotlib.mlab as mlab
  7. import matplotlib.pyplot as plt
  8. from pyecharts import options as opts
  9. from pyecharts.charts import Pie
  10. from palettable.colorbrewer.qualitative import Pastel1_7
  11. import os
  12. plt.rcParams['font.sans-serif'] = 'simhei'
  13. plt.rcParams['axes.unicode_minus']=False
  14. filePath = 'C:/Users/JayDen/Desktop/情感分析数据/'
  15. filelist=os.listdir(filePath)
  16. for t in filelist:
  17. data = xlrd.open_workbook('C:/Users/JayDen/Desktop/情感分析数据/'+t)# 打开Excel文件
  18. table = data.sheets()[0]
  19. x = table.col_values(0,1)
  20. 正向评论_positive=0
  21. 负向评论_negative=0
  22. 中性评论_neutral=0
  23. for i in range(0,len(x)):
  24. if x[i]>=0.45 and x[i]<=0.55:
  25. 中性评论_neutral+=1
  26. if x[i]>0.55:
  27. 正向评论_positive+=1
  28. if x[i]<0.45 :
  29. 负向评论_negative+=1
  30. #print(正向评论_positive)
  31. #print(负向评论_negative)
  32. #print(中性评论_neutral)
  33. x = ['正向评论_positive', '负向评论_negative','中性评论_neutral']
  34. y = [正向评论_positive,负向评论_negative,中性评论_neutral]
  35. plt.pie(y,pctdistance=0.85,autopct='%.1f%%', labels=x, colors=Pastel1_7.hex_colors, wedgeprops=dict(width=0.3, edgecolor='w'))
  36. plt.legend(x,loc='upper left')
  37. plt.title(t[0:-10]+'--情感分类环形图')
  38. plt.savefig('C:/Users/JayDen/Desktop/数据可视化图集/评论情感分析环形图/'+t[0:-10]+'--情感分类环形图')
  39. plt.show()

将之前情感分析所计算出的得分按照相对应的区间分类,分为正向、负向、中性三类评论,最后可视化出环形图

 

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

闽ICP备14008679号