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

来源:互联网 发布:淘宝众筹玩法 编辑:程序博客网 时间:2024/04/30 13:03

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;    }}


0 0
原创粉丝点击