VSM (Vector Space Model) 向量空间模型算法,可用于文档排名,推荐系统
def main(args: Array[String]): Unit = {
val a1= Array(1,2,5)
val a2= Array(3,4,6)
val r = vcos(a1, a2)
println(r)
}
/*取模*/
def vmod(a:Array[Int]):Double={
return math.sqrt{a.map{x => x*x}.sum}
}
/*两个向量的内积和*/
def vmulti(x:Array[Int],y:Array[Int])={
val multiArr = ArrayBuffer[Double]()
for(i <- 0 until x.length; j <- 0 until y.length; if i==j){
if(i == j) multiArr.append((x(i)*y(i)).toDouble)
}
multiArr.sum
}
/*余弦*/
def vcos(x:Array[Int],y:Array[Int])={
vmulti(x, y)/(vmod(x)*vmod(y))
}
执行结果