[掲示板へもどる]
一括表示

  [No.1956] KhCoderでの類似度行列について 投稿者:Honda  投稿日:2015/02/02(Mon) 22:28:44

はじめまして。素晴らしいソフトのご提案を誠にありがとうございます。
KhCoderを使いながら様々な文章の解析を試みており、ゆくゆくは学会発表ができれば、と考えている新米教師です。
自分なりに考えているのですが、どうにもこうにも行き詰ってしまい、ここで質問をさせていただくことにいたしました。
もしよろしければ、ご教授いただけますと幸いです。


お尋ねしたいのは、表題の件につきまして、コーディングから作成される類似度行列は、対称行列として得られるのですが、
対称行列ではなくて下記の【例】ように、すべての組み合わせに対する値が行列で類似度行列を得ることは可能でしょうか。

最終成果物としては、csv形式もしくはエクセルの形式で得られれば、どのような方法でも大丈夫です。

----
【例】
列1 列2 共起度
語n1 語n1 1.0
語n1 語n2 0.113
語n1 語n3 0.224
・・・
語nr 語n1 0.114
語nr 語n2 0.424
・・・
語nr 語nr-1 0.979
語nr 語nr 0.322
----

つまり、語が全てでn個の場合、n(n-1)/2行の形でデータが入手できれば…とRを眺めたりしながら考えておりますが、行き詰ってしまいました。

お忙しいところ、恐縮ですが、お時間のあるときにご返信いただけますと大変ありがたいです。
よろしくお願いいたします。


  [No.1960] Re: KhCoderでの類似度行列について 投稿者:HIGUCHI Koichi  投稿日:2015/02/04(Wed) 21:26:06

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

こちらのスレッドの方法ではいかがでしょう。
http://khcoder.info/cgi-bin/bbs_khn/khcf.cgi?no=741&reno=577&oya=577&mode=msgview

共起ネットワークに描かれている共起関係をリストアップ(gephi-edges.csv
)する方法が載っているのですが、こうした形ではいかがでしょうか。ちょっ
と違うでしょうか。


  [No.1964] Re: KhCoderでの類似度行列について 投稿者:Honda  投稿日:2015/02/05(Thu) 22:27:34

樋口様

お忙しいところ早速ご対応いただきましてありがとうございました。
ご指摘いただいた方法にて試させていただいて、要素をリストアップした表を得ることができました。

しかし、今回行き詰っておりますのは、
2つの要素の全ての組み合わせについて共起度をリストアップした表を得る点においてです。

ご指摘いただきました方法ですと、各要素単品の頻度表
(例:10の要素に対して10行の表)
を得ることはできるのですが、

全ての要素の組み合わせについて共起度をリストアップした表
(例:10の要素に対して10×9÷2行の表)
を得ることができず、行き詰っております。

エクセルのマクロ(もしくは無理やりにエクセルの式)でやれるにはやれるのですが、KhCoderでもっとスマートにできないものか、と今回ご質問させていただきました。

お忙しいところすみません。
ご都合のいい時で構いませんので、ご回答いただけますとたいへんありがたいです。

もしKhCoderではできないということであれば、こちらでなんとかがんばってみます。


(補足)
----
【例】
列1 列2 共起度
語n1 語n1 1.0
語n1 語n2 0.113
語n1 語n3 0.224
・・・
語nr 語n1 0.114
語nr 語n2 0.424
・・・
語nr 語nr-1 0.979
語nr 語nr 0.322
----

つまり、語が全てでn個の場合、n(n-1)/2行の行の表が得られるとたいへんありがたいです。


  [No.1966] Re: KhCoderでの類似度行列について 投稿者:HIGUCHI Koichi  投稿日:2015/02/08(Sun) 23:28:46

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

> ご指摘いただきました方法ですと、各要素単品の頻度表
> (例:10の要素に対して10行の表)
> を得ることはできるのですが、

先に挙げたスレッドでは2つのファイルを出力しており、それぞれの語の頻度
を出力するのは1つ目のファイル(gephi-nodes.csv)ですね。

2つ目のファイル(gephi-edges.csv)は、かなりご要望の形式に近かったもの
と思います。ただ、共起ネットワークに表示されている、相対的に強い共起関
係のみしか出力されない点が、ご要望の形式と違っていたでしょうか。

その場合は先に挙げたスレッドのRのコード部分を以下のように変えて下さい。

※以下のコードそのままであれば、Rでの「ディレクトリの選択」を飛ばして
も、C:\khcoderフォルダに「jaccard.csv」が出力されます。

#---------------------------------------------------------------------
V <- NULL
N <- 1
for (i in 2:nrow(d)){
    for (h in 1:N){
        V$n1 <- c(V$n1, rownames(d)[i])
        V$n2 <- c(V$n2, colnames(d)[h])
        V$ja <- c(V$ja, d[i,h])
    }
    N <- N + 1
}

write.table( 
    data.frame( 
        word1 = V$n1,
        word2 = V$n2,
        Jaccard = V$ja
    ),
    "C:/khcoder/jaccard.csv",
    col.names = T,
    row.names = F,
    quote     = F,
    sep       = ","
)
#---------------------------------------------------------------------

※Excelでマクロを書くか、Rでコードを書くかだけの違いで、スマートかどう
かはちょっと分かりませんが…


  [No.1967] Re: KhCoderでの類似度行列について 投稿者:Honda  投稿日:2015/02/11(Wed) 23:06:53

樋口様

年度末のお忙しい時期に、たいへん丁寧にご対応いただきましてありがとうございました。
早速ご返信いただきましたのに、仕事に埋もれておりご返信遅くなりまして失礼いたしました。
完璧なご回答です、ありがとうございました。

最後のコメント、さすがです!
こちらは自分の研究に夢中になっていて気づきませんでした。。
いずれにしても、ご対応は大変にスマートで明快です!ありがとうございました!