一、事件背景

今天是2021.12.2日,距离李子柒断更已经4个多月了,这是我在YouTube李子柒油管频道上,观看李子柒2021年7月14日上传的最后一条视频,我录制了视频下方的来自全世界各国网友的评论,全世界的网友们集体期待李子柒回归,瞬间泪奔。

https://zhuanlan.zhihu.com/p/440462123

针对全世界网友的热门评论,怎么分析出网友的评论态度和舆论导向呢?于是我试着用python做了情感分析,得出了一些舆情导向的结论。

二、python代码讲解

下面,通过python代码(部分核心代码)逐一分解,这个情感分析是怎样实现的:

首先,导入需要的库:

  1. 1 import pandas as pd # 数据分析库
  2. 2 from textblob import TextBlob # 英文情感分析库
  3. 3 import matplotlib.pyplot as plt # 画图
  4. 4 from wordcloud import WordCloud # 绘制词云图
  5. 5 from wordcloud import ImageColorGenerator
  6. 6 from PIL import Image
  7. 7 import numpy as np

然后,通过pandas读取excel评论数据(爬虫代码不做讲解,对爬虫代码感兴趣的小伙伴可以私聊我哦)

  1. 1 file = "李子柒评论.xlsx"
  2. 2 df = pd.read_excel(file, usecols=[1, 2, 3, 4, 5]) #读取评论数据
  3. 3 v_cmt_list = df['text'].values.tolist() # 把评论字段转换为list
  4. 4 print('length of v_cmt_list is:{}'.format(len(v_cmt_list)))

下面是情感分析的代码:

  1. 1 # 情感分析
  2. 2 score_list = [] # 情感评分值
  3. 3 tag_list = [] # 打标分类结果
  4. 4 for comment in v_cmt_list:
  5. 5 tag = ''
  6. 6 judge = TextBlob(comment)
  7. 7 sentiments_score = judge.sentiment.polarity
  8. 8 score_list.append(sentiments_score)
  9. 9 if sentiments_score < 0:
  10. 10 tag = '消极'
  11. 11 elif sentiments_score == 0:
  12. 12 tag = '中性'
  13. 13 else:
  14. 14 tag = '积极'
  15. 15 tag_list.append(tag)
  16. 16 df['情感得分'] = score_list
  17. 17 df['分析结果'] = tag_list
  18. 18 df.to_excel('情感分析结果.xlsx', index=None)

查看一下情感分析结果:

  1. 1 df.groupby(by=['分析结果']).count()['text'] # 分组统计情感分析结果

结果显示,中性和积极词汇占据一半以上,也就是说,大部分网友还是喜欢李子柒的视频的。

最后是词云图绘制的代码:

  1. 1 # 绘制词云图
  2. 2 stopwords = ['the', 'a', 'and', 'of', 'it', 'her', 'she', 'if', 'I', 'is', 'not', 'your', 'there', 'this',
  3. 3 'that', 'to', 'you', 'in', 'as', 'for', 'are', 'so', 'was', 'but', 'with', 'they', 'have'] # 停用词
  4. 4 coloring = np.array(Image.open("lzq3.jpeg"))
  5. 5 backgroud_Image = coloring # 读取背景图片
  6. 6 wc = WordCloud(
  7. 7 scale=3, # 图片大小,清晰度
  8. 8 background_color="white", # 背景颜色
  9. 9 max_words=1000, # 词数量
  10. 10 font_path='/System/Library/Fonts/SimHei.ttf', # Mac字体文件路径,根据实际情况替换
  11. 11 # font_path="C:\Windows\Fonts\simhei.ttf", # Win字体文件路径,根据实际情况替换
  12. 12 stopwords=stopwords, # 停用词
  13. 13 mask=backgroud_Image, # 背景图片
  14. 14 color_func=ImageColorGenerator(coloring), # 根据原始图片颜色生成词云图颜色
  15. 15 max_font_size=100, # 设置字体最大值
  16. 16 random_state=240 # 设置有多少种随机生成状态,即有多少种配色方案
  17. 17 )
  18. 18 wc.generate(v_cmt_str) # 生成词云图
  19. 19 wc.to_file('词云结果图.png') # 保存图片文件
  20. 20 display(Image.open('lzq3.jpeg')) # 显示原始图片
  21. 21 wc.to_image() # 显示词云图

词云图最后的展示效果如下:

这里需要说明的是,color_func=ImageColorGenerator(coloring)这句代码,能够根据原始图片颜色生成词云图颜色。细心的小伙伴应该能看出来,词云图的颜色配比和原始图片的颜色配比很接近了。

三、同步讲解视频

https://www.zhihu.com/zvideo/1449696394374684672

四、获取python源码文件

爱学习的小伙伴,想获取完整python代码文件,关注我的微信公众号"老男孩的平凡之路",后台回复"李子柒情感分析",即可获取完整python源码及结果文件。

首发公号文章:

https://mp.weixin.qq.com/s?__biz=MzU5MjQ2MzI0Nw==&mid=2247484565&idx=1&sn=ffd0f5e69a490f3fcf82109ea637b721&chksm=fe1e1075c9699963af56beda45cc010a1b515f87aa68a6443878a8e575e6ca57b53f4b449475&payreadticket=HLFBI00L_inc8Ul4LG_PKeZ9lkYuDEDLi03J5hjohpGC_by7jTbbayE1YtcMmWfrWKtLd7Y#rd

【Python情感分析】用python情感分析李子柒频道视频热门评论的更多相关文章

  1. Python学习-使用Python爬取陈奕迅新歌《我们》网易云热门评论

    <后来的我们>上映也有好几天了,一直没有去看,前几天还爆出退票的事件,电影的主题曲由陈奕迅所唱,特地找了主题曲<我们>的MV看了一遍,还是那个感觉.那天偶然间看到Python中 ...

  2. 【Python数据分析案例】python数据分析老番茄B站数据(pandas常用基础数据分析代码)

    一.爬取老番茄B站数据 前几天开发了一个python爬虫脚本,成功爬取了B站李子柒的视频数据,共142个视频,17个字段,含: 视频标题,视频地址,视频上传时间,视频时长,是否合作视频,视频分区,弹幕 ...

  3. 基于情感词典的python情感分析

    近期老师给我们安排了一个大作业,要求根据情感词典对微博语料进行情感分析.于是在网上狂找资料,看相关书籍,终于搞出了这个任务.现在做做笔记,总结一下本次的任务,同时也给遇到有同样需求的人,提供一点帮助. ...

  4. 【转】用python实现简单的文本情感分析

    import jieba import numpy as np # 打开词典文件,返回列表 def open_dict(Dict='hahah',path = r'/Users/zhangzhengh ...

  5. 预测分析建模 Python与R语言实现

    预测分析建模 Python与R语言实现 目录 前言 第1章 分析与数据科学1第2章 广告与促销10第3章 偏好与选择24第4章 购物篮分析31第5章 经济数据分析42第6章 运营管理56第7章 文本分 ...

  6. python笔记之常用模块用法分析

    python笔记之常用模块用法分析 内置模块(不用import就可以直接使用) 常用内置函数 help(obj) 在线帮助, obj可是任何类型 callable(obj) 查看一个obj是不是可以像 ...

  7. Python文章相关性分析---金庸武侠小说分析

    百度到<金庸小说全集 14部>全(TXT)作者:金庸 下载下来,然后读取内容with open('names.txt') as f: data = [line.strip() for li ...

  8. NetCloud——一个网易云音乐评论抓取和分析的Python库

    在17的四月份,我曾经写了一篇关于网易云音乐爬虫的文章,还写了一篇关于评论数据可视化的文章.在这大半年的时间里,有时会有一些朋友给我发私信询问一些关于代码方面的问题.所以我最近抽空干脆将原来的代码整理 ...

  9. 基于Python的信用评分卡模型分析(二)

    上一篇文章基于Python的信用评分卡模型分析(一)已经介绍了信用评分卡模型的数据预处理.探索性数据分析.变量分箱和变量选择等.接下来我们将继续讨论信用评分卡的模型实现和分析,信用评分的方法和自动评分 ...

随机推荐

  1. 什么是 Java Timer 类?如何创建一个有特定时间间隔的任务?

    java.util.Timer 是一个工具类,可以用于安排一个线程在未来的某个特定时间执 行.Timer 类可以用安排一次性任务或者周期任务. java.util.TimerTask 是一个实现了 R ...

  2. MySQL_fetch_array 和 MySQL_fetch_object 的区别是 什么?

    以下是 MySQL_fetch_array 和 MySQL_fetch_object 的区别: MySQL_fetch_array() – 将结果行作为关联数组或来自数据库的常规数组返回. MySQL ...

  3. 学习Puppet(一)

    puppet的入门 1.简介 puppet是一种采用C/S星状结构的linux.Unix平台的集中配置管理系统. puppet拥有自己的语言,可管理配置文件.用户.cron任务.软件包.系统服务等. ...

  4. 通过pink构造简易部署脚本

    安装git        https://www.cnblogs.com/youxiu326/p/10540753.html 安装maven https://www.cnblogs.com/youxi ...

  5. jupyter notebook使用技巧

    shift + tab 键可以查看对应源代码(注意:需要先将代码运行才能查看) Jupyter Notebook 的快捷键 Jupyter Notebook 有两种键盘输入模式:1.命令模式,键盘输入 ...

  6. javascript入门教程(二):变量

    大家好,我从今天开始就会正式讲javascript的语法方面.变量 js中的变量一般使用var来声明(es6的let不在本教程讨论范围内),可以用来定义任何种类的变量,如果只对变量进行了定义而没有赋值 ...

  7. H5打造3d场景不完全攻略(一): H5 3d表现形式

    前言 日前,taobao造物节H5放肆地火了一把.相信接下来将3d嵌入网站的这种营销方式会被越来越多的人留意到.工作之余体验了若干个3d H5页面,感觉这类的H5互动体验性明显要比普通的要强,把二维的 ...

  8. 使用css完成引导用户按照流程完成任务的进度导航条

    首先先看设计稿 图中的12345便是主角进度条. 分析需求如下:线的长度不固定,适应移动端和pc端点平均地分布在一条线上点的个数不固定,可能会改变激活的点之间线的颜色是绿色的 两种种方式 百分比宽度切 ...

  9. java中为什么把Checked Exception翻译成受检的异常?

    6.Checked Exception(受检的异常) 马克-to-win:为什么我大胆的把Checked Exception翻译成受检的异常?因为这类异常,编译器检查发现到它后会强令你catch它或t ...

  10. Pullword 中文分词

    安装 npm install pullword   使用 var defaultOptions = { url: 'http://api.pullword.com/post.php', /* api ...