2022年7月11日月曜日

2つの事件に対する世間的認識の差(ただしツイ民の反応)

まずは下の図(トピックマップ)を比べてみていただきたい.いずれも,TWtrends で作成された,「その日の話題グラフ(トピックマップ)」である.

左は2022年7月2日のトピックマップで,中央に密結合の大きなクラスタが発生している.このクラスタ,auの通信障害に関するものである.この週末は,長いことauの通信障害が発生し,社会問題になった.

右はその1週間後,7月9日のトピックマップである.中央に,茶色いノードから構成される,大きなクラスタが横たわっている.こちらは左側と異なり,緩やかに多くのノードが紐づけられたクラスタである.その話題は,前日に発生した安倍元首相暗殺事件に関するものだ.本事件に関連するさまざまな話題が緩やかにつながっているグラフとなっている.

左のクラスタは54個のノードによるもの,右のクラスタは40個のノードから構成されている.規模は若干左が大きいとはいえ,どちらも通常はあまり現れない大きさのクラスタである.いずれの事件も,Twitterユーザーへの影響が大きなものだったことが窺える.

ところで,左と右の違いはなぜ生じるのだろうか.

主に考えられる理由は,グラフの作り方によるものである.ノードとノードを連結する基準は,それぞれのノードに紐づけられた単語ベクトル(各ノードはTwitterのトレンドとして現れるキーワードであり,そのキーワードでTwitterをサーチした結果100件のツイートに含まれるワード群の出現頻度から単語ベクトルが作成される)の類似度が,ある閾値(現在は0.5)を超えているかいなか,というものである.閾値を超えていれば,それらのノード間には関連性があるとみなし,そのノードとノードをエッジで結ぶという処理が加えられる.

これらのクラスタを構成するベクトル群をPandasのDataFrameで表現し,それらに対して Scikit Learn が提供するAgglomerativeClustering を用いて,凝集性クラスタリングを行った.なお,クラスタリングを実施する際には,StandardScaler によって正規化してからクラスタリングした.

3つのクラスタを仮定し,それぞれのグラフをクラスタリングする.その後,3つに分割されたクラスタ0〜クラスタ2までのそれぞれのクラスタの重心(対象は正規化する前のデータ)を求め,それぞれの重心間のコサイン類似度を求めた表が,次の表である.まず,7月2日のものがこれ.

明らかに,各クラスタ間の類似度が高く,うまく分割されていないことがわかる.つまり,もともと密結合だったものを無理やり分割してみたものの,それぞれの重心間の類似度は依然として高いままでありうまく分割できていなかった,という状況である.

対して,7月9日の計算結果がこちらである.

対角線は「同じクラスタ間の距離」であり「1.0(=同じもの)」なのは先ほどと同様だが,それ以外のところでは,0.14〜0.36と,非常に低い数値になっている.これはすなわち,3つのサブクラスタがきれいに分離できていることを意味する.

「auの障害に関しては,同じような言葉がずっと使われていたので,密結合のクラスタになったのではないか?」という疑問に対しては,重要なキーワードを抽出してJaccard係数を計算することで説明できるだろう.また,時系列的にどういう状況になっていたかも興味深いところである.それらについては,また,時間ができたら調べてみることにする.

0 件のコメント:

コメントを投稿