【Python情感分析】用python情感分析李子柒频道视频热门评论
一、事件背景
今天是2021.12.2日,距离李子柒断更已经4个多月了,这是我在YouTube李子柒油管频道上,观看李子柒2021年7月14日上传的最后一条视频,我录制了视频下方的来自全世界各国网友的评论,全世界的网友们集体期待李子柒回归,瞬间泪奔。
https://zhuanlan.zhihu.com/p/440462123
针对全世界网友的热门评论,怎么分析出网友的评论态度和舆论导向呢?于是我试着用python做了情感分析,得出了一些舆情导向的结论。
二、python代码讲解
下面,通过python代码(部分核心代码)逐一分解,这个情感分析是怎样实现的:
首先,导入需要的库:
1 import pandas as pd # 数据分析库
2 from textblob import TextBlob # 英文情感分析库
3 import matplotlib.pyplot as plt # 画图
4 from wordcloud import WordCloud # 绘制词云图
5 from wordcloud import ImageColorGenerator
6 from PIL import Image
7 import numpy as np
然后,通过pandas读取excel评论数据(爬虫代码不做讲解,对爬虫代码感兴趣的小伙伴可以私聊我哦)
1 file = "李子柒评论.xlsx"
2 df = pd.read_excel(file, usecols=[1, 2, 3, 4, 5]) #读取评论数据
3 v_cmt_list = df['text'].values.tolist() # 把评论字段转换为list
4 print('length of v_cmt_list is:{}'.format(len(v_cmt_list)))
下面是情感分析的代码:
1 # 情感分析
2 score_list = [] # 情感评分值
3 tag_list = [] # 打标分类结果
4 for comment in v_cmt_list:
5 tag = ''
6 judge = TextBlob(comment)
7 sentiments_score = judge.sentiment.polarity
8 score_list.append(sentiments_score)
9 if sentiments_score < 0:
10 tag = '消极'
11 elif sentiments_score == 0:
12 tag = '中性'
13 else:
14 tag = '积极'
15 tag_list.append(tag)
16 df['情感得分'] = score_list
17 df['分析结果'] = tag_list
18 df.to_excel('情感分析结果.xlsx', index=None)
查看一下情感分析结果:
1 df.groupby(by=['分析结果']).count()['text'] # 分组统计情感分析结果
结果显示,中性和积极词汇占据一半以上,也就是说,大部分网友还是喜欢李子柒的视频的。
最后是词云图绘制的代码:
1 # 绘制词云图
2 stopwords = ['the', 'a', 'and', 'of', 'it', 'her', 'she', 'if', 'I', 'is', 'not', 'your', 'there', 'this',
3 'that', 'to', 'you', 'in', 'as', 'for', 'are', 'so', 'was', 'but', 'with', 'they', 'have'] # 停用词
4 coloring = np.array(Image.open("lzq3.jpeg"))
5 backgroud_Image = coloring # 读取背景图片
6 wc = WordCloud(
7 scale=3, # 图片大小,清晰度
8 background_color="white", # 背景颜色
9 max_words=1000, # 词数量
10 font_path='/System/Library/Fonts/SimHei.ttf', # Mac字体文件路径,根据实际情况替换
11 # font_path="C:\Windows\Fonts\simhei.ttf", # Win字体文件路径,根据实际情况替换
12 stopwords=stopwords, # 停用词
13 mask=backgroud_Image, # 背景图片
14 color_func=ImageColorGenerator(coloring), # 根据原始图片颜色生成词云图颜色
15 max_font_size=100, # 设置字体最大值
16 random_state=240 # 设置有多少种随机生成状态,即有多少种配色方案
17 )
18 wc.generate(v_cmt_str) # 生成词云图
19 wc.to_file('词云结果图.png') # 保存图片文件
20 display(Image.open('lzq3.jpeg')) # 显示原始图片
21 wc.to_image() # 显示词云图
词云图最后的展示效果如下:
这里需要说明的是,color_func=ImageColorGenerator(coloring)这句代码,能够根据原始图片颜色生成词云图颜色。细心的小伙伴应该能看出来,词云图的颜色配比和原始图片的颜色配比很接近了。
三、同步讲解视频
https://www.zhihu.com/zvideo/1449696394374684672
四、获取python源码文件
爱学习的小伙伴,想获取完整python代码文件,关注我的微信公众号"老男孩的平凡之路",后台回复"李子柒情感分析",即可获取完整python源码及结果文件。
首发公号文章:
【Python情感分析】用python情感分析李子柒频道视频热门评论的更多相关文章
- Python学习-使用Python爬取陈奕迅新歌《我们》网易云热门评论
<后来的我们>上映也有好几天了,一直没有去看,前几天还爆出退票的事件,电影的主题曲由陈奕迅所唱,特地找了主题曲<我们>的MV看了一遍,还是那个感觉.那天偶然间看到Python中 ...
- 【Python数据分析案例】python数据分析老番茄B站数据(pandas常用基础数据分析代码)
一.爬取老番茄B站数据 前几天开发了一个python爬虫脚本,成功爬取了B站李子柒的视频数据,共142个视频,17个字段,含: 视频标题,视频地址,视频上传时间,视频时长,是否合作视频,视频分区,弹幕 ...
- 基于情感词典的python情感分析
近期老师给我们安排了一个大作业,要求根据情感词典对微博语料进行情感分析.于是在网上狂找资料,看相关书籍,终于搞出了这个任务.现在做做笔记,总结一下本次的任务,同时也给遇到有同样需求的人,提供一点帮助. ...
- 【转】用python实现简单的文本情感分析
import jieba import numpy as np # 打开词典文件,返回列表 def open_dict(Dict='hahah',path = r'/Users/zhangzhengh ...
- 预测分析建模 Python与R语言实现
预测分析建模 Python与R语言实现 目录 前言 第1章 分析与数据科学1第2章 广告与促销10第3章 偏好与选择24第4章 购物篮分析31第5章 经济数据分析42第6章 运营管理56第7章 文本分 ...
- python笔记之常用模块用法分析
python笔记之常用模块用法分析 内置模块(不用import就可以直接使用) 常用内置函数 help(obj) 在线帮助, obj可是任何类型 callable(obj) 查看一个obj是不是可以像 ...
- Python文章相关性分析---金庸武侠小说分析
百度到<金庸小说全集 14部>全(TXT)作者:金庸 下载下来,然后读取内容with open('names.txt') as f: data = [line.strip() for li ...
- NetCloud——一个网易云音乐评论抓取和分析的Python库
在17的四月份,我曾经写了一篇关于网易云音乐爬虫的文章,还写了一篇关于评论数据可视化的文章.在这大半年的时间里,有时会有一些朋友给我发私信询问一些关于代码方面的问题.所以我最近抽空干脆将原来的代码整理 ...
- 基于Python的信用评分卡模型分析(二)
上一篇文章基于Python的信用评分卡模型分析(一)已经介绍了信用评分卡模型的数据预处理.探索性数据分析.变量分箱和变量选择等.接下来我们将继续讨论信用评分卡的模型实现和分析,信用评分的方法和自动评分 ...
随机推荐
- 面试问题之C++语言:C与C++的区别
C是C++的基础,C++语言和C语言在很多方面是兼容的. C是结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出或实现过程(事务 ...
- 图灵机器人 V1 和 V2 接入方法
API1.0使用方法: import requests import json import yuyinhecheng as hc def Tuling(words): Tuling_API_ ...
- js获取一周前日期
项目中需要设定默认开始时间为一周前,结束时间为现在,现在写一下如何用js获取一周前日期. 1 var time=(new Date).getTime()-7*24*60*60*1000; 2 var ...
- 数据库遇到的问题之“datetime设置默认为CURRENT_TIMESTAMP时报无效默认问题”和“时区问题”
一.问题1 问题描述: 今日加入创建时间和修改时间,并设置为默认CURRENT_TIMESTAMP时,出现错误,指向sql中的datetime字段,查了一下,发现是版本问题 立马查询自己的MySQL版 ...
- swagger的作用和配置使用
纯API项目中 引入swagger可以生成可视化的API接口页面 引入包 nuget包: Swashbuckle.AspNetCore(最新稳定版) 配置 1.配置Startup类Config ...
- (stm32f103学习总结)—待机唤醒实验
一.STM32待机模式介绍 1.1 STM32低功耗模式介绍 很多单片机具有低功耗模式,比如MSP430.STM8L等,我们的STM32 也不例外.默认情况下,系统复位或上电复位后,微控制器进入运行模 ...
- 什么是jsp?jsp的内置对象有哪些?
这里是修真院前端小课堂,每篇分享文从 [背景介绍][知识剖析][常见问题][解决方案][编码实战][扩展思考][更多讨论][参考文献] 八个方面深度解析前端知识/技能,本篇分享的是: [什么是jsp? ...
- ES6-11学习笔记--箭头函数
1.this指向定义时所在的对象,而不是调用时所在的对象 2.不可以当做构造函数 3.不可以使用arguments对象 ES5中定义函数的两种方式: function fn1() { consol ...
- DB2表数据导出、导入及常用sql使用总结
一.DB2数据的导出: export to [path(例:D:"TABLE1.ixf)]of ixf select [字段(例: * or col1,col2,col3)] from ...
- 将本地代码上传到gitLab
1. 在远程gitLab仓库创建项目, 执行下列命令 git init git remote add origin git@10.10.xxx.git (gitLab刚刚创建的工程地址) git ...