2013-03-05 6 views
2

R 언어를 사용하여 유사한 문서를 클러스터링하려고합니다. 첫 번째 단계로, 필자는 제 문서 세트에 대한 용어 - 문서 행렬을 계산합니다. 그런 다음 이전에 작성된 용어 - 문서 행렬에 대한 잠재 의미 공간을 작성합니다. 용어 문서 행렬만을 사용하여 클러스터링 한 결과는 끔찍했기 때문에 LSA를 사용하기로 결정했습니다. 생성 된 LSA 공간을 사용하여 비선형 매트릭스 (코사인 측정 값 포함)를 작성할 수 있습니까? 내가 사용하고있는 클러스터링 알고리즘은 입력으로 비평 행렬을 필요로하기 때문에이 작업을 수행해야합니다. 내가 LSA 공간에서 (코사인 척도를 사용) 유사성 행렬을 구축 할 필요가R-lsa 패키지를 사용하여 의미 공간에서 문서 간의 코사인 유사성 계산

require(cluster); 
require (lsa); 

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

, 그래서 다음과 같이 내가 클러스터 알고리즘을 호출 할 수 있습니다 : 여기

내 코드입니다

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

하나를 제안?

미리 감사드립니다.

답변

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 
+0

내 주요 문제는 내가 만든 LSA 공간을 사용하여 비평 행렬을 계산해야한다는 것입니다. 어떻게하는지 아십니까? – lucasbls1

5

, 당신은 lsa() 반환 얻을 수있는 $sk$dk 행렬의 외적을 할 수있는 모든 낮은 차원의 LSA 공간에있는 문서. 여기에 내가했던 일이야 : 당신이 지금 * d_j와 SK의 * d_q 벡터의 SK를 비교하여 "저 차원 공간에 얼마나 관련 문서 J와 q 볼 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를 참조하십시오 (일반적으로 코사인 유사성에 의해). "