"パズドラ"ツイートから炎上を考察する話【その1】

トースターを開けたら焼く前の食パンが出てきたので初投稿です。

前回のあらすじ

 前回のnoteにてパズドラの話をしました。簡単に言うとパズドラがTwitterにて炎上し、Twitterのトレンドをかっさらったという話です。そこで、Twitterには一体どんなツイートが投稿されたのか、という疑問が生まれました。パズドラを叩くツイートなのか、もしくはイベントに感謝するツイートなのか、様々あると思います。今回からその分析をしていきます。
 今回は最も簡単だと思われる頻出単語を見ていきます。

ツイートの推移

 まず6日間のツイート推移と、各日付における24時間のツイート推移を示します。収集に利用した検索単語は 「パズドラ」「#パズドラ」「ハジドラ」「オワドラ」です。いずれもパズドラの用語などで、4/25~4/30の機関に合計約11万ツイートを収集できました。

ツイート推移全て

 ツイート数の目盛りがグラフによって異なるため注意してください。ただ、ツイート数の時間帯別推移を見たいため、ツイート数はそこまで考えなくてよいと思います。

 次にパズドラ運営の発言などを記録していきます。

4月25日12:33 無料100連ガチャイベントの告知  
4月27日04:00 無料100連ガチャイベント開始
4月27日13:59 プロデューサーからのフェス限補填イベント(仮)の提案
4月27日17:32 フェス限補填イベントの告知  

 この発言とツイート推移を照合すると25日と27日は変動が顕著であることがわかります。一方で告知のない(もしくは告知はあるもののビッグイベントではない)他の日付は似た形状ですね。
 特に27日は朝4時にも関わらず6,000ものツイートが投稿されており、イベントへの期待度が伺えます。
 ただ、これだけではツイート内容まで詳しく知ることはできません。そこで、ツイート内容を細かく見ていきましょう。

分析に準備するもの

 頻出単語を見るためには、まずツイート文を単語ごとに分かち書きする必要があります。そこで役立つのが形態素解析エンジンのMeCabです。
 MeCabを利用することで文章を最小単語単位に分割し、各単語に対して品詞を判断し割り当てることが出来ます。もちろん他の形態素解析エンジンでもよいと思いますが、馴染み深かったので利用します。

 また、文章を分かち書きする際、単語を参照する辞書が必要になってきます。MeCabをインストールする際、標準の辞書がついてきますが、今回はネットなどの新語に強い対応力を持つmecab-ipadic-neologdを使用します。
 これらをpythonで使えるようにできればオーケーです。参考にさせて頂いたサイト様を以下に紹介いたします。

MeCab: Yet Another Part-of-Speech and Morphological Analyzer
としおの読書生活 MeCabのNEologd辞書をWindows10で使う方法
@Yukinoi WindowsやmacやLinuxにpipでPython用MeCabバインディングをいれる

ツイートの前処理

 データを分析する前に、少しだけ文章の前処理をします。前処理とは、分析のノイズになる要素を削除していく工程です。

 まずはツイートを投稿するユーザを見ていきます。特に「bot」と呼ばれるユーザはノイズにしかならないため、削除していきます。
 しかしbotの特定も簡単ではありません。ここではツイート投稿端末がtwittbot.netという、代表的なbotアカウントを削除します。

 次にツイート中のhttpから始まるurlを削除していきます。対象はWebサイトというよりは画像がほとんどです。

 次に単語の正規化を行います。正規化とは単語を一つのルールに統一することを指します。
 例を挙げて説明します。単語認識において「パズドラ」と「パズドラ」では違う単語と認識されてしまいます。そこで登場する半角カナを全て全角カナに変換し、登場単語の統一化を図ります。このような作業を正規化といいます。
 他にも「よっしゃーーーーーー!」を「よっしゃー!」にしたり、登場する数字を全て0にしたりなど、様々なルールがあって正規化を行います。 
 今回は出現率などの数字を重要だと考えるので、数字はそのままで単語の統一化を行いました。

 最後にストップワードを削除していきます。ストップワードとは助詞や接続詞など、単体ではあまり意味を成さない言葉を指します。
 このストップワードの削除は様々な方法がありますが、今回はすでに作成済みのストップワーリストであるStoplibを利用させて頂きます。分かち書きをした際にこのリストに含まれる単語が出た場合、その単語を削除します。

 以上で前処理は終了です。本当は他にもやるべきことはありますが、最低限のみにして先に進んでいきます。

頻出単語を出してみる

 下準備がすべて終了したので、ここからやっと分析パートです。
 まずはどんな単語が多いのかを見るべく、頻出単語を出していきます。といっても全頻出単語を出してしまうと、ストップワードで削除しきれない意味不明な語句ばかりが羅列しそうなので、今回は名詞に絞って抽出します。
 分析は広域から狭域が大切なので、まずは何も考えずに全ツイートを対象として抽出します。

[('*', 155421), ('パズドラ', 119552), ('の', 14152), ('無料', 13228), 
('ん', 12978), ('限', 10811), ('Fess', 10528), ('GACHA', 9228),
 ('キャラ', 6885), ('ミラティブ', 6019), ('質問', 6018),
 ('ゴッドフェス', 5655), ('配信中', 5427), ('モンスト', 4383), 
('運営', 4306), ('募集中', 3978), ('匿名', 3901), ('垢', 3793), 
('ゲーム', 3620), ('スーパー', 3504), ('交換', 3502), ('笑', 3361), 
('神', 3248), ('100回', 3143), ('草', 2730), ('トレンド', 2708),
 ('フレンド', 2683), ('確率', 2631), ('結果', 2609), ('石', 2516),
 ('星', 2487), ('募集', 2333), ('配信', 2333), ('派', 2259), 
('質問箱', 2233), ('最近', 2188), ('配布', 2156), ('ゴミ', 2076), 
('ω', 2017), ('好き', 1924), ('当たり', 1880), ('お願い', 1866), 
('販売', 1854), ('WWW', 1840), ('周回', 1754), ('今日', 1719), 
('FGO', 1672), ('トレード', 1670), ('ログイン', 1596), ('裏', 1569),
 ('久しぶり', 1560), ('ランク', 1536), ('爆死', 1533), ('サブ', 1525),
 ('データ', 1476), ('課金', 1467), ('わからん', 1438), ('イベント', 1430),
 ('コラボ', 1409), ('闇', 1408)]

 上位60単語を抽出しました。前処理が効いたのか、意外とまともな単語が抽出されて嬉しいです。「*」とか「の」とか「ん」は目をつむりましょう・・・

 さて一番上位は「パズドラ」でしたね。収集ツイート量よりも多いので、1ツイートに複数含まれる場合もあるようです。
 続いて「無料」「FESS」「GACHA」などがイベントに関連する単語が見えてきます。「限」というのは、フェス限がMeCabによって「フェス」と「限」に区切られてしまった結果みたいです。

 パズドラとは直接関係なさそうな単語としては「ミラティブ」「配信中」「質問箱」などがありますね。Twitter連携でツイートされたものでしょう。この辺は単語ではなく、botと同じようにツイートごと削除してもよさそうです。

 さて、炎上につながりそうな単語としては「ゴミ」「闇」「爆死」などが該当しそうですね。しかし意外とツイート数は少ないですね。実は思ったよりも否定的な言葉は少ないのかもしれません。

 他に気になる言葉としては「モンスト」「FGO」などの他ゲームの単語がありますね。パズドラのイベントに対して○○は~みたいなツイートでしょうか。

頻出単語をだした結果

 様々な単語をたくさん抽出できました。さらに細かくツイートを見ていくことで、面白い発見がありそうです。今後は時間帯や単語に絞ってツイートを見ていきたいですね。
 また、いいねやRTが多くされたツイートも気にしてみたいと思います。拡散されがちなツイートは過激なツイートが多い印象で、そのせいで全体的に炎上しているのかもしれません。
 他にも、名詞以外の言葉を抽出してもよいと思います。例えば形容詞を抽出することで、もっと直線的な感情を炙り出せそうです。

 一方で当初の予定だった極性分析はまだまだ遠そうです・・・

最後に

 "パズドラ"ツイートから頻出単語を出す話でした。正直今回の話も準備の説明が多かったため、考察が十分に出来ていません。
 そのため、次回はできるだけ多く考察に割いていきたいです。ぜひ次回もお楽しみに。

ではではー

この記事が気に入ったらサポートをしてみませんか?