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

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

        一、选择情感词典

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

     

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

     二、准备数据

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

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

  三、代码实现

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

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

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

result_score = [] #存储最后计算到的情感值
with open(r'163coments.txt', encoding='utf8') as file:
    lines = file.readlines()
    amount = len(lines)#总数据大小
    datasetLen = (int)(amount/7) +1#将数据集划分为7份,每一份的大小为datasetLen
    score = 0
    for i in range(len(lines)):
        cut_res = jieba.__lcut(lines[i])
        for res in cut_res:
            score += sentiment_score.get(res, 0)

        if (i+1)% datasetLen==0 or i == len(lines)-1: #计算完一份数据集,存储一次结果
            result_score.append(score)
            score = 0

print(result_score)

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

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

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

plt.show()

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

4、显示分析的结果:

        

 

  • 7
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阳光宅男xxb

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值