【问题标题】:Cosine similarity on TFIDF using apache spark使用 apache spark 在 TFIDF 上的余弦相似度
【发布时间】:2017-03-26 18:03:36
【问题描述】:

我正在尝试使用 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 特征的数量。也许为了解决这个问题我必须转置mat,但我不知道该怎么做。

【问题讨论】:

    标签: scala apache-spark apache-spark-mllib tf-idf cosine-similarity


    【解决方案1】:

    你可以试试:

    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
    

    【讨论】:

    • 能否请您分享相同的 PySpark 版本。我已经创建了 IDF 模型并希望找到余弦相似度。
    猜你喜欢
    • 2016-08-14
    • 2014-09-17
    • 1970-01-01
    • 2018-04-11
    • 2019-12-23
    • 2020-08-12
    • 2011-01-01
    • 1970-01-01
    相关资源
    最近更新 更多