您的位置:首页 > 编程语言 > Java开发

Java代码——计算两个HashMap的余弦相似度

2014-04-17 10:49 176 查看
1.一种效率较高的HashMap遍历方法:

Map map = new HashMap();
  Iterator iter = map.entrySet().iterator();
  while (iter.hasNext()) {
     Map.Entry entry = (Map.Entry) iter.next();
     Object key = entry.getKey();
     Object val = entry.getValue();
  }


2.余弦相似度计算:



3.使用HashMap来存储两个向量,并计算其余弦相似度:

public class Similarity {
public static float computeSim(HashMap<String,Float> map1,HashMap<String,Float> map2){
float result = 0;
Iterator iter1 = map1.entrySet().iterator();
Iterator iter2 = map2.entrySet().iterator();
Float sum1 = (float) 0;
Float sum2 = (float) 0;
Float sum3 = (float) 0;
Float v1,v2;
while(iter2.hasNext()){
Entry entry = (Entry) iter2.next();
v2 = (Float) entry.getValue();
sum2+=v2*v2;
}
String key;
while(iter1.hasNext()){
Entry entry = (Entry) iter1.next();
v1 = (Float) entry.getValue();
key = (String) entry.getKey();
sum1 += v1*v1;
if(map2.containsKey(key)){
v2 = map2.get(key);
sum3 += v1*v2;
}
}
result = sum3/(sum1+sum2);
return result;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: