概要
Youtube Liveのコメント欄を、リアルタイムで取得して、MeCabの形態素解析にかけて分かち書きをしたのちにNlPlotを使用して各種プロットを実施するwebアプリケーションです。いろいろとインタラクティブに作りたかった結果、Dashで書いているためWebアプリケーションになっているもののローカルで動かして使うことを想定しています。
NlPlotの詳細に関しては以下のリンクをご参照ください。
作成した方のブログ:https://www.takapy.work/entry/2020/05/17/192947
ソースコード:https://github.com/takapy0210/nlplot
画面概要
実際の画面は以下のように分かれています。
大きく分けると、左側がコメントをロードして解析する際の各種設定値を入力する箇所箇所になっており、右側がプロットを実際に表示するエリアになっています。
処理概要
- management.pyを実行
- Youtube API keyを環境変数に登録
- ウェブブラウザを開きhttp://127.0.0.1:8000にアクセスする
- viewを呼び出し
- 実行ボタンが押されることによって、設定が環境変数に登録されget_commentのループが発火
- create_plotを設定秒数ごとに呼び出し、プロットを更新
といった順番で動いていきます。取得したコメントの受け渡しはtxtファイルで実施しています
動作画面
今回作成したアプリケーションには、以下の3つのタブがあり4つのプロットをリアルタイムで更新しながら表示していきます。
単語出現頻度
このプロットに関してはNlPlotを使用していません。除外対象の品詞の単語および、除外対象の単語を外したうえで現在までのコメントの中で出現数の多かった単語をプロットしています。デフォルトでは割合となっていますが、出現数に変更することができ、表示単語数に関してもデフォルトは30ですが変更することができます。
共起ネットワーク
共起ネットワークおよびサンバーストチャートを表示しています。このプロットに関しては、簡単に言うと単語のつながりをネットワークで表したものです。また、出現頻度の多い単語になってくると丸が大きくなってくるようになっています。また、下側にサンバーストチャートが表示されており、これは共起ネットワークにおいて同じコミュニティーに属している単語を表示したプロットになっています。
ワードクラウド
ワードクラウドは、単語の出現頻度に応じて単語のサイズを調整して雲のように表示したものです。出現頻度が大きい単語ほど大きく表示されています。
使用方法に関して
詳しい使用方法は、以下のリンク先のGithubのREADMEに記載してあるのでそちらをご確認ください。
https://github.com/N-OKAMOTO1031/comment_analysis
改修内容、確認済みバグ内容
2023/07/07
- 変更点
- 設定値をyamlで保存する方式から環境変数として保存する方式に変更
2023/06/23
- 変更点
- 共起ネットワークおよびサンバースプロットのサイズを変更
- notice
- get_commentの呼び出し方法の変更に関しては、変更の必要な箇所が多く大規模に改修しないといけないため変更を見送り
2023/06/18
- 変更点
- コメントの受け渡しをcsvからtxtに変更
- 確認済みのバグ
- defaultのmecabで実行した場合、形態素解析後のリストに品詞が混ざることを確認
NEologdを導入すれば問題なく動くため未対応 - 一定の条件下で、get_commentが実行されないことを確認
再現性がないのと、次回更新時にget_commentの呼び出し方法を変更するため様子見
- defaultのmecabで実行した場合、形態素解析後のリストに品詞が混ざることを確認
今後の改修予定
現状では以下の改修を考えています。ただ、個人で作っているためいつになるかはわかりません。もし使っていただける方がいましたら、バグ報告もしくは改修要望をGitのissueやQiita等に挙げていただければ優先的に対応します。
コメントの受け渡しをcsvからtxtに変更-
グラフの設定値のロードをyamlファイルから直接取得する形に変更(環境変数にしました) 各グラフのサイズ調整- コメントの取得数の推移グラフを追加(ついでに秒間のコメント数を表示)