ブログ解析による欅坂46メンバの相関図作成
はじめに
- 欅坂46メンバの公式ブログを解析し、メンバ間の関係を抽出して相関図を作成しました。
- データの収集から解析まで、基本的にPythonです。コードも公開してます。
- 趣味爆発の記事ですが、欅坂46分からなくても(たぶん)楽しめるよ!
解析方法
以下の4つの手順で解析しました。
こちらの解析のコードにGitHubにupしており、以下URLで確認可能です。(ちょっと違うかもですが)
1. ブログを収集
- 公式サイトからスクレイピングすることにより取得
- 収集方法はこちらの記事の通りです。
- qiita.com
- 今回は漢字欅メンバ(卒業メンバを除く18名)の記事のみを対象としました。
- 総記事数は9196件
- 収集した記事の一部です。(Pandas DataFrame)
2. 各メンバのブログ文章から他メンバへの言及を抽出
下の画像のように、各メンバのブログの文章からメンバの名前を抽出します。
ただし、ブログではメンバの名前を愛称で呼ぶことが多いため、通常のMeCab等の形態素解析ツールの辞書ではメンバの言及を抽出することができません。
- 平手友梨奈 -> てち, てちこ, ...
- 渡辺 梨加 -> べりか, ぺー..., など
これを解決するため、Mecabの辞書へメンバの愛称を追加語彙として追加します。
- メンバの愛称はこちらのサイトから拝借しました。
- 欅坂46ブログメンバー呼び名一覧
- MeCabへの語彙の追加は以下の記事の通りです。
- qiita.com
3. 全ブログから言及関係数を集計
- [2. 各メンバのブログ文章から他メンバへの言及を抽出]の処理を全9196件のブログへ適用しました。
fromメンバ toメンバの回数を行列にし、ヒートマップにしました。
ただし、メンバ毎に投稿してる記事の本数が大きくことなるため、そのままの値では、メンバの関係が観測しづらい場合があります。
メンバ毎に記事の本数で正規化(min-max normalization)した場合は、ヒートマップは以下のようになります。これによりメンバ間の関係が観測しやすくなりました。
4. 関係を可視化
- [3. 全ブログから言及関係数を集計]の時点で、見つけたい関係を観測できましたが、より直観的に全体の関係を確認するために、グラフによる可視化を試しました。(格好をつけたかった)
- ノード間エッジ(線)の太さが関係の強さを表しています。
- 可視化のためにツールはCytoscapeを使いました。
- cytoscape.org
解析結果について
欅坂46を応援しているファンが見ると、納得できる結果だとは思います。
何か正確なもの(?)と比較するために、欅坂46の冠バラエティ番組「欅って書けない」の企画で検証されていた相関図と比較してみました。
- 番組相関図にもブログ相関図にもある関係
- 番組相関図にはないが、ブログ相関図にある関係
終わりに
結論
- 簡単な方法ではあったが、1ファンの感覚として腑に落ちる結果が得られた。
- 「織田奈那」「斎藤冬優花」は最重要メンバであり精神的支柱
- 番組の企画の相関図と比較しても割と似ているところが多かった。
今後の課題
- 対象メンバの拡大
- 時系列解析
- 期間毎の言及数の変化に注目し解析を行う
感想
- 好きなデータを弄る趣味解析は超楽しい、データサイエンスはドメインへの愛が1番大事だと思う
- 実際、欅坂46メンバの愛称の語彙を公開してくださっていたサイトがMVP 欅坂46ブログメンバー呼び名一覧
- 日本語NLPは精度の高い辞書を作ることが超大事
- 可視化の部分でカッコよくしたかったのですが、結局大したことができなかったので、ちょっとフロントエンドの部分やデザイン(Infographics)も勉強してみたいと思った。