為了知道Steam上的遊戲製作人最喜歡哪些詞兒,我分析了17000個遊戲的名字
本文首發於機核網,作者Neo小魚_V
引言:互聯網時代,大數據分析已成為了一項極為有用且有意思的學科。用馬雲的話來說,通過大數據分析,「全中國胸罩最大的是哪個省?我都知道!」 那麼,我們也來小試牛刀一下,通過數據分析看一看,遊戲開發商最喜歡給遊戲取什麼名字。
目標
通過分析Steam遊戲庫中的全部遊戲名稱,嘗試羅列出出現頻率較高的辭彙。
範圍
一開始,我便將數據採集範圍鎖定在了Steam遊戲庫之上。事實上,對於本文要研究的問題, Steam也許並不是一個非常理想的資料庫。相比起VGchartz等包含全平台和全年代的遊戲數據的網站來說,Steam的遊戲庫容量有些太小了,但是Steam作為一個現象級平台,有很多除了標題以外其他有意思的數據可供挖掘。而且其數據量較小,分析起來也比較節省時間。
兩者差了一個數量級
另外,為了方便分析,本次統計過濾了Steam App庫中所有DLC、軟體和視頻等。一開始我並沒有過濾這些內容,但發現結果偏差太大,並不合理。例如Steam的視頻欄目下有很多動畫和劇集,一放就是好幾季(死神和行屍走肉啥的,國區貌似沒有),導致了這些劇集的標題單詞高頻出現,影響統計可靠度。至於DLC,其標題也會重複出現其遊戲本體名稱,影響結果。
工具/實現
分析程序基於Java語言,主要分為數據獲取以及文本處理兩大模塊。程序引用了GSON與Jsoup兩套API,分別用來解析Json以及HTML文本。
JAVA項目結構
(對以下具體實現部分不感興趣的同學請直接略過)
數據獲取
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中推算每一個單詞的出現頻率了。
停用詞表(其中有一些是針對DLC的。另外排除了大家喜聞樂見的Simulator)
統計結果
閑話少說,咱們書歸正傳(這就說的不少了)。不過,在謎底揭曉前,大家不妨先猜一猜,哪些詞最受開發商的青睞?
第一名:War
「War! War never changes.」
「戰爭」名至實歸的拿到了本次分析中的冠軍席位。在還沒有電子遊戲的時代,「戰爭」就已經是最古老的桌面遊戲甚至是真實博弈的題材之一。大到軍事模擬沙盤,小到各類棋牌,無一不是對戰爭的模擬重現。在電子遊戲問世之後,遊戲製作者也嘗試將「戰爭」這一永恆的題材帶給玩家。無論是射擊遊戲,經營遊戲,即時戰略還是角色扮演,也不管是奇幻,歷史,科幻,寫實,都可以在「戰爭」這一框架下編織出精巧的玩法與劇情。所以,War斬獲今天統計的榜首,真是不足為奇了。
也有遊戲表現的是對戰爭的反思
第二名:Space
「人類的征途是星辰大海!」
事實上,我對「太空」出現在榜單的第二名是有些吃驚的。我相信這個結果帶有了一些steam平台本身的氣質。從坎巴拉太空計劃(Kerbal Space Program),到太空工程師(Space Engineers),乃至無盡太空(Endless Space),都帶著濃濃的Steam風格。對於這些遊戲的製作人(很大一部分是獨立遊戲的開發者)來說,「太空」大概是他們最愛的題材之一。與第一名的真實感與厚重感不同,「太空」題材帶有濃重的幻想精神與浪漫主義情懷。無論是太空歌劇,宇宙戰爭,還是太空飛船模擬,都可以在玩家群體中找到屬於它們的一片天地。
坎巴拉太空計劃
第三名:World
「一花一世界,一葉一菩提。」
中文裡,「世界」一詞來源於佛經,追溯其源頭乃出於佛教,「世」為時間,「界」為空間,涵蓋了時間空間不可分隔的道理。
事實上,每一個遊戲都有他們獨特而富有魅力的世界,我們通常稱其為「世界觀」。對於一些以世界觀為賣點的遊戲,開發商自然而然地將遊戲名取成《XXX World》亦或是《The world of XXX》,更別說還有一些遊戲名為了標榜自己規模龐大,特意在前面加上「World」的限定語了。超級馬里奧世界,魔獸世界,坦克世界,戰艦世界。哇!真是拿腳趾頭就能想出很多很多。該說是開發商起名偷懶呢,還是說「世界」這個詞實在太好用了呢?:-D
魔獸世界的世界(雖然不是steam遊戲,但很具代表性)
Steam遊戲名常用辭彙前一百
篇幅關係,這裡就著重分析一下我們的前三甲。而結合這次統計中排名前一百的單詞條目,把前五名融合到一個遊戲名稱里大概就是《黑暗太空世界:戰爭英雄》(World of Dark Space: War Heroes),簡直是一個有著強烈既視感的大俗套名字……
改進建議
首先做自我檢討:不論是「語言分析」還是「信息檢索」,我都不是專家。這篇文章也僅僅是一個興趣使然的自我學習過程。如果有走過路過的大神,請原諒我的班門弄斧,多提寶貴意見。這次統計當然也有一些可以改進的地方:
1.在數據獲取階段,理想的目標對象應該是IP而非遊戲本身。對於一個遊戲系列,其續作出的越多,名字在庫中出現頻率也越高。對於我們想要研究的問題,這樣的統計其實是不太合理的。但是另一方面,系列作品得多少從某種角度也代表了這個遊戲的受歡迎程度,再加從Steam庫中合併遊戲系列確實有些困難,故本次統計分析仍然是針對遊戲個體而非系列進行的。
2.在這次統計直接排除了所有DLC,這一做法其實也有待商榷,畢竟很多DLC都有自己獨立的名稱。這個問題其實可以通過從DLC標題中除去本體遊戲名稱的方式解決,但是由於我在處理階段沒有建立DLC與其本體的關係,這個功能最終沒有實施。
3.我們知道很多遊戲名稱都是生造詞,而在本次分析中,我沒有對每一個單詞的內部構造進行解析。比如最近的新遊戲Hellblade就是由Hell與Blade兩詞拼接而成。同樣,我也沒有對單詞的不同變形進行統一,比如同一名詞的單複數以及動詞的不同時態沒有合併。雖然對於我們人類來說這種組合或者變形非常明顯,但是讓程序完全掌握這種規律則需要比較複雜的演算法,故在本次分析中也不再做進一步研究。
註:數據截止於2017.08.23
原文:Steam遊戲名稱分析:開發商最喜歡給遊戲取什麼名字?
From 機核 | 知識挖掘機
歡迎關注知乎專欄:機核丨電子遊戲救世界 機核丨不止是遊戲
更多內容請訪問www.g-cores.com,玩遊戲的,都是朋友
推薦閱讀:
※論如何用Python科學的(Randomly)取名
※如何給大學起校名
※名人是如何給子女取名的?
※「化用老祖宗」如何從詩詞歌賦中鍊字取名?
※給後代子孫取名,這四個字千萬不要用!