簡體   English   中英

使用R-lsa包計算語義空間中文檔之間的余弦相似性

[英]Compute cosine similarities between documents in semantic space, using R-lsa package

我正在嘗試使用R語言對類似文檔進行聚類。 第一步,我為我的文檔集計算術語文檔矩陣。 然后我為先前創建的術語 - 文檔矩陣創建潛在的語義空間。 我決定在我的實驗中使用LSA,因為使用term-document矩陣進行聚類的結果非常糟糕。 是否可以使用創建的LSA空間來構建不相似矩陣(使用余弦度量)? 我需要這樣做是因為我正在使用的聚類算法需要一個相異矩陣作為輸入。

這是我的代碼:

require(cluster);
require (lsa);

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

我需要從LSA空間構建一個相異矩陣(使用余弦測量),所以我可以按如下方式調用聚類算法:

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

有什么建議么?

提前致謝!

要比較LSA空間中的兩個文檔,您可以獲取lsa()返回的$sk$dk矩陣的叉積,以獲取較低維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在低維空間中的情況(通常是余弦相似度)。“

您可以使用包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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM