Python分析《演員請(qǐng)就位2》豆瓣評(píng)論,我找到了它頻頻上熱搜的原因
回復(fù)“書(shū)籍”即可獲贈(zèng)Python從入門(mén)到進(jìn)階共10本電子書(shū)
前言
最近有部綜藝——《演員請(qǐng)就位》第二季,三天兩頭一個(gè)熱搜,真是無(wú)比熱鬧,因?yàn)槟蔷洹肮疵鲗?dǎo)演你看我的演技能值一個(gè)S卡”的調(diào)侃,我也入了這檔綜藝的坑,你別說(shuō)這綜藝槽點(diǎn)還挺多,特別是五位導(dǎo)師,他們的戲比演員的精彩多了。
《演員請(qǐng)就位》目前為止已經(jīng)播出了兩季,第一季在豆瓣為6.8分,共有4萬(wàn)余人評(píng)分,第二季目前評(píng)分低于第一季,評(píng)分僅6.2分。
本文通過(guò)爬取《演員請(qǐng)就位》第二季豆瓣短評(píng)(好評(píng)、中評(píng)和差評(píng)皆有抽樣),進(jìn)行可視化分析和情感分析,完整代碼后臺(tái)回復(fù)「演員請(qǐng)就位」即可免費(fèi)獲取。
可視化分析
導(dǎo)演比演員討論的更多
通過(guò)對(duì)所有評(píng)論進(jìn)行詞云圖繪制,我們發(fā)現(xiàn)導(dǎo)演提及次數(shù)超過(guò)演員,這不是演員養(yǎng)成類(lèi)綜藝嗎?導(dǎo)演的料居然比演員還多。另外,我們還可以看出大家對(duì)這部綜藝褒貶不一,「演技」、「喜歡」等好評(píng)詞占據(jù)一定比例,同時(shí)給出「惡心」、「垃圾」等差評(píng)詞的觀眾也不乏少數(shù)。
差評(píng)占比超半數(shù)
從評(píng)論分類(lèi)來(lái)看,差評(píng)占比55%,中評(píng)占比21%,好評(píng)占比24%。更多的觀眾對(duì)《演員2》不敏感,主要源自看過(guò)《演員1》所帶來(lái)的高期待與現(xiàn)實(shí)的落差較大,另外,郭敬明對(duì)何昶希發(fā)S卡的行為也招致了不少罵名。
大多數(shù)觀眾在半夜發(fā)評(píng)論
從評(píng)論時(shí)間分布來(lái)看,晚上10點(diǎn)至12點(diǎn)評(píng)論人數(shù)占比高達(dá)27.89%。
好評(píng)難以獲贊
5星好評(píng)僅獲得觀眾828個(gè)贊,反而1星差評(píng)獲得了3776個(gè)點(diǎn)贊。
郭敬明被提及次數(shù)最多
從觀眾詞云中提取《演員請(qǐng)就位2》的主要人物,我們發(fā)現(xiàn)郭敬明被觀眾提及次數(shù)最多,達(dá)319次。另外,李誠(chéng)儒由于其犀利的點(diǎn)評(píng)廣受觀眾的熱議,金句「味同嚼蠟,味如雞肋,如此乏味」一度刷爆網(wǎng)絡(luò),提及次數(shù)甚至高于趙薇導(dǎo)演。
情感分值0.4左右,且凌晨達(dá)到峰值
不久之前,百度正式發(fā)布情感預(yù)訓(xùn)練模型 SKEP (Sentiment Knowledge Enhanced Pre-training for Sentiment Analysis)。通過(guò)利用情感知識(shí)增強(qiáng)預(yù)訓(xùn)練模型,SKEP 在 14 項(xiàng)中英情感分析典型任務(wù)上全面超越 SOTA。本次運(yùn)用該模型對(duì)所有《演員請(qǐng)就位2》評(píng)論進(jìn)行打分,我們發(fā)現(xiàn)一天內(nèi)觀眾情感分值在0.4分上下波動(dòng),僅在凌晨5點(diǎn)左右達(dá)到一個(gè)較高的積極傾向。
技術(shù)實(shí)現(xiàn)
數(shù)據(jù)獲取
以下給出核心代碼:
def get_page_info(start_num,type):
url="https://movie.douban.com/subject/"+ movie_id +"/comments?percent_type="+type+"&start="+str(start_num)+"&limit=20&status=P&sort=new_score&comments_only=1&ck=myI8"
print(url)
header = {
"Accept":"application/json, text/plain, */*",
"Accept-Language":"zh-CN,zh;q=0.9",
"Connection":"keep-alive",
"Host":"movie.douban.com",
"User-Agent":'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36',
"Cookie":'ll="118217"; bid=RljS46FQccw; __yadk_uid=GlresR4DtEXMJYz7UEJiEiW1jZGdHxV1; __gads=ID=4369b0a5596d1a14:T=1582470136:S=ALNI_MYu_5GhYfBddurehU-ZyUkLIHkXmw; viewed="34838905"; _vwo_uuid_v2=D57B8780A6D0B07688BCF1679FC9CC7CE|f58c953da6640ed67cf0c62ed4f1a076; douban-fav-remind=1; __utmv=30149280.21954; dbcl2="219542653:qAjjgVFgfE0"; ck=phh8; ap_v=0,6.0; push_noty_num=0; push_doumail_num=0; __utma=30149280.949109129.1582468791.1602402156.1605346877.20; __utmc=30149280; __utmz=30149280.1605346877.20.14.utmcsr=accounts.douban.com|utmccn=(referral)|utmcmd=referral|utmcct=/passport/setting; __utmb=30149280.2.10.1605346877; _pk_ref.100001.4cf6=%5B%22%22%2C%22%22%2C1605346877%2C%22https%3A%2F%2Fwww.douban.com%2F%22%5D; _pk_ses.100001.4cf6=*; __utma=223695111.777887215.1582468791.1602402156.1605346877.16; __utmb=223695111.0.10.1605346877; __utmc=223695111; __utmz=223695111.1605346877.16.11.utmcsr=douban.com|utmccn=(referral)|utmcmd=referral|utmcct=/; _pk_id.100001.4cf6=fff8ec9a5e905564.1582468791.16.1605347953.1602402156.'
}
response=requests.get(url,headers=header)
req_parser = BeautifulSoup(response.content.decode('unicode_escape'),features="html.parser")
comments = req_parser.find_all('div',class_="comment-item")
if __name__ =="__main__":
movie_id = input("請(qǐng)輸入電影id:")
comments_list=[]
times=25
n=1
types=['h','m','l']
for i in range(times):
print(i)
start_num=i*20
for j in range(3):
comments = get_page_info(start_num,type=types[j])
數(shù)據(jù)清洗
導(dǎo)入數(shù)據(jù)
import pandas as pd
df = pd.read_csv("/菜J學(xué)Python/豆瓣/35163988.csv")
df = df[['user_name','comment_voted','comment_voted','movie_star','comment_time','comment']]
df.head(10)

字段類(lèi)型轉(zhuǎn)換
df['comment_time'] = pd.to_datetime(df['comment_time'])
df["comment"] = df["comment"].astype('str')
機(jī)械壓縮去重
#定義機(jī)械壓縮函數(shù)
def yasuo(st):
for i in range(1,int(len(st)/2)+1):
for j in range(len(st)):
if st[j:j+i] == st[j+i:j+2*i]:
k = j + i
while st[k:k+i] == st[k+i:k+2*i] and k k = k + i
st = st[:j] + st[k:]
return st
yasuo(st="菜J學(xué)Python真的真的真的很菜很菜")
#應(yīng)用壓縮函數(shù)
df["comment"] = df["comment"].apply(yasuo)
情感分析
#pip3 install paddlepaddle -i https://mirror.baidu.com/pypi/simple
import paddlehub as hub
#這里使用了百度開(kāi)源的成熟NLP模型來(lái)預(yù)測(cè)情感傾向
senta = hub.Module(name="senta_bilstm")
texts = df['comment'].tolist()
input_data = {'text':texts}
res = senta.sentiment_classify(data=input_data)
df['pos_p'] = [x['positive_probs'] for x in res]
數(shù)據(jù)可視化
df['comment'] = df['comment'].astype('str')
# 定義分詞函數(shù)
def get_cut_words(content_series):
# 讀入停用詞表
stop_words = []
with open("./stop_words.txt", 'r', encoding='utf-8') as f:
lines = f.readlines()
for line in lines:
stop_words.append(line.strip())
# 添加關(guān)鍵詞
my_words = ['', '']
for i in my_words:
jieba.add_word(i)
# 自定義停用詞
my_stop_words = ['節(jié)目', '中國(guó)','一部']
stop_words.extend(my_stop_words)
# 分詞
word_num = jieba.lcut(content_series.str.cat(sep='。'), cut_all=False)
# 條件篩選
word_num_selected = [i for i in word_num if i not in stop_words and len(i)>=2]
return word_num_selected
# 繪制詞云圖
text1 = get_cut_words(content_series=df['comment'])
stylecloud.gen_stylecloud(text=' '.join(text1), max_words=200,
collocations=False,
font_path='字酷堂清楷體.ttf',
icon_name='fas fa-video',
size=653,
#palette='matplotlib.Inferno_9',
output_name='./演員2詞云圖.png')
Image(filename='./演員2詞云圖.png')聲明
本數(shù)據(jù)分析只做學(xué)習(xí)研究之用途,提供的結(jié)論僅供參考;
作者對(duì)影視行業(yè)了解有限,相關(guān)描述可能存在不當(dāng)之處,請(qǐng)勿上綱上線(xiàn)。
-------------------?End?-------------------
往期精彩文章推薦:
手把手教你用Python網(wǎng)絡(luò)爬蟲(chóng)獲取壁紙圖片
手把手用Python教你如何發(fā)現(xiàn)隱藏wifi
手把手教你使用Python網(wǎng)絡(luò)爬蟲(chóng)獲取音效信息

歡迎大家點(diǎn)贊,留言,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持
想加入Python學(xué)習(xí)群請(qǐng)?jiān)诤笈_(tái)回復(fù)【入群】
萬(wàn)水千山總是情,點(diǎn)個(gè)【在看】行不行
/今日留言主題/
隨便說(shuō)一兩句吧~~
