私は Apache Spark と Scala を使用しています。String,Int の RDD があります
val counts =words.map(word => (word, 1)).reduceByKey((a,b) => (a + b))
今は RDD をキーで減らしましたが、似ている単語も減らす機能をもう 1 つ追加したいと思います。
私は、レーベンシュタイン距離、ユークリッド距離、またはコサイン距離を使用することを考えました。
では、この関数の 1 つを適用して 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)
}