我正在使用 Apache Spark 和 Scala。我有一个 String,Int 的 RDD
val counts =words.map(word => (word, 1)).reduceByKey((a,b) => (a + b))
现在我通过 Key 减少了 RDD,但我想添加另一个功能来减少相似的单词。
我虽然使用 Levenshtein 距离、欧几里得距离或余弦距离。
那么,我怎样才能应用这些功能之一来减少我的 RDD?
例子:
RDD -> (forks,12), (fork,4), (chair,15) , (table,1), (tables,11)
承认相似度算法有效,我怎样才能获得减少的 RDD,如:
RDD -> (fork,16), (table,12), (chair,15)
我试过类似的东西:
counts.foldLeft(){(x,y) =>
if(x._1.euclideanDistance(y._1) > 0.9)
(x,x._2+y._2)
}