我的任務是將一個語料庫中的文檔與餘弦相似度進行比較。我使用tm包並獲取TermDocumentMatrix(以td-idf形式)tdm。下面的任務應該是簡單的here計算T中TermDocumentMatrix中兩個文檔之間的餘弦相似度R中的包裝
d <- dist(tdm, method="cosine")
或
cosine_dist_mat <- 1 - crossprod_simple_triplet_matrix(tdm)/(sqrt(col_sums(tdm^2) %*% t(col_sums(tdm^2))))
陳述但是,在我的TDM項數是相當大的,超過12萬(有大約50,000文件)。 R超出了處理這種矩陣的能力。我的RStudio崩潰了幾次。
我的問題是1)我該如何處理這樣一個大矩陣並得到成對相加(120,000 * 120,000)餘弦相似度? 2)如果不可能,我怎麼能只得到只有兩個文件的餘弦相似度在同一時間?假設我想像
sim10_21<-cosine_similarity(tdm, d1=10,d2=21)
文件10和21,然後東西之間的相似性。如果TDM是一個簡單的矩陣,我可以做計算上TDM [,C(10,21)。然而,轉換TDM向矩陣正是我不能處理。我的問題最終歸結爲如何在tdm上進行矩陣式計算。