我有两个文件,其中包含 id 和流派。流派列包含一些短语和句子。我需要计算流派和与流派相关的单词之间的相似度。
第一个文件示例:
相关类型示例:
代码:
val lines=Source.fromURL(Source.getClass().getResource("file:///usr/local/spark/dataset/algorithm3/result/part-r-00000-85c84730-ce6b-4b0f-8278-dcafa33f5818.csv")).mkString("\n")
val lines2=Source.fromURL(Source.getClass().getResource("file:///usr/local/spark/dataset/algorithm3/funny/part-r-00000-3460ee84-a498-4e25-a55c-3aba962febe2.csv")).mkString("\n")
import java.nio.file.Files
import java.nio.file.Paths
def cosineSimilarity(x: Array[Double], y: Array[Double]): Double = {
require(x.size == y.size)
dotProduct(x, y)/(magnitude(x)*magnitude(y))
}
def dotProduct(x: Array[Double], y: Array[Double]): Double = {
(for((a, b)<-x zip y) yield a*b).sum
}
def magnitude(x: Array[Double]): Double = {
math.sqrt(x.map(i => i*i).sum)
}
如何衡量相似度得分?