コメントの分類方法について(興味がある人向け)

はじめに

興味がある人なんていない気もしますが、参考までにアルゴリズムを載せておきます。

私さくらもちは、ITの技術者 or 研究者というわけではありません。

そのため、間違った内容を多分に含んでいる可能性もありますし、
プロからしたら、

バカバカバカ! もうあんたって本当バッカじゃないの! ←かわいいから許す!

という人もいるかもしれません。

処理に使っている手法は、世界的にも一般的に使われているものばかりですので、
気になる方は、有志のサイトや論文を参考にしてください。

私も原理的にはわかっていますが、細かい事を聞かれても、上手く答えられませんので……。

手順

STEP
コメントを取得

ニコニコ動画様より、放送開始時から1週間分のコメントを取得します(csv形式)。
取得したcsvには次のような情報が含まれます。

  • コメント内容
  • コメントが投稿された再生位置(秒)

このcsvを解析ツールに読み込むことで、以降の工程がスタートします。

STEP
暴言、弾幕等のコメントを除去

読み込んだコメントには、絵文字だけ、弾幕だけ、暴言表現など
解析に不要なテキスト が含まれている場合があります。

ツールは以下の処理で前処理を行います。

● 正規化

  • 全角/半角の統一
  • NFKC正規化
  • 不要なスペース除去

● ストップワード除去

暴言や意味を持たない単語が登録されているstopwords.csvというオリジナル辞書を読み込み、一致するコメントを除外します。
「あああああ」など 意味を持たない語を事前に除外 します。

STEP
ピーク抽出(どのシーンが盛り上がったを抽出)

コメントには 一気に増える瞬間 が存在します。

  • キャラが登場!
  • 作画がすごい!
  • ギャグシーン
  • 感動シーン
  • 戦闘が始まった瞬間

など、盛り上がりポイントはコメント数に反映されやすくなります。

ツールでは、時間軸ごとのコメント数を集計し、
そこから 「ピーク(山)」 を検出します。

これにより、
「どのシーンが最も盛り上がったか?」 が分かるようになります。

● 移動平均

移動平均秒を使い、コメント投稿数の揺らぎを均します。
その後、コメントピークを抽出します(どの秒数でコメントが急増したかを検出)。

STEP
形態素解析(Sudachi)

コメントを最小単位に分類します。
例:ほむらちゃんかわいい ⇒ ほむら/ちゃん/かわいい

分類した単語と、ステップ6で使用する辞書に登録された単語を比較していきます。
上記例の場合だと、
ほむら ⇒ 「魔法少女まどか☆マギカ」の暁美ほむらのこと ⇒ カテゴリ:キャラ 極性:中立
かわいい ⇒ カテゴリ:キャラ 極性:肯定
という処理を行い、結果的に
ほむらちゃんかわいい ⇒ カテゴリ:キャラ 極性:肯定
と分類されます。

補足:極性について

極性とは、肯定/中立/否定のどれに分類されるか、ということです。
肯定コメントが1つあれば+1、否定コメントなら-1、中立なら0。
つまらないけど、キャラはかわいいな」というコメントの場合、
「つまらない」で-1、「かわいい」で+1、合計0ということで、中立に分類されます。
つまり、1以上なら肯定、-1以下なら否定、0なら中立と分類されます。


STEP
コメントをジャンルごとに分ける(クラスタリング)

ここが当サイトの一番の特徴です。

取得したコメントをまとめて、

  • キャラについて話しているコメント
  • 作画を褒めているコメント
  • ストーリーに触れているコメント
  • 声優・音楽
  • ネタ・ギャグ
  • その他(汎用的な感情)

といった 複数のグループに自動分類 します。

分類の流れは以下の通りです。

●4種類の辞書でカテゴリ&極性分類

  • 一般辞書(一致単語は特定のカテゴリ、極性に分類)
    「かわいい」 ⇒ カテゴリ:キャラ 極性:肯定
    「日常系」 ⇒ カテゴリ:ストーリー 極性:中立
    「良い声」 ⇒ カテゴリ:声優 極性:肯定
    「視聴継続」 ⇒ カテゴリ:汎用感情 極性:肯定
    「糞作画」 ⇒ カテゴリ:作画 極性:否定

  • 声優辞書(声優は、あだ名や他作品のキャラ名で呼ばれることがあるため別辞書としている)
    「佐倉綾音」:あやねる、ココア、麗日お茶子・・・他多数
    「内田真礼」:まあや、まれいたそ、たそ、まれい、シャロ、神崎蘭子・・・他多数
    「早見沙織」:はやみん、ヨル・フォージャー、新垣あやせ・・・他多数

    例えば「ご注文はうさぎですか?」に対するコメントを分析するとします。
    コメントの中で「お茶子」というコメントがある場合、
    佐倉綾音さんはごちうさに出演している声優なので、
    これは佐倉綾音さん自身のことを言っていると判断し、
    カテゴリ:声優、極性:中立と判断します。

    一方、このアニメに出演していない声優が演じたキャラ名がコメントにある場合は、
    カテゴリ:他作品、極性:中立として分類します。

  • 作品別キャラ辞書(キャラクター名のみ格納)
    「魔法少女まどか☆マギカ」:鹿目まどか、暁美ほむら、巴マミ、美樹さやか、佐倉杏子、百江なぎさ等
    「日々は過ぎれど飯うまし」:河合まこ、古舘くれあ、小川しのん、比嘉つつじ、星なな、モコ太郎等
    ※各辞書にはキャラクターのあだ名も登録(暁美ほむらなら、ほむら、おほむ、ほむほむ等)。

    各作品毎に作成しています。
    キャラ名と一致するコメントは、カテゴリ:キャラ 極性:中立に分類されます。

  • 作品別一般辞書(作品固有に頻出する単語を格納)
    こちらの辞書も各作品毎に作成しています。

    例えば、ご注文はうさぎですか?では
    あぁ^~心がぴょんぴょんするんじゃぁ^~
    というコメントが頻出します。

    このコメントは、後に多くの作品に登場するコメントとなり、
    一般辞書にはネタカテゴリとして登録しています。

    しかし、放送当時のご注文はうさぎですか?におけるコメントでは、OPに頻出する単語になります。
    そのため、作品別一般辞書(ごちうさ専用一般辞書)では、音楽カテゴリとして分類しています。

上記の辞書によって分類していきます。
ですが、コメント数は膨大なため分類しきれないものも出て来ます。
未分類のコメントに関しては、以下の処理でさらに分類していきます。

● コメントの文章を数値化(TF-IDFベクトル化)

日本語の文章を“数値ベクトル”として扱い、
似た内容のコメント同士が近くなるように変換します。

● 機械学習でグループ分け(KMeansクラスタリング)

文章同士の距離をもとに、
似た内容のコメントが自然に一つのクラスタ(グループ)にまとまるよう、
機械学習で自動分類します。

STEP
ヒートマップで全体の雰囲気を見る

必要に応じて、1分ごとなどにコメント量を区切り、
どの時間帯が賑やかだったかを視覚化したヒートマップ を作成します。

横軸が時間、縦軸がコメント密度となり、
「話の前半がにぎやか」「終盤に集中している」などの特徴が分かりやすくなります。

STEP
出力

分類に応じて、グラフ(png形式)とコメントリスト(csv形式)を出力します。

補足:放送当時のコメントについて

各記事に掲載されている「放送当時のコメント」は、
出力されたコメントリストから、ランダムで数百件のコメントを抽出しています。

文字数が多いコメントの方が内容があって面白い!という判断をして、
長いコメントを優先して抽出させるようにしているくらいで、あとは完全ランダムです。

そのため、実際には数万件あるコメントの中には、もっと面白いコメントがあるかもしれません。
ですが、選ばれたコメントとは一期一会ということで、そのまま選ばせて貰っています。