共起ネットワーク
概要
文章内の出現パターンが似た(共起する)単語同士を線で結んだ「ネットワーク図」を描画します。以下のパラメータがあります。
パラメータ | 初期値 | 説明 |
---|---|---|
エッジ数 | 20 | 描画する共起関係(エッジ)の件数を指定します。初期設定では、上位 20 件を表示します。 |
Jaccard 係数 | 0.2 以上 / 0.8 以下 | 共起の強度が高い単語を「~以下」を指定して除外、もしくは低い単語を「~以上」を指定して除外します。常に共起するような単語対がノイズとなることを防ぎます。 |
品詞フィルター | 内容語のみ表示 | 特定の品詞のみを表示、もしくは除外します。 |
サブグラフ検出(community detection) | オン | 関連度の高い単語同士を同色(最大 30 色)で描画します。エッジ数を 31 以上に指定した場合は、1 色で描画します。 |
出現頻度によって円の大きさを変える | オン | 出現頻度が高ければ、単語円(ノード)を大きく描画します。他の単語との相対頻度によって、円のサイズが決定されます。 |
品詞についての詳細はこちらを参照してください。
詳細
共起関係(エッジ)の表示
Jaccard 係数の高い(共起が高強度である)単語対ほど、太いエッジで結ばれます。エッジの長さやノード間の距離に意味づけはありません。
Jaccard 係数
文単位で共起の頻度を数え、以下の計算式によって、共起の強度をJaccard 係数として算出します。 共起している割合が高ければ高いほど、その単語間の Jaccard 係数は大きく(1 に近い値に)なります。
具体的には、二つの単語 \( g_1, g_2 \) に対して、それぞれが含まれる文全体の集合を \( A_1, A_2 \) とするとき、単語間の Jaccard 係数は
\[ \text{Jac} (g_1, g_2) = \frac{| A_1 \cap A_2 |}{| A_1 \cup A_2 |} \]
で計算されます。つまり二つの単語の 両方 を含む文の数を、二つの単語の 少なくともどちらか一方 を含む文の数で割った値となります。
サブグラフ検出(community detection)
一般的なネットワークグラフには、グラフ内をグルーピングする community と呼ばれる構造があり、 community 内部のエッジの重みが大きくなるように、グラフを複数の communities へ分割する問題が知られています。 この問題は community detection、あるいは KH Coder では サブグラフ検出 と呼ばれています。
LiTA においては、Vincent D. Blondel らによる Louvain 法に基づいて、近似的に community detection を行います。 なお、効率化およびアルゴリズムの有限性の保証のため、次の変更を施しています:
- 「Modularity を極大化し、singlet community からなる新たなグラフを出力する」操作を最大 \( 100 \) 回まで繰り返した後、終了
(新たなグラフが操作前と一致するまで終了しない、とする元の設定から変更) - 「あるノードに対して、modularity が最大となるような隣接 community を見つける」操作を最大 \( 100 n \) 回 *) まで繰り返した後、終了
(すべてのノードにおいて、自身の community が modularity 最大のときに限り終了、とする元の設定から変更)- *) \( n \) はグラフのノード数
これらの仕様は予告なく変更される可能性があります。