Re: 「抽出語」×「文脈ベクトル」表を使った共起ネットワーク (HIGUCHI Koichi) KH Coder 旧掲示板
[ツリー表示] [留意事項] [ワード検索] [過去ログ]

  [No.887] Re: 「抽出語」×「文脈ベクトル」表を使った共起ネットワーク 投稿者:HIGUCHI Koichi  投稿日:2011/12/19(Mon) 13:30:39

こんにちは、樋口です。書き込みありがとうございます。

> (1)「文書」×「抽出語」表
> (2)「抽出語」×「文脈ベクトル」表

はい、お書きいただいた通り、必ずしもSOMに限らず、共起ネットワーク・多次
元尺度法・階層的クラスター分析を行う場合にも、(2)を使うメリットはあると
思います。ただし(現時点では)KH Coderのコマンドは(1)を使うように固定さ
れていますので、(2)を使うためには「手作業」が必要になります。

せっかくの機会なので、(2)を使って共起ネットワークを作成する方法を、簡単
にですがまとめておきます。※他にもいろいろな作成の方法はあるかと思いま
すが、1例として...

-------------------------------------------------------------------------------
(i) 「抽出語×文脈ベクトル」表の出力コマンドを使って、CSVファイルへの
出力を行います。

(ii) 共起ネットワークのRコマンドを得るために、KH Coderで作成した共起
ネットワークを「R Source」形式で保存します。

(iii) 上の(ii)で保存した*.rファイルを何カ所か編集します。

まず「# END: DATA」という行を探し、そこから上をすべて削除します。そし
て、かわりに以下のコマンドを入力します。なお1行目は、(i)で保存したCSV
ファイルのフルパスに変更します。また行頭の「>」は、この掲示板で引用を
あらわすための記号なので、Rのコマンドとしては入力しません。

> d <- read.csv( "C:\\test\\hoge.csv", header=T )
> row.names(d) <- sub( '\\([0-9]+\\)', "", d[,1], perl=T)
> freq <- as.numeric( gsub( '[^0-9]', "", d[,1], perl=T) )
> d[,1] <- NULL
> #d <- scale(d)

次に、少し下の「# 頻度計算」の部分を次のように変更します。行頭に「#」
を追加することで、実行されないようにコメントアウトします。

> # 頻度計算
> #freq <- NULL
> #for (i in 1:length( rownames(d) )) {
> # freq[i] = sum( d[i,] )
> #}

最後に、「# 類似度計算」の部分を次のように変更します。Jaccard係数では
なく、相関係数を指定しています。

> # 類似度計算
> library(amap)
> d <- Dist(d,method="correlation")
> d <- as.matrix(d)
> d <- 1 - d;

(iv) あとは、編集した*.rファイルを、KH Coderに付属のRで実行すれば完了
です。KH Coderに付属のRは、kh_coder.exeと同じ場所にあるR_gui.batをダブ
ルクリックすると起動します。コンソール画面に*.rファイルをドラッグアン
ドドロップすると実行されます。

最初に追加した「#d <- scale(d)」という部分の「#」を削除した方が好まし
い結果になる場合もあるかもしれません。データの特性や、分析の方針に応じ
て「#」の有無を選んでいただくと良いでしょう。
-------------------------------------------------------------------------------

こうした形で、dist()関数ないしはその派生(?)のDist()関数を使う場合は、
転置する必要は無いかと思います。ただ、もし列と列の類似度を計算する関数
を使われる場合には、転置しなくてはいけないでしょう。

以上、ご参考になる部分がありましたら幸いです。

p.s.
以前ご示唆をいただいたボナチッチ中心性ですが、2.b.27から「共起ネット
ワーク」コマンドに取り入れさせていただきました。名称は「中心性(固有ベ
クトル)」としてあります。その節はありがとうございました。


- 関連一覧ツリー (■ をクリックするとツリー全体を一括表示します)