2

R 言語を使用して同様のドキュメントをクラスター化しようとしています。最初のステップとして、ドキュメント セットの用語-ドキュメント マトリックスを計算します。次に、前に作成した用語ドキュメント マトリックスの潜在的な意味空間を作成します。用語と文書の行列だけを使用したクラスタリングの結果がひどかったため、実験で LSA を使用することにしました。作成された LSA 空間を使用して、非類似度行列 (余弦測定を使用) を作成することは可能ですか? これを行う必要があるのは、使用しているクラスタリング アルゴリズムが非類似度行列を入力として必要とするためです。

これが私のコードです:

require(cluster);
require (lsa);

myMatrix = textmatrix("/home/user/DocmentsDirectory");
myLSAspace = lsa(myMatrix, dims=dimcalc_share());

LSA 空間から (余弦測定を使用して) 非類似度行列を構築する必要があるため、次のようにクラスター アルゴリズムを呼び出すことができます。

clusters = pam(dissimilartiyMatrix,10,diss=TRUE);

助言がありますか?

前もって感謝します!

4

2 に答える 2

5

$skLSA 空間で 2 つのドキュメントを比較するには、と$dkを返す行列の外積をとってlsa()、低次元の LSA 空間のすべてのドキュメントを取得します。これが私がしたことです:

lsaSpace <- lsa(termDocMatrix)

# lsaMatrix now is a k x (num doc) matrix, in k-dimensional LSA space
lsaMatrix <- diag(lsaSpace$sk) %*% t(lsaSpace$dk)

# Use the `cosine` function in `lsa` package to get cosine similarities matrix
# (subtract from 1 to get dissimilarity matrix)
distMatrix <- 1 - cosine(lsaMatrix)

http://en.wikipedia.org/wiki/Latent_semantic_analysisを参照してください。ここでは、LSA の結果を使用して、「ベクトル sk*d_j と sk*d_q を比較することにより、関連するドキュメント j と q が低次元空間にどのようにあるかを確認できます。 (通常、コサイン類似度による)。」

于 2013-11-26T17:57:46.480 に答える
2

パッケージを使用できますarules。ここでは例を示します。

 library(arules)
 dissimilarity(x=matrix(seq(1,10),ncol=2),method='cosine')
          1         2         3         4
2 -4.543479                              
3 -4.811989 -5.231234                    
4 -5.080052 -5.563952 -6.024433          
5 -5.343350 -5.885304 -6.395740 -6.877264
于 2013-03-05T17:09:39.507 に答える