当前位置:   article > 正文

基于BosonNLP情感词典对网络评论数据的情感值计算,舆情分析

bosonnlp

        最近要做一个某个领域某个话题的网络舆情分析工作,需要计算一段时间内采集到的网络评论数据的情感值,从而分析该话题的舆情走向。那么要达到这么目的,我们就需要完成以下工作:

        一、选择情感词典

        要计算文本数据的情感值,那么就需要情感词典,这里,我们使用BosonNLP 的情感词典,该词典收集了114766个情感词,每个情感词都有一个对应的情感值。

     

         该情感词典是一个txt格式的文件,里面数据的格式为:情感词 情感值

     二、准备数据

        我们要分析某个话题的舆情,那就需要先采集到该话题在某段时间内的网络文本数据,该文本数据中每条数据只需要时间(具体到月日就行)和对应的文本就行。这个数据准备好后,可以放到数据库中,或者放在txt文件中。

        只是为了演示过程,我这里收集了一些某易财经板块下一些评论数据,只包含文本,没有日期,并将该数据存储在了txt文件中。大致如下:

  三、代码实现

        1、读取情感词典,将词典数据处理成字典的形式,方便后面使用:

  1. sentiment_score = {}
  2. with open(r'C:\Users\Administrator\Desktop\BosonNLP_sentiment_score.txt',encoding='utf8') as file:
  3. lines = file.readlines()
  4. for line in lines:
  5. word = line.split()[0]
  6. score = line.split()[1]
  7. print(word,score)
  8. sentiment_score[word] = eval(score)

2、读取要处理的网络文本数据。因为我演示的数据中没有日期属性,为了演示分析一段时间内舆情走势,我要在读取网络文本数据时,进行一个划分,分为7个数据集,默认为7天的数据。

  1. result_score = [] #存储最后计算到的情感值
  2. with open(r'163coments.txt', encoding='utf8') as file:
  3. lines = file.readlines()
  4. amount = len(lines)#总数据大小
  5. datasetLen = (int)(amount/7) +1#将数据集划分为7份,每一份的大小为datasetLen
  6. score = 0
  7. for i in range(len(lines)):
  8. cut_res = jieba.__lcut(lines[i])
  9. for res in cut_res:
  10. score += sentiment_score.get(res, 0)
  11. if (i+1)% datasetLen==0 or i == len(lines)-1: #计算完一份数据集,存储一次结果
  12. result_score.append(score)
  13. score = 0
  14. print(result_score)

        先定义一个列表result_score 用来存储最后计算到的这7份数据集的情感总值,然后读取评论数据,使用jieba分词工具对每一条评论进行分词,然后使用情感词典计算该评论的情感值,当处理的评论数据量为一份数据集的大小时,存储该数据集的总舆情值到result_score 中。最后处理完所有,打印出来看看。

3、将得到的结果进行一个可视化展示,用来分析一段时间内的舆情走势。这里使用到了matplotlib库,自己记得引入。

  1. # 设置字体,否则中文会乱码
  2. plt.rcParams["font.sans-serif"] = ['SimHei']
  3. #设置正常显示负号
  4. plt.rcParams['axes.unicode_minus'] = False
  5. dev_x = [1, 2, 3, 4, 5, 6, 7]
  6. dev_y = result_score
  7. plt.plot(dev_x, dev_y)
  8. plt.xlabel("时间")
  9. plt.ylabel("情感值")
  10. plt.title("网络舆情情感走势")
  11. plt.show()

       注意以上代码前面两行一定要注意,否则中文和负号无法显示。

4、显示分析的结果:

        

 

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

闽ICP备14008679号