爬取过程在这里:

Python爬取你好李焕英豆瓣短评并利用stylecloud制作更酷炫的词云图

本文基于前文爬取生成的douban.txt,基于SnowNLP做情感分析。


依赖库:

豆瓣镜像比较快:

pip install snownlp -i http://pypi.douban.com/simple/ --trusted-host=pypi.douban.com/simple


初识SnowNLP:

SnowNLP是一个常用的Python文本分析库,是受到TextBlob启发而发明的。由于当前自然语言处理库基本都是针对英文的,而中文没有空格分割特征词,Python做中文文本挖掘较难,后续开发了一些针对中文处理的库,例如SnowNLP、Jieba、BosonNLP等。

Snownlp主要功能包括:

  • 中文分词(算法是Character-Based Generative Model)
  • 词性标注(原理是TnT、3-gram 隐马)
  • 情感分析
  • 文本分类(原理是朴素贝叶斯)
  • 转换拼音、繁体转简体
  • 提取文本关键词(原理是TextRank)
  • 提取摘要(原理是TextRank)、分割句子
  • 文本相似(原理是BM25)

情感分析实战:

SnowNLP情感分析是基于情感词典实现的,其简单的将文本分为两类,积极和消极,返回值为情绪的概率,也就是情感评分在[0,1]之间,越接近1,情感表现越积极,越接近0,情感表现越消极。

下面对爬取的豆瓣电影《你好李焕英》评论进行情感分析。

情感各分数段出现频率

首先统计各情感分数段出现的评率并绘制对应的柱状图。

对douban.txt文件逐行进行情感倾向值计算,代码如下:

 1 # -*- coding: utf-8 -*-
2 # -*- coding: utf-8 -*-
3 from snownlp import SnowNLP
4 import matplotlib.pyplot as plt
5 import numpy as np
6
7 source = open("douban.txt","r", encoding='utf8')
8 line = source.readlines()
9 sentimentslist = []
10 for i in line:
11 s = SnowNLP(i)
12 print(s.sentiments)
13 sentimentslist.append(s.sentiments)
14
15
16 plt.hist(sentimentslist, bins = np.arange(0, 1, 0.01), facecolor = 'g')
17 plt.xlabel('Sentiments Probability')
18 plt.ylabel('Quantity')
19 plt.title('Analysis of Sentiments')
20 plt.show()

输出结果如下图所示:

对应的情感倾向值如下(部分):

情感波动分析

接下来分析评论,每条评论的波动情况,代码如下所示:

 1 # -*- coding: utf-8 -*-
2 # 区间[0,1]
3 from snownlp import SnowNLP
4
5 import matplotlib.pyplot as plt
6 import numpy as np
7
8 source = open("douban.txt","r", encoding='utf8')
9 line = source.readlines()
10 sentimentslist = []
11 for i in line:
12 s = SnowNLP(i)
13 print(s.sentiments)
14 sentimentslist.append(s.sentiments)
15
16
17 plt.plot(np.arange(0, 166, 1), sentimentslist, 'b-')
18 plt.xlabel('Number')
19 plt.ylabel('Sentiment')
20 plt.title('Analysis of Sentiments')
21 plt.show()

输出结果如下所示,接近1.0代表好评,可以看出好评率很高。

改进

将情感区间从[0, 1.0]转换为[-0.5, 0.5],这样的曲线更加直观,位于0以上的是积极评论,反之消极评论。
修改代码如下:

 1 # -*- coding: utf-8 -*-
2 import matplotlib.pyplot as plt
3 import numpy as np
4
5 from snownlp import SnowNLP
6
7
8 #获取情感分数
9 source = open("douban.txt","r", encoding='utf8')
10 line = source.readlines()
11 sentimentslist = []
12 for i in line:
13 s = SnowNLP(i)
14 print(s.sentiments)
15 sentimentslist.append(s.sentiments)
16
17 #区间转换为[-0.5, 0.5]
18 result = []
19 i = 0
20 while i<len(sentimentslist):
21 result.append(sentimentslist[i]-0.5)
22 i = i + 1
23
24 #可视化画图
25
26 plt.plot(np.arange(0, 166, 1), result, 'r-')
27 plt.xlabel('Number')
28 plt.ylabel('Sentiment')
29 plt.title('Analysis of Sentiments')
30 plt.show()

绘制图形如下所示:

可以看到0以上好评的远远超出差评。

爬取猫眼电影,此刻的《你好李焕英》票房已经超过46忆!!!

Python爬取《你好李焕英》豆瓣短评并基于SnowNLP做情感分析的更多相关文章

  1. 我用Python爬取了李沧最近一年多的二手房成交数据得出以下结论

    前言 去年年底,博主有购房的意愿,本来是打算在青岛市北购房,怎奈工作变动,意向转移到了李沧,坐等了半年以后,最终选择在红岛附近购置了期房. 也许一些知道青岛红岛的小伙伴会问我,为什么会跑到那鸟不拉屎的 ...

  2. Python爬取《冰雪奇缘2》豆瓣影评

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 刘铨@CCIS Lab PS:如有需要Python学习资料的小伙伴可 ...

  3. Python爬取豆瓣指定书籍的短评

    Python爬取豆瓣指定书籍的短评 #!/usr/bin/python # coding=utf-8 import re import sys import time import random im ...

  4. 利用Python爬取豆瓣电影

    目标:使用Python爬取豆瓣电影并保存MongoDB数据库中 我们先来看一下通过浏览器的方式来筛选某些特定的电影: 我们把URL来复制出来分析分析: https://movie.douban.com ...

  5. Python爬取豆瓣《复仇者联盟3》评论并生成乖萌的格鲁特

    代码地址如下:http://www.demodashi.com/demo/13257.html 1. 需求说明 本项目基于Python爬虫,爬取豆瓣电影上关于复仇者联盟3的所有影评,并保存至本地文件. ...

  6. Python爬取豆瓣电影top

    Python爬取豆瓣电影top250 下面以四种方法去解析数据,前面三种以插件库来解析,第四种以正则表达式去解析. xpath pyquery beaufifulsoup re 爬取信息:名称  评分 ...

  7. python爬取《龙岭迷窟》的数据,看看质量剧情还原度到底怎么样

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:简单 PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行 ...

  8. python爬取信息到数据库与mysql简单的表操作

    python 爬取豆瓣top250并导入到mysql数据库中 import pymysql import requests import re url='https://movie.douban.co ...

  9. Python 爬取所有51VOA网站的Learn a words文本及mp3音频

    Python 爬取所有51VOA网站的Learn a words文本及mp3音频 #!/usr/bin/env python # -*- coding: utf-8 -*- #Python 爬取所有5 ...

随机推荐

  1. 激光SLAM与视觉SLAM的特点

    激光SLAM与视觉SLAM的特点 目前,SLAM技术被广泛运用于机器人.无人机.无人驾驶.AR.VR等领域,依靠传感器可实现机器的自主定位.建图.路径规划等功能.由于传感器不同,SLAM的实现方式也有 ...

  2. CodeGen准备存储库

    CodeGen准备存储库 CodeGen几乎总是与提供用于生成源文件的元数据的存储库结构一起使用,并且许多令牌需要使用存储库结构. 基本要求是有一个结构定义,并且该结构定义包含一个或多个字段定义.有些 ...

  3. H265与ffmpeg改进开发

    H265与ffmpeg改进开发 1. Introduction KSC265是集编码.解码于一体的H.265编解码软件,完全遵循H.265协议标准.符合H.265编码规范的视频都可以通过KSC265进 ...

  4. Activity侧滑返回的实现原理

    简介 使用侧滑Activity返回很常见,例如微信就用到了.那么它是怎么实现的呢.本文带你剖析一下实现原理.我在github上找了一个star有2.6k的开源,我们分析他是怎么实现的 //star 2 ...

  5. 一起来聊聊 IP 地址、局域网、广域网、IPV4 和 IPV6

    背景 谁都知道 IP 地址是干嘛的,但是它出现的前因后果你真的知道吗? 我觉得很有必要重新复习下计算机网络基础知识,实在太太太重要了 本篇文章素材均来自:https://www.bilibili.co ...

  6. url参数接收的一些安全应用场景

    越权漏洞,从原来的修改id越权到后面的自己加参数,减参数越权,到现在的加特殊字符.攻击手段在进步: 以php和java为例,聊聊参数接收的最大接受能力,可以插入哪些脏数据? demo1.php: &l ...

  7. python 字典和列表嵌套用法

    python中字典和列表的使用,在数据处理中应该是最常用的,这两个熟练后基本可以应付大部分场景了.不过网上的基础教程只告诉你列表.字典是什么,如何使用,很少做组合说明. 刚好工作中采集promethe ...

  8. npm i安装命令中的-g -D -S的区别

    -g为全局安装 -D 对模块进行局部安装,模块写入到 devDependencies 对象 用于开发阶段,开发时用到的工具等 -S 局部安装,不同的是模块写入到 dependencies对象 用于生产 ...

  9. DNS 解析过程

    DNS 是应用层协议,用于将域名转换成 IP 地址. 1. 解析过程 DNS 的核心系统是一个三层的树状.分布式服务,基本对应域名的结构. 根域名服务器:管理顶级域名服务器,返回 com.net.cn ...

  10. kubelet分析-csi driver注册源码分析

    kubelet注册csi driver分析 kubelet注册csi driver的相关功能代码与kubelet的pluginManager有关,所以接下来对pluginManager进行分析.分析将 ...