查看原文
其他

《都挺好》弹幕比剧还精彩?394452条弹幕告诉你答案

数据不吹牛 51CTO技术栈 2019-04-04

最近《都挺好》真的挺火。火到什么程度?微博热搜霸榜,办公室评弹声四起,大强轻松攻占表情包,甚至连 N 年不追剧的“瘦宅”们也开始沉迷其中,大呼真香。


剧很精彩,但追剧界有句俗话说得好:“弹幕往往比剧更精彩”,为了让精彩延续下去,我终究没能忍住对(腾讯视频)弹幕下手。

图源微博画手@马里奥小黄


经过一番折腾,发现弹幕是 JSON 格式动态加载的,而且加载得非常有规律,30 秒一发(80-100 条),多出的会隐藏。


共计爬取了 394452 条弹幕(雨露均沾,每集平均 8575 条,每 30s 的间隔爬取),来挖一挖弹幕这个宝藏。

弹幕基本盘概览


爬到的源数据是酱紫的:

发现有部分用户名是缺失的,由于这部分用户占比很小(仅 0.61%),所以我们直接暴力除去这部分噪声。

清洗之后,还剩下 117484 个用户发送的 392051 条弹幕,人均发送弹幕量 3.34 条。


再看看每个人发送弹幕数是怎么样分布的:

显而易见,大部分用户还是比较佛系的,71607 位用户(占比 60.95%)在 46 集中只发送过 1 条弹幕,他们内心严格遵循“爱就一个字,我只发一次”的弹幕发送准则。


发送条数在 3 条及以内的用户数占比达到了 83.73%,他们累计贡献了 133331 条弹幕,占到弹幕总数的 34.01%,反过来看,剩下 16.27% 的用户贡献了弹幕量的 65.99%。


从这个角度来看,二八法则在这里更像是二七法则(20% 的用户贡献了 70% 的内容)。


是谁在疯狂发射弹幕,而弹幕又爱上了谁


弹幕发送量 TOP10 榜单


我们都知道明成是“行走的造粪机”,那么从弹幕的角度来看,谁是“行走的弹幕发射机”呢?


为此,我们筛选出累计发送弹幕 Top10 的用户,微微一操作(爬取、清洗和分析都使用 Python):

danmu_counts = df.groupby('用户名')['评论id'].count().sort_values(ascending= False).reset_index()
danmu_counts.columns = ['用户名','累计发送弹幕数']
danmu_counts.head(10)


上一步我们知道平均每个人在整部剧会发送 3.34 条弹幕,而弹幕发送排行榜前十的旁友们发送量都是过千级别的,我们再加上这个用户弹幕发送涉及到的集数,进一步看看平均每集发送弹幕数。


为了更直观一些,可视化之:

一位名叫“@L”的用户独占鳌头,是毋庸置疑的 C 位输出。在 46 集的电视剧中,他的弹幕血洗了 32 集,累计发射 2773 条弹幕,平均每集发送 86.66 条。


什么概念呢?一集电视剧时长约 42 分钟,也就是说,这位大佬在看剧的同时,仍能保持每分钟 2.06 条的发送频次,还坚持了 32 集。


到这里大家一定会有质疑,觉得他肯定是刷了大量的“666”、“来了”之类毫无意义的内容来霸榜,所以我把他的输出内容筛了出来并做成词云图:

这……这位大佬输出的内容,不仅紧贴剧情,更是文风多变,时而总结内容,时而嬉笑怒骂,时而感慨人生,时而出口成诗,毫不夸张的说比一般弹幕都要有内涵。


我的膝盖,开始不听使唤了......唯有疾呼“高山(频)仰止,景行行止”。


谁的弹幕最受青睐(点赞数)


根据每个用户累计点赞量排序,Get 到弹幕点赞 TOP10 排行榜:

第一名“追剧小奶鹅”平均每集发 6 条弹幕,每条弹幕竟然能够得到 4585 个赞!难道这就是传说中的精神领袖吗?难道大佬之外还有大佬吗?


在看剧的时候经常能够被他的弹幕刷屏,而且他的弹幕比其他人停留时间更长,颜色更艳丽。经核实,发现第一名,原来是“嫡系”:


腾讯视频电视剧弹幕专业陪聊,怪不得这么高的赞。而第二名,又是我们的大佬“@L”,他凭借高频、稳定、持续输出累计获得 21.69 万赞,平均每条弹幕获赞 78.22 个。大佬,请收下我的膝盖!


高赞弹幕有何套路


①嫡系部队


我们单独把腾讯的嫡系部队“追剧小奶鹅”拎出来,是因为他几乎垄断了高赞弹幕 TOP300。


嫡系光环加持,赞或许有虚高的嫌疑,但不妨碍我们单独分析他内容的套路(其实不少小奶鹅的弹幕并没有其他的精彩,但毕竟是亲儿子):

暴力总结起来就一句话:对仗工整提大强,感天动地夸明玉。


②非嫡系部队


高赞的(非嫡系)朋友们深得演唱会那句带节奏名言“现场的朋友们,举起你们的双手,让我看到你们的热情”的真传。


“觉得 XX 说得对点下谢谢”、“给 XX 点赞!”套路是获赞的一大法宝,另一法宝就是推动剧情的内容总结了。


弹幕视角主人公情感分析


谁是苏家最受弹幕关注的人儿


要分析谁是苏家最受弹幕关注的人,必须先根据关键词去甄别和定位到剧中角色。

这里列出了关于苏家人的简单词库,用来识别弹幕在议论谁。

54.31% 的弹幕没有主观倾向性,没有提及具体的苏家人(可能提及了剧中其他人,这里暂不考虑)。


明玉竟然抢过了大强的宝座,以 19.91% 的弹幕提及率拔得头筹,而大强则以 16.16% 的关注度紧随其后。


Emmm,无论是剧外热度还是追剧时弹幕槽点,我都觉得大强应该才是最受关注的啊!


作为一个严谨的追剧人,我开始排查弹幕,发现了很多戏精在发弹幕时都玩起了角色扮演,他们在发弹幕时,总是先在开头署名“苏明玉:” or 其他剧中角色,仿佛在代他们发声。


清洗完这部分调皮的用户之后,排名出现了新的变化:

果然,其他除外,大强以 15.16% 的关注占比领先其他家人一个身位,明玉又把两个哥哥拉开了一个身位的距离,占比 8.82%,明成和明哲关注占比分别是 4.84% 和 4.28%。


PS:明成关注度之所以低,是因为很多弹幕骂人并不会指名道姓:),而明哲嘛,对这个排名表示很失望。


弹幕情感分析


看剧(弹幕)时能够明显感觉到观众对于明成的态度从最开始的“过街老鼠,人人喊打”到后来的“明成懂事了”。

从数据分析的角度讲,明成是否成功洗白?大强最后催泪演绎效果如何?


这里我们调用百度情感分析 API,对每一条评价的内容进行情感打分,用情感分值来验证上述问题(分值在 0-1 之间,越靠近 0 负面倾向越强,越接近 1 则情感越情面)。


调用方法很简单:

#先安装aip包
from aip import AipNlp
#到后台配置权限,获得相关ID和KEY,目前API是免费且不限量的
app_id = '输入实际ID'
api_key = '输入实际KEY'
secret_key = '输入实际SECRET_KEY'
client = AipNlp(app_id,api_key,secret_key)

#定义函数,以便循环爬取
def senti_analy(text):
data = client.sentimentClassify(text)
sentiment = data['items'][0]['positive_prob']
return sentiment

for text in df['内容']:
try:
sentiments.append(senti_analy(text))
except:
#print(text)
sentiments.append('pass')

df['情感分值'] = sentiments


打分筛选过后,我们统计出每一集苏家每个人的平均情感分值,并绘制出曲线图(4 个人导致折线图可读性较差,所以只有委屈大哥了):

①大强开局不错,和明玉持平,但凭借倪老师“作死小能手”的实力诠释,让情感分值迅速走低,11 集的低点正式印证了大强的“癫疯之作”,之后分值在 0.38 左右徘徊。


随着“蔡根花宝贝”梗的出现,“嘲讽”替代了指责,让分值略微上浮(情感打分对于高级黑式嘲讽难以准确判断)。

最后老年痴呆发病后大强对明玉的爱让分值一举超过 0.5,达到历史峰值,成功上岸。


②明玉是原生家庭的受害者,也是一个靠自己成功的女强人,前期爱恨分明,情感分值一度飙到 0.59(超过其他所有角色)。


18 集开始的买房纷争,网友纷纷表示强烈同情(例:明玉不能像十年前一样别理他们吗?情感分值只有 0.041),这让明玉相关的情感分值严重走低,随后弹幕主旋律仍以叫好和同情为主。


③明成的情感分值走势更有意思,开局最低,靠欺负妹妹让分值迅速降低,可谓“人人喊打”,后面则分值飙升,一度追上明玉,主要是因为明成期望值已经极低,但是他宠老婆的行为得到观众认可。


中期本色挨骂,降至低谷。27 集明成情感分值再次超过 0.5,竟然是因为明成想吓走大强进行的一系列骚操作(尤其是广场舞)。


再后来就是明成幡然悔悟,走上正轨,分值在稳定在 0.45 左右,也算成功洗白。


看来,开局降期望,中期随便作,后期催泪逆风翻盘,终究还是会被观众接受。


作者:周志鹏

编辑:陶家龙、孙淑娟

出处:转载自微信公众号:数据不吹牛

精彩文章推荐:

最强反击!程序员注册996.ICU域名炮轰“996”工作制

一文搞定Redis高级特性与性能调优

弥补MySQL和Redis短板:看HBase怎么确保高可用

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存