一、事件背景
今天是2021.12.2日访忿,距離李子柒斷更已經(jīng)4個(gè)多月了是牢,這是我在YouTube李子柒油管頻道上,觀看李子柒2021年7月14日上傳的最后一條視頻礁击,我錄制了視頻下方的來自全世界各國網(wǎng)友的評(píng)論盐杂,全世界的網(wǎng)友們集體期待李子柒回歸,瞬間淚奔客税。
https://www.bilibili.com/video/BV1QL4y1p7dT/
針對(duì)全世界網(wǎng)友的熱門評(píng)論况褪,怎么分析出網(wǎng)友的評(píng)論態(tài)度和輿論導(dǎo)向呢撕贞?于是我試著用python做了情感分析更耻,得出了一些輿情導(dǎo)向的結(jié)論。
二捏膨、python代碼講解
下面秧均,通過python代碼(部分核心代碼)逐一分解,這個(gè)情感分析是怎樣實(shí)現(xiàn)的:
首先号涯,導(dǎo)入需要的庫:
import pandas as pd # 數(shù)據(jù)分析庫
from textblob import TextBlob # 英文情感分析庫
import matplotlib.pyplot as plt # 畫圖
from wordcloud import WordCloud # 繪制詞云圖
from wordcloud import ImageColorGenerator
from PIL import Image
import numpy as np
然后目胡,通過pandas讀取excel評(píng)論數(shù)據(jù)(爬蟲代碼不做講解,對(duì)爬蟲代碼感興趣的小伙伴可以s我哦)
file = "李子柒評(píng)論.xlsx"
df = pd.read_excel(file, usecols=[1, 2, 3, 4, 5]) #讀取評(píng)論數(shù)據(jù)
v_cmt_list = df['text'].values.tolist() # 把評(píng)論字段轉(zhuǎn)換為list
print('length of v_cmt_list is:{}'.format(len(v_cmt_list)))
下面是情感分析的代碼:
# 情感分析
score_list = [] # 情感評(píng)分值
tag_list = [] # 打標(biāo)分類結(jié)果
for comment in v_cmt_list:
tag = ''
judge = TextBlob(comment)
sentiments_score = judge.sentiment.polarity
score_list.append(sentiments_score)
if sentiments_score < 0:
tag = '消極'
elif sentiments_score == 0:
tag = '中性'
else:
tag = '積極'
tag_list.append(tag)
df['情感得分'] = score_list
df['分析結(jié)果'] = tag_list
df.to_excel('情感分析結(jié)果.xlsx', index=None)
查看一下情感分析結(jié)果:
df.groupby(by=['分析結(jié)果']).count()['text'] # 分組統(tǒng)計(jì)情感分析結(jié)果
結(jié)果顯示链快,中性和積極詞匯占據(jù)一半以上誉己,也就是說,大部分網(wǎng)友還是喜歡李子柒的視頻的域蜗。
最后是詞云圖繪制的代碼:
# 繪制詞云圖
stopwords = ['the', 'a', 'and', 'of', 'it', 'her', 'she', 'if', 'I', 'is', 'not', 'your', 'there', 'this',
'that', 'to', 'you', 'in', 'as', 'for', 'are', 'so', 'was', 'but', 'with', 'they', 'have'] # 停用詞
coloring = np.array(Image.open("lzq3.jpeg"))
backgroud_Image = coloring # 讀取背景圖片
wc = WordCloud(
scale=3, # 圖片大小,清晰度
background_color="white", # 背景顏色
max_words=1000, # 詞數(shù)量
font_path='/System/Library/Fonts/SimHei.ttf', # Mac字體文件路徑巨双,根據(jù)實(shí)際情況替換
# font_path="C:\Windows\Fonts\simhei.ttf", # Win字體文件路徑,根據(jù)實(shí)際情況替換
stopwords=stopwords, # 停用詞
mask=backgroud_Image, # 背景圖片
color_func=ImageColorGenerator(coloring), # 根據(jù)原始圖片顏色生成詞云圖顏色
max_font_size=100, # 設(shè)置字體最大值
random_state=240 # 設(shè)置有多少種隨機(jī)生成狀態(tài)霉祸,即有多少種配色方案
)
wc.generate(v_cmt_str) # 生成詞云圖
wc.to_file('詞云結(jié)果圖.png') # 保存圖片文件
display(Image.open('lzq3.jpeg')) # 顯示原始圖片
wc.to_image() # 顯示詞云圖
詞云圖最后的展示效果如下:
這里需要說明的是筑累,color_func=ImageColorGenerator(coloring)這句代碼,能夠根據(jù)原始圖片顏色生成詞云圖顏色丝蹭。細(xì)心的小伙伴應(yīng)該能看出來慢宗,詞云圖的顏色配比和原始圖片的顏色配比很接近了。
三奔穿、同步輸出
講解視頻:
https://www.bilibili.com/video/BV16F41187B4/
馬哥python說