Java实现余弦匹配算法
最近在做一个通讯交友的项目,项目中有一个这样的需求,通过用户的兴趣爱好,为用户寻找推荐兴趣相近的好友。其实思路好简单,把用户的兴趣爱好和其他用户的兴趣爱好进行一个匹配,当他们的爱好相似度比较高的时候就给双方进行推荐。那么如何进行比较是一个问题,其实我们可以通过余弦匹配算法来对用户的兴趣爱好进行比较,根据计算出来的值来得到一个兴趣爱好相近好友列表,并进行排序。
因为我做的项目是Android端的,所以算法是通过Java实现的,废话不过多说了,下面是算法的实现:
package com;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
public class SimilarDegreeByCos {
public static double getSimilarDegree(String str1, String str2)
{
//创建向量空间模型,使用map实现,主键为词项,值为长度为2的数组,存放着对应词项在字符串中的出现次数
Map vectorSpace = new HashMap();
int[] itemCountArray = null;//为了避免频繁产生局部变量,所以将itemCountArray声明在此
//以空格为分隔符,分解字符串
String strArray[] = str1.split(" ");
for(int i=0; i
效果:
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!



