哪個(gè)角色最常用“?”和“!”?邦邦日服現(xiàn)有活動劇情的爬取,及其詞頻分析?。ㄉ希?/h1>
? ? ? ??重要※2021/5/15更新
????????程序存在錯(cuò)誤,導(dǎo)致標(biāo)點(diǎn)符號“~”的統(tǒng)計(jì)數(shù)據(jù)存在錯(cuò)誤,已經(jīng)修正。
????????早一些看到這篇文章的同學(xué),會看到朝日六花說“喜歡(すき)”的頻率是最高的,其實(shí)并不是這樣。六花說“すき”的時(shí)候,大多數(shù)是在叫她的隊(duì)友佐藤益木(“ますきさん”)。去掉這種情況之后,你會發(fā)現(xiàn)六花并不是那么經(jīng)常地說“すき”。同理,六花說敬語的頻率,雖然經(jīng)修正后還是很高,但也是虛高的。這兩個(gè)問題也已經(jīng)修正。

寫在前面
????????邦邦中的誰說了最多的省略號(…)?對于熟悉BanG Dream!企劃的人,即使不做統(tǒng)計(jì),這也是一個(gè)容易達(dá)成共識的問題。

????????那么:
哪個(gè)角色最經(jīng)常用“?”和“!”?
最常說“好き(喜歡,Suki)”這個(gè)詞的是誰?(并不是香澄,香澄甚至沒進(jìn)前八)
各個(gè)角色平時(shí)會用第二人稱(比如,“你”)嗎?是用“貴方(あなた,Anata)”還是“君(きみ,Kimi)”?

? ? ? ? 為了解答以上問題,本文筆者利用Python和Bestdori,爬取了Bestdori上日服截至目前(2021/5/14)的所有活動劇情,并對其進(jìn)行了詞頻分析。
????????本文僅為簡單的活動劇情文本分析嘗試,意在拋磚引玉。希望有dalao能補(bǔ)充卡面劇情的爬取方法,以及更深入的文本分析(e.g.情感分析)。文末將附活動劇情原始腳本.txt文件和分角色的臺詞.txt文件的打包下載。

????????感謝Bestdori(網(wǎng)站https://bestdori.com)提供了活動劇情文本。
????????感謝UP主“鐵鏟胡桃”(uid=96269928)在以下專欄中提供的爬蟲代碼,本文用到的爬取代碼是在其基礎(chǔ)上稍加改動寫成。


目錄
一*、劇情文件的爬取,以及從劇情文件中得到各個(gè)角色的臺詞
二、統(tǒng)計(jì)方法
三、統(tǒng)計(jì)結(jié)果
代碼合集
.txt文件下載
參考資料

一*、劇情文件的爬取,以及從劇情文件中得到各個(gè)角色的臺詞
1.1????劇情文件的爬取
????? ? 利用Bestdori[1]的“故事瀏覽器”功能,可以看到所有的活動劇情腳本的存儲路徑與文件名有共同的格式:“scenario/eventstory/eventxxx_rip/Scenarioeventyyy-zz.asset(xxx、yyy、zz都是數(shù)字,其中xxx和yyy指代部分在xxx是1到9不完全一致,對應(yīng)yyy是01到09)”。利用這一點(diǎn),即可用Python實(shí)現(xiàn)劇情文件的爬取。具體實(shí)現(xiàn)思路請參考UP主“鐵鏟胡桃”(uid=96269928)的專欄[2],文章小卡片已經(jīng)附在前“寫在前面”部分。
????????再次感謝UP主“鐵鏟胡桃”的代碼支持和授權(quán),筆者在ta的代碼基礎(chǔ)上稍作修改,得到了爬取劇情文件的代碼。代碼請見文末“代碼合集”。

1.2????從劇情文件中得到各個(gè)角色的臺詞
? ? ? ? 拿到了原始腳本文件,然后使用記事本打開,會看到這樣一幕:

????????活動劇情腳本存儲的不只是角色臺詞,還有以代碼形式儲存的場景代號、角色站位、角色表情等內(nèi)容。但我們只想要得到各個(gè)角色各自的臺詞,怎么辦?好在所有臺詞部分有固定的格式,因此又可以使用Python程序處理,代碼請見文末“代碼合集”。


二、統(tǒng)計(jì)方法
????????統(tǒng)計(jì)范圍包括現(xiàn)有7個(gè)樂隊(duì)的所有人,其中奧澤美咲和米歇爾算2個(gè)人(很快會解釋為啥),并且加上了CiRCLE的麻里奈桑,共有7×5+2=37個(gè)統(tǒng)計(jì)對象。

????????我們在“一、”中步驟中得到了一些名如“サヨ.txt”“聖墮天使あこ姫.txt”的文件。讀過相應(yīng)劇情的讀者應(yīng)該知道,“サヨ”和“聖墮天使あこ姫”其實(shí)就是冰川紗夜和宇田川亞子(是她們玩NFO的時(shí)候取的ID),等等。我們要把這些“一人多馬甲”的情況分辨出來,?將事實(shí)上是同一人的文本匯總起來。
????????一些有幼年劇情的角色,她們在幼年劇情用的名字并不用漢字書寫(比如“友希那”),而是用平假名書寫(比如“ゆきな”),因此她們幼年時(shí)的臺詞文本也被單獨(dú)分離出來了。考慮到角色在幼年與青少年的性格差異,筆者沒有把幼年文本加入?yún)R總。
????????筆者把奧澤美咲和米歇爾的臺詞文本分開了,因?yàn)榭紤]到這是兩個(gè)不同的“Persona”。后續(xù)的統(tǒng)計(jì)結(jié)果也證實(shí)這一點(diǎn)。
????? ? 這次詞頻統(tǒng)計(jì)包含標(biāo)點(diǎn)符號統(tǒng)計(jì)、部分關(guān)鍵詞統(tǒng)計(jì)、第二人稱統(tǒng)計(jì)3塊內(nèi)容,都比較簡單,用Python編寫程序統(tǒng)計(jì),代碼請見文末“代碼合集”。

2.1????標(biāo)點(diǎn)符號統(tǒng)計(jì)
????????統(tǒng)計(jì)內(nèi)容包括5種標(biāo)點(diǎn)符號:省略號“…”、問號“?”、嘆號“!”、波浪號“~”,以及日語特有的長音符號“ー”。劇情中有兩種波浪號:“?”“~”。我們會通過程序設(shè)計(jì),把這兩種波浪號都納入統(tǒng)計(jì)范圍。
????????以下是波浪號在劇情中的應(yīng)用實(shí)例,僅作展示用,為節(jié)省篇幅不提供漢語翻譯。
りみ:わあ~、見て! 桜が満開だよ!
香澄:こんなキレイな景色を見ながら、みんなで帰宅できるなんて…… 私、すっごく幸せだなあ~
沙綾:だね?!摔筏皮狻ⅳ长长螚@は特にキレイだなあ?
——摘自編號1活動《SAKURA*BLOOMING PARTY!》序章SAKURA*BLOOMING!

2.2????部分關(guān)鍵詞統(tǒng)計(jì)
????????包括了5組關(guān)鍵詞:敬語組、學(xué)習(xí)組、計(jì)劃組、喜悅組、歉意組。還包括2個(gè)單獨(dú)的關(guān)鍵詞:“練習(xí)(練習(xí),Renshyū)”和“好き(喜歡)”。
????????(2021/5/15 Update: 增加1個(gè)關(guān)鍵詞“別に(并不是/才沒有,Betsuni)”。傲嬌角色經(jīng)常說這個(gè)詞。)
????????敬語組:日語敬語體系中有一類以“~です(Desu)”或“~ます(Masu)”結(jié)尾的“鄭重語”。這里的“敬語組”包括“です”“ます”,以及它們的過去式“でした(Deshita)”“ました(Mashita)”,以及“ます”的否定形式“ません(Masen)”。由于“です”的否定形式“ではありません(Dewa Arimasen)”也有“ません”,所以兩種詞尾的否定形式實(shí)際上用一個(gè)詞就都統(tǒng)計(jì)到了。
????????學(xué)習(xí)組:描述學(xué)習(xí)生活的詞,選取了如表所示的5個(gè)。

????????計(jì)劃組:表現(xiàn)角色計(jì)劃性的詞,選取了如表所示的3個(gè)。

????????喜悅組:表示喜悅、開心意思的詞,以“嬉し(うれし,Ureshi)”“楽し(たのし,Tanoshi)”及其平假名形式計(jì)。注意“嬉し”本身無實(shí)義,而需要經(jīng)過一些變形:形容詞“嬉しい(Ureshii)”,副詞“嬉しく(Ureshiku)”等等。
????????歉意組:表示道歉的詞句,此處以出現(xiàn)了“ごめん(Gomen)”“すみません(Sumimasen)”為準(zhǔn)。較隨意的道歉形式如“わるい(Warui)”“すまんない(Sumannai)”不算。

2.3????第二人稱統(tǒng)計(jì)
????????統(tǒng)計(jì)各個(gè)角色使用的第二人稱,有“貴方/あなた/アナタ(Anata)”“あんた(Anta)”“君/きみ/キミ(Kimi)”“お前/おまえ(Omae)”共9個(gè)。

三、統(tǒng)計(jì)結(jié)果
3.1????標(biāo)點(diǎn)符號統(tǒng)計(jì)
????????數(shù)值為對應(yīng)的標(biāo)點(diǎn)符號字?jǐn)?shù)在文本總字?jǐn)?shù)(即使一個(gè)漢字其實(shí)算2個(gè)字符,Python也把它看成1個(gè)字?jǐn)?shù))中占有的百分比。每列中最高的8個(gè)數(shù)值為紅色,最低的8個(gè)數(shù)值為綠色。
????????半個(gè)省略號“…”算1個(gè)字?jǐn)?shù),一整個(gè)完整的省略號“……”就是2個(gè)字?jǐn)?shù)了。
????????數(shù)值為0不等價(jià)于“從未說過”,而是平均每1萬字?jǐn)?shù)中使用個(gè)數(shù)少于0.5個(gè)。


3.2????部分關(guān)鍵詞統(tǒng)計(jì)
????????數(shù)值為對應(yīng)字符串出現(xiàn)次數(shù)/總字?jǐn)?shù)的比值,但是,數(shù)值是千分比,也就是在平均1000字內(nèi)會說幾次對應(yīng)的詞。每列中最高的8個(gè)數(shù)值為紅色,最低的8個(gè)數(shù)值為綠色。
????????數(shù)值為0不等價(jià)于“從未說過”,而是平均每10萬字?jǐn)?shù)中提及次數(shù)少于0.5個(gè)。


3.3????第二人稱統(tǒng)計(jì)
????????數(shù)值是總次數(shù),較高的數(shù)值標(biāo)紅加粗。

????????本文暫時(shí)到此結(jié)束,關(guān)于統(tǒng)計(jì)結(jié)果的討論,將再用一篇專欄進(jìn)行?!?br>

代碼合集
①爬蟲Python代碼展示


②角色臺詞提取Python代碼展示


③標(biāo)點(diǎn)符號統(tǒng)計(jì)程序Python代碼展示

④部分關(guān)鍵詞統(tǒng)計(jì)程序Python代碼展示

⑤第二人稱統(tǒng)計(jì)程序Python代碼展示


.txt文件下載
活動劇情腳本:https://pan.baidu.com/s/1-HkL9mghueNFv63FZndnfw 提取碼: 82q2
分角色臺詞合集:https://pan.baidu.com/s/1nmywqiVhUcjUUnXkjsHeww 提取碼: dd2r

參考資料
[1]Bestdori:https://bestdori.com
[2]鐵鏟胡桃,【BangDream】爬取日服現(xiàn)有卡面(含下載),https://www.bilibili.com/read/cv6711248