私の仕事はコーパスの文書を余弦類似度で比較することです。私はtmパッケージを使用し、TermDocumentMatrix(td-idf形式)tdmを取得します。次のタスクは、heretmのTermDocumentMatrixの2つの文書間の余弦類似度を計算する
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における用語の数は、(周りに50,000の文書で)、12万以上の非常に大きいはずです。このような行列を扱うことはRの能力を超えている。 私のRStudioが数回クラッシュしました。
私の質問は1)どうすればこのような大きな行列を扱い、ペアワイズ(120,000 * 120,000)のコサイン類似度を得ることができますか? 2)不可能な場合は、一度に2つの文書のコサイン類似度を得るにはどうすればよいですか?
sim10_21<-cosine_similarity(tdm, d1=10,d2=21)
のようなものTDMは、単純マトリクスであれば、私はTDMで計算を行うことができます[、C(10,21)]、その後、私は文書10と21の間の類似性をするとします。しかし、tdmを行列に変換することはまさに私が扱うことができないものです。私の質問は、最終的に、tdmでの行列のような計算を行う方法にまでわかります。