Fork me on GitHub

【RNG vs SKT】弹幕的自然语言的初步分析

这是崔斯特的第二十一篇原创文章

前排 @皇族电子竞技俱乐部

==================================

S7中RNG对阵SKT,想必是全世界LOL玩家关注的重点。在比赛开始前,使用小葫芦把斗鱼S7直播间的弹幕都抓下来,想着做一小点分析,看看会得出什么结论。

因为数据量和分析深度等原因,以下内容仅供娱乐观赏

数据采集

使用小葫芦采集2万多条弹幕数据,RNG对阵SKT斗鱼直播间的弹幕,最后得到约4万可用数据

中文分词

使用jieba分词,算法如下

  • 基于前缀词典实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图 (DAG)
  • 采用了动态规划查找最大概率路径, 找出基于词频的最大切分组合
  • 对于未登录词,采用了基于汉字成词能力的 HMM 模型,使用了 Viterbi 算法

简单处理之后,看起来是这样

顺便做个统计,看看都在说什么。不加停用词是这样的,全是 “666

RNG和牛逼是出现最多的词语,同时也发现“卢本伟牛逼

弱弱问一句“唐梦琼”是谁

下面是词云,Python的词云做不来不好看,所以我使用的工具 HTML5 Word Cloud

弹幕内容词云

用户昵称词云

情感分析

这里使用的是 isnowfy/snownlp。SnowNLP是一个python写的类库,可以方便的处理中文文本内容,是受到了TextBlob的启发而写的。

1
2
3
4
from snownlp import SnowNLP
s = SnowNLP(u'这个东西真心很赞')
s.sentiments # 0.9769663402895832 positive的概率

有点难看,直接看数据吧,得到的结果是在 [0,1] 之间的positive的概率

51659中有44705个大于0.5,占比86.54%,有 6954条弹幕低于0.5,占比13.46%。

弹幕中积极的概率还是相当高的,说明观众还是比较赞赏比赛的。

特征提取

TF-IDF是信息检索领域非常重要的搜索词重要性度量;tf-idf是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。

词频TF(Term Frequency)

词w在文档d中出现次数count(w, d)和文档d中总词数size(d)的比值:

基于 TF-IDF 算法的关键词抽取:

  • RNG
  • rng
  • 贺电
  • 加油
  • 发来
  • 666
  • 6666
  • 66666
  • 恭喜
  • 66666666666666
  • 666666
  • 66666666666
  • 6666666
  • skt
  • 李哥
  • 66666666666666666666
  • SKT
  • 66666666
  • 666666666
  • 马甲

在没有加上停用词的前提下,可以看到效果并不理想

TextRank是在Google的PageRank算法启发下,针对文本里的句子设计的权重算法,目标是自动摘要。它利用投票的原理,让每一个单词给它的邻居(术语称窗口)投赞成票,票的权重取决于自己的票数。

基于 TextRank 算法的关键词抽取:

  • 发来
  • 贺电
  • 加油
  • 学院
  • 机器人
  • 大学
  • 职业
  • 船长
  • 技术
  • 小炮
  • 没有
  • 解说
  • 中国
  • 经济
  • 开始
  • 无敌
  • 香锅
  • 垃圾
  • 老鼠
  • 科技

特征选择

Word2vec是一个将单词表征成向量的形式,它可以把文本内容的处理简化为向量空间中的向量运算,计算出向量空间上的相似度,来表示文本语义上的相似度。

计算相似度:

首先是RNG:

  • rng 0.9893965721130371
  • 加油 0.9829007983207703
  • 必胜 0.9790929555892944
  • Rng 0.9743078947067261
  • 恭喜 0.9733642339706421
  • 中国队 0.9397183656692505
  • 关 0.9283092021942139
  • < 0.9278833866119385
  • 燕尾港 0.9222617149353027
  • B 0.9143030643463135

RNG加油

看看SKT:

  • skt 0.9911665320396423
  • 皇族 0.972029983997345
  • ^ 0.970970094203949
  • 稳住 0.9653508067131042
  • 干死 0.9643667340278625
  • 牛比 0.9629441499710083
  • 一起 0.9625348448753357
  • @ 0.9619969725608826
  • 鸟巢 0.9608791470527649
  • 冠军 0.9608250856399536

稳住,干死SKT?

贺电:

  • 学院 0.9811943769454956
  • 大学 0.980491042137146
  • 技术 0.9766334295272827
  • 职业 0.9691535234451294
  • 电子科技 0.9668481349945068
  • 发来 0.9619022607803345
  • 科技 0.9594647884368896
  • 山东 0.9568137526512146
  • 重庆 0.9440888166427612
  • 哈尔滨 0.939836859703064

山东XX学院发来贺电

加油:

  • 必胜 0.9876022934913635
  • RNG 0.9829007983207703
  • rng 0.960281252861023
  • Rng 0.9591789841651917
  • 恭喜 0.9551880359649658
  • 中国队 0.9436988830566406
  • 关 0.94183349609375
  • ! 0.921385645866394
  • ~ 0.9148629903793335
  • @ 0.9062787294387817

RNG加油,RNG必胜

小狗:

  • 吹 0.9970275163650513
  • 无敌 0.996719241142273
  • 神超 0.996111273765564
  • 后期 0.9959050416946411
  • 厉害 0.9957337975502014
  • 凶 0.9957261681556702
  • 强 0.9955072402954102
  • 一个 0.9954395890235901
  • 干 0.99541175365448
  • 起来 0.9952359199523926

狗吹?

李哥:

  • 还是 0.9825356602668762
  • 电话 0.9700809717178345
  • 承 0.9697628617286682
  • 心脏 0.9686012864112854
  • 陈文泽在 0.9681863188743591
  • 麻痹 0.9680625200271606
  • 响 0.9674116373062134
  • 以为 0.9664229154586792
  • 狗哥 0.9592204689979553
  • 不 0.9589840769767761

你李哥还是你李哥

MLXG:

  • 宣告 0.9958090782165527
  • mlxg 0.9953181147575378
  • 死亡 0.995277464389801
  • b 0.9949076771736145
  • 6666 0.9947425723075867
  • 丑 0.9943945407867432
  • 10 0.9943088293075562
  • 辣鸡 0.9940722584724426
  • 干死 0.9940391778945923
  • 锤 0.9939616918563843

香锅和死亡宣告有啥关系

小虎:

  • 笑笑 0.9971799850463867
  • 看到 0.9967395663261414
  • 解说 0.9961692690849304
  • 不是 0.9959656000137329
  • 中单 0.9951503872871399
  • 假 0.9950063824653625
  • 为什么 0.9944812655448914
  • 又 0.9942663908004761
  • 么 0.9938984513282776
  • 里奥 0.9937981367111206

小虎与加里奥(:

letme:

  • 难受 0.9964221715927124
  • 笑话 0.9959778785705566
  • 哦 0.9958946108818054
  • 世界 0.9958213567733765
  • 毒奶 0.9957934021949768
  • KPL 0.9957884550094604
  • 上单 0.9956253170967102
  • 瓜皮 0.9955945014953613
  • 快 0.9953423738479614
  • 打团 0.9953156113624573

真难受啊

To Do

  1. 可以使用朴素贝叶斯做分类模型
  2. 使用机器学习性能评估指标预测精确率和准确率
  3. 欢迎补充

可参考资料

  1. 中文分词基本算法介绍
  2. ICTCLAS 汉语词性标注集
  3. 文本分类技术
  4. 文本分类与SVM
  5. 基于贝叶斯算法的文本分类算法
  6. 基于libsvm的中文文本分类原型
  7. LDA-math-文本建模
  8. 情感分析资源
  9. 面向情感分析的特征抽取技术研究
  10. 斯坦福大学自然语言处理第七课-情感分析
  11. 深度学习、自然语言处理和表征方法
  12. Deep Learning in NLP (一)词向量和语言模型