美文网首页
余弦计算两个字符串的相似度

余弦计算两个字符串的相似度

作者: yuan_dongj | 来源:发表于2018-05-18 10:34 被阅读0次
private static double getSimilarDegree(String source, String target) {
        //创建向量空间模型,使用map实现,主键为词项,值为长度为2的数组,存放着对应词项在字符串中的出现次数
        Map<String, int[]> vectorSpace = new HashMap<>(16);
        int[] itemCountArray ;//为了避免频繁产生局部变量,所以将itemCountArray声明在此
        //以;为分隔符,分解字符串
        String strArray[] = source.split(";");
        for(int i=0; i<strArray.length; ++i) {
            if(vectorSpace.containsKey(strArray[i])) {
                ++(vectorSpace.get(strArray[i])[0]);
            }else {
                itemCountArray = new int[2];
                itemCountArray[0] = 1;
                itemCountArray[1] = 0;
                vectorSpace.put(strArray[i], itemCountArray);
            }
        }
        strArray = target.split(";");
        for(int i=0; i<strArray.length; ++i) {
            if(vectorSpace.containsKey(strArray[i])) {
                ++(vectorSpace.get(strArray[i])[1]);
            } else {
                itemCountArray = new int[2];
                itemCountArray[0] = 0;
                itemCountArray[1] = 1;
                vectorSpace.put(strArray[i], itemCountArray);
            }
        }
        //计算相似度
        double vector1Modulo = 0.00;//向量1的模
        double vector2Modulo = 0.00;//向量2的模
        double vectorProduct = 0.00; //向量积
        Iterator iter = vectorSpace.entrySet().iterator();
        while(iter.hasNext()) {
            Map.Entry entry = (Map.Entry)iter.next();
            itemCountArray = (int[])entry.getValue();
            vector1Modulo += itemCountArray[0]*itemCountArray[0];
            vector2Modulo += itemCountArray[1]*itemCountArray[1];
            vectorProduct += itemCountArray[0]*itemCountArray[1];
        }
        vector1Modulo = Math.sqrt(vector1Modulo);
        vector2Modulo = Math.sqrt(vector2Modulo);
        //返回相似度
        return (vectorProduct / (vector1Modulo * vector2Modulo));
    }

相关文章

  • 余弦相似度计算

    1. 余弦相似度: 余弦相似度,又称为余弦相似性,是通过计算两个向量的夹角余弦值来评估他们的相似度。余弦相似度将向...

  • 20-余弦相似度及其R实现

    1 余弦相似度 余弦相似度 (Cosine Similarity) 通过计算两个向量的夹角余弦值来评估他们的相似度...

  • 余弦相似度算法与kotlin实现

    余弦相似度计算 余弦相似度用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小。余弦值越接近1,就表明夹角...

  • Python 使用sklearn计算余弦相似度

    背景 在计算相似度时,常常用到余弦夹角来判断相似度,Cosine(余弦相似度)取值范围[-1,1],当两个向量的方...

  • 余弦相似度理解及shengxin中应用

    cosin similarity(余弦相似度) 1,它最常见的应用是计算文本相似度。将文本转换为向量 2,余弦相似...

  • 余弦相似度与余弦距离

    余弦相似度 即计算两个向量间的夹角的余弦值,计算公式如下: 根据线性代数的知识,余弦是通过点积和模长来计算。在向量...

  • 余弦相似度

    1 余弦相似度 余弦相似度是通过测量两个向量之间夹角的余弦值来度量它们之间的相似度的,该结果与向量的长度无关,仅仅...

  • 余弦相似度算法

    相信大家对这个概念并不陌生,废话少说,先来炒点现饭! 概念 余弦相似度,又称为余弦相似性,是通过计算两个向量的夹角...

  • 模型评估——余弦距离的应用

    余弦相似度和余弦距离: 余弦相似度取值范围为[-1,1] 余弦距离:1-余弦相似度,取值为 [0,2] 余弦距离和...

  • NLP详解

    (一)余弦相似度、向量空间模型 1、相似度 • 相似度度量:计算个体间相似程度• 相似度值越小,距离越大,相似度值...

网友评论

      本文标题:余弦计算两个字符串的相似度

      本文链接:https://www.haomeiwen.com/subject/uanwdftx.html