引言:互联网时代,大数据分析已成为了一项极为有用且有意思的学科。用马云的话来说,通过大数据分析,“全中国胸罩最大的是哪个省?我都知道!” 那么,我们也来小试牛刀一下,通过数据分析看一看,游戏开发商最喜欢给游戏取什么名字。
通过分析Steam游戏库中的全部游戏名称,尝试罗列出出现频率较高的词汇。
一开始,我便将数据采集范围锁定在了Steam游戏库之上。事实上,对于本文要研究的问题, Steam也许并不是一个非常理想的数据库。相比起VGchartz等包含全平台和全年代的游戏数据的网站来说,Steam的游戏库容量有些太小了,但是Steam作为一个现象级平台,有很多除了标题以外其他有意思的数据可供挖掘。而且其数据量较小,分析起来也比较节省时间。
另外,为了方便分析,本次统计过滤了Steam App库中所有DLC、软件和视频等。一开始我并没有过滤这些内容,但发现结果偏差太大,并不合理。例如Steam的视频栏目下有很多动画和剧集,一放就是好几季(死神和行尸走肉啥的,国区貌似没有),导致了这些剧集的标题单词高频出现,影响统计可靠度。至于DLC,其标题也会重复出现其游戏本体名称,影响结果。
分析程序基于Java语言,主要分为数据获取以及文本处理两大模块。程序引用了GSON与Jsoup两套API,分别用来解析Json以及HTML文本。
Steam对爬虫是比较友好的,但是本弱鸡一直没有解决锁区和年龄限制的问题,导致大量数据遗漏。被迫无奈,我只能曲线救国,在获取了Steam全部APP的ID之后,改到SteamDB之上运行爬虫程序。
SteamDB有着相对比较严格的防机器人手段。在添加了Header伪装成浏览器访问之后,我又在每次访问之间加了个1.5s-2.0s的随机间隔时间,防止被Ban。即便如此,一开始我仍被Ban了一次,原因是原程序中有一个访问失败则休眠20s之后尝试再次访问该网页的功能,导致受限后继续频繁访问,最终被ban。在换了个新IP之后,我把这个功能删除了,访问失败之后手动关闭程序再开即可(有中断记录),最终成功获取了所有数据。
在本程序中,我仅仅用了最简单且传统的单词分割方法作为统计标准。因为库中大多数游戏还是以英文名为主,所以对于每一个游戏名,首先将其中所有非A-Za-z的字符替换为空格,接着将改标题转化为小写,最后根据空格分割成单词。
当然,为了使统计更有意义,我添加了停用词列表(Stop Words),除了一般的“a,the, of, with”等介词冠词,我也在这个列表中加入了不少针对游戏的特殊高频词语,例如“edition, HD, remastered, episode”等等。
最后,我们就可以非常开心的把剩下的所有单词扔进HashMap中推算每一个单词的出现频率了。
闲话少说,咱们书归正传(这就说的不少了)。不过,在谜底揭晓前,大家不妨先猜一猜,哪些词最受开发商的青睐?
“War! War never changes.”
“战争”名至实归的拿到了本次分析中的冠军席位。在还没有电子游戏的时代,“战争”就已经是最古老的桌面游戏甚至是真实博弈的题材之一。大到军事模拟沙盘,小到各类棋牌,无一不是对战争的模拟重现。在电子游戏问世之后,游戏制作者也尝试将“战争”这一永恒的题材带给玩家。无论是射击游戏,经营游戏,即时战略还是角色扮演,也不管是奇幻,历史,科幻,写实,都可以在“战争”这一框架下编织出精巧的玩法与剧情。所以,War斩获今天统计的榜首,真是不足为奇了。
事实上,我对“太空”出现在榜单的第二名是有些吃惊的。我相信这个结果带有了一些steam平台本身的气质。从坎巴拉太空计划(Kerbal Space Program),到太空工程师(Space Engineers),乃至无尽太空(Endless Space),都带着浓浓的Steam风格。对于这些游戏的制作人(很大一部分是独立游戏的开发者)来说,“太空”大概是他们最爱的题材之一。与第一名的真实感与厚重感不同,“太空”题材带有浓重的幻想精神与浪漫主义情怀。无论是太空歌剧,宇宙战争,还是太空飞船模拟,都可以在玩家群体中找到属于它们的一片天地。
中文里,“世界”一词来源于佛经,追溯其源头乃出于佛教,“世”为时间,“界”为空间,涵盖了时间空间不可分隔的道理。
事实上,每一个游戏都有他们独特而富有魅力的世界,我们通常称其为“世界观”。对于一些以世界观为卖点的游戏,开发商自然而然地将游戏名取成《XXX World》亦或是《The world of XXX》,更别说还有一些游戏名为了标榜自己规模庞大,特意在前面加上“World”的限定语了。超级马里奥世界,魔兽世界,坦克世界,战舰世界。哇!真是拿脚趾头就能想出很多很多。该说是开发商起名偷懒呢,还是说“世界”这个词实在太好用了呢?:-D
篇幅关系,这里就着重分析一下我们的前三甲。而下面则是这次统计中排名前一百的单词条目。跟你们的预测是否一致呢?
1. war:224
2. space:201
3. world:194
4. dark:153
5. heroes:140
6. super:137
7. battle:128
8. quest:127
9. lost:120
10. adventure:118
11. dead:118
12. star:110
13. wars:102
14. last:98
15. one:98
16. time:96
17. manager:91
18. island:88
19. escape:85
20. city:84
21. zombie:84
22. gold:83
23. life:83
24. dungeon:82
25. adventures:79
26. tales:77
27. red:75
28. black:74
29. magic:73
30. night:73
31. arena:72
32. hero:72
33. dragon:69
34. project:68
35. age:67
36. final:66
37. defense:66
38. death:65
39. legends:63
40. sky:62
41. call:62
42. planet:61
43. blood:61
44. tower:60
45. mystery:59
46. light:59
47. ultimate:59
48. racing:58
49. earth:57
50. shadow:57
51. journey:56
52. king:56
53. rise:56
54. story:55
55. day:54
56. puzzle:54
57. hunter:54
58. chronicles:54
59. die:53
60. legend:53
61. tycoon:53
62. fantasy:53
63. you:53
64. evil:52
65. pixel:52
66. kingdom:52
67. football:51
68. secret:49
69. man:49
70. tale:49
71. legacy:49
72. beyond:49
73. vs:48
74. force:48
75. your:48
76. empire:48
77. love:46
78. dream:45
79. dawn:45
80. storm:45
81. strike:44
82. warfare:44
83. run:44
84. fall:44
85. home:44
86. rogue:44
87. zero:44
88. up:43
89. rising:43
90. sam:43
91. no:42
92. master:42
93. darkness:42
94. survival:42
95. tactics:42
96. bit:42
97. order:41
98. classic:41
99. max:41
100. saga:41
把前五名融合到一个游戏名称里大概就是《黑暗太空世界:战争英雄》(World of Dark Space: War Heroes),简直是一个有着强烈既视感的大俗套名字。。。
首先做自我检讨:不论是“语言分析”还是“信息检索”,我都不是专家。这篇文章也仅仅是一个兴趣使然的自我学习过程。如果有走过路过的大神,请原谅我的班门弄斧,多提宝贵意见。这次统计当然也有一些可以改进的地方:
1.在数据获取阶段,理想的目标对象应该是IP而非游戏本身。对于一个游戏系列,其续作出的越多,名字在库中出现频率也越高。对于我们想要研究的问题,这样的统计其实是不太合理的。但是另一方面,系列作品得多少从某种角度也代表了这个游戏的受欢迎程度,再加从Steam库中合并游戏系列确实有些困难,故本次统计分析仍然是针对游戏个体而非系列进行的。
2.在这次统计直接排除了所有DLC,这一做法其实也有待商榷,毕竟很多DLC都有自己独立的名称。这个问题其实可以通过从DLC标题中除去本体游戏名称的方式解决,但是由于我在处理阶段没有建立DLC与其本体的关系,这个功能最终没有实施。
3.我们知道很多游戏名称都是生造词,而在本次分析中,我没有对每一个单词的内部构造进行解析。比如最近的新游戏Hellblade就是由Hell与Blade两词拼接而成。同样,我也没有对单词的不同变形进行统一,比如同一名词的单复数以及动词的不同时态没有合并。虽然对于我们人类来说这种组合或者变形非常明显,但是让程序完全掌握这种规律则需要比较复杂的算法,故在本次分析中也不再做进一步研究。
评论区
共 43 条评论热门最新