簡體   English   中英

使用Apache Spark在TFIDF上的余弦相似度

[英]Cosine similarity on TFIDF using apache spark

我正在嘗試使用Apache Spark在TFIDF上計算余弦相似度矩陣。 這是我的代碼:

def cosSim(input: RDD[Seq[String]]) = {
  val hashingTF = new HashingTF()
  val tf = hashingTF.transform(input)
  tf.cache()
  val idf = new IDF().fit(tf)
  val tfidf = idf.transform(tf)
  val mat = new RowMatrix(tfidf)
  val sim = mat.columnSimilarities
  sim
}

我在輸入中大約有3000行,但是如果我執行sim.numRows()或sim.numCols(),我將看到1048576而不是3K,這是因為val tfidf和val mat的大小均為3K * 1048576其中1048576是tf功能的數量。 也許要解決這個問題,我必須移調墊子,但是我不知道該怎么做。

你可以試試:

import org.apache.spark.mllib.linalg.distributed._

val irm = new IndexedRowMatrix(rowMatrix.rows.zipWithIndex.map {
   case (v, i) => IndexedRow(i, v)
})

irm.toCoordinateMatrix.transpose.toRowMatrix.columnSimilarities

暫無
暫無

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

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