KHcoder 18. 階層的クラスター分析(抽出語)

KHcoder 18. 階層的クラスター分析(抽出語)

テキストマイニングツール「KHcoder」の活用メモ
開発者である樋口先生に感謝!
【今回の分析対象テキストはこちらからコピーできます】

分析手順と結果

抽出語の階層的クラスター分析とは

 KHcoderには「抽出語」と「文書」のクラスター分析をそれぞれ行う機能があります。今回は「抽出語」のクラスター分析をとりあげます。KHcoderでおこなうクラスター分析結果(抽出語)から何を読みとることができるのでしょうか。クラスター分析結果とは、似ているもの、つまりクラスターを形成してゆく過程と結果をあらわすものです。(クラスター分析の詳細について今回は取り上げないので、こちらをご参照ください)各「抽出語」の何が似ているのか?というと「出現パターンが似ている」という解説が一般的です。では、「出現パターン」というのは何なのか?この謎が解ければ分析結果から何を読みとることができるのかという疑問が解けるのだろうと思います。

分析手順

KHcoder 階層的クラスター分析 「ツール」→「抽出語」→「階層的クラスター分析」の順ですすみます。
KHcoder 階層的クラスター分析設定 「集計単位」を「段落」にしました。この設定に「出現パターン」のヒントがあります。KHcoderの抽出語分析は「語」が出現する場所と「語」が出現する回数とを分析します。「集計単位」を「段落」に設定するということは、階層的クラスター分析は「語」が、どの「段」に出現しているのか、「文」に設定すると「語」がどの「文」に何回出現するのかを計算するのです。

 「最小出現数」は少ない方が解説しやすいので3にしました。「クラスター分析のオプション」はデフォルト設定のまま「Ward法」「Jaccard」です。クラスター数は「auto」です。一般的に「階層的」クラスター分析はクラスター数を指定しない、「非階層」クラスター分析はクラスター数を指定する分析と定義されています。「auto」だからいったんは「階層的」です。あとでクラスター数を直接入力して変更することが可能です。

分析結果

KHcoder 階層的クラスター分析結果 クラスターが3個形成されました。クラスター形成の過程をみていきます。樹形図を左からたどると、はじめに「サーモン・イクラ」の群(そのままクラスターになる)、「イカ・苦手」の群が同時に形成されます。次に「好き・まぐろ」の群が形成されます。「好き・まぐろ」の群に「海老」が加わるクラスターと「イカ・苦手」の群に「サバ」が加わるクラスターが同時に形成されます。この時点で「サーモン・イクラ」「好き・まぐろ・海老」「イカ・苦手・サバ」のクラスター数が3になります。ちなみに樹形図の左側にあるバーは「語」が出現する回数を示します。

 この結果から解ることは、例えば(青いクラスター)、「好き」「まぐろ」「海老」の出現パターンが似ているということです。しかし、「出現パターン」の意味が理解できないので残念ながら分析結果から何かを読みとることは難しい感じがします。

計算方法

データ
         [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
[サーモン]    1    1    0    1    0    0    0    0    0     0     0     1
[サバ]      0    0    0    0    1    0    1    0    0     0     1     1
[イカ]      0    1    0    0    0    0    1    0    0     1     0     0
[好き]      1    0    0    0    1    1    1    0    0     1     0     0
[苦手]      0    1    0    0    0    0    1    0    0     0     0     1
[まぐろ]     1    1    1    0    1    1    0    1    1     1     0     0
[イクラ]     1    1    1    1    1    0    0    0    0     0     0     0
[海老]      0    0    1    0    0    1    1    0    0     0     0     0

 クラスター分析用のマトリクス型データです。行が「語」列が「段」のid(KHcoderは「段」にidを付与している)です。数値は「語」が「段」に出現する回数です。このデータに基づいて「語」と「語」の距離を算出してクラスターを形成します。

出現パターンとは
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
[サーモン] 1 1 0 1 0 0 0 0 0 0 0 1
[イクラ] 1 1 1 1 1 0 0 0 0 0 0 0
[海老] 0 0 1 0 0 1 1 0 0 0 0 0
[好き] 1 0 0 0 1 1 1 0 0 1 0 0
[まぐろ] 1 1 1 0 1 1 0 1 1 1 0 0
[サバ] 0 0 0 0 1 0 1 0 0 0 1 1
[イカ] 0 1 0 0 0 0 1 0 0 1 0 0
[苦手] 0 1 0 0 0 0 1 0 0 0 0 1

 クラスター形成に使用するデータは「語」がどの「段」に何回出現するのかを示すものです。「語」をクラスター分析結果順に並び替えて「語」が出現している「段」に色をつけました。これが「語が出現するパターン」です。Jaccard係数が高い「語」と「語」が同一クラスターを形成しやすいということがわかります。概ね「語」と「語」のJaccard係数の関係をビジュアライズしたものだと理解すればよいのですが、クラスター分析の特性上完全にJaccard係数と一致(または比例)するものではないことに注意が必要です。

Jaccard係数は高いが違うクラスターになる
サーモン サバ イカ 好き 苦手 まぐろ イクラ
サバ 0.857143
イカ 0.833333 0.833333
好き 0.875000 0.714286 0.666667
苦手 0.600000 0.600000 0.500000 0.857143
まぐろ 0.800000 0.909091 0.777778 0.555556 0.900000
イクラ 0.500000 0.875000 0.857143 0.750000 0.857143 0.555556
海老 1.000000 0.833333 0.800000 0.666667 0.800000 0.777778 0.857143

 「語」と「語」の距離を算出しました。クラスター形成の過程は距離が近い「語」どうしが群を形成しクラスターに成長します「サーモン・イクラ」「イカ・苦手」(距離0.5)の群がはじめにできます。次に「好き・まぐろ」(距離0.555556)が群になります。ところが「まぐろ・イクラ」の距離も0.555556で「好き・まぐろ」と同じだから「まぐろ・イクラ」と同時に群を形成するはずです。しかし「まぐろ」と「イクラ」は最後までくっつきません。これは「好き・まぐろ」が先に群を形成しているから、群と「語」の距離を再計算するために発生する現象です。この再計算の手法がはじめに設定した「ward法」です。オプションで「群平均法」「最遠隣法」もあります。

 クラスター形成の過程は、すべての「語」と「語」の距離を計算する→群を形成する→群と残りの「語」との距離を計算する→群を形成する→再計算→くりかえし
 このように群の形成に仕方、再計算の実施によってJaccad係数が高いが同一クラスターにならない現象が発生します。