<pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

          <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

          <p id="bbfd9"></p>

          <p id="bbfd9"><cite id="bbfd9"></cite></p>

            <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

            <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
            <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>

            Java基于余弦方法實現的計算相似度算法示例

            時間:2025-12-09 21:48:11 java語言

            Java基于余弦方法實現的計算相似度算法示例

              引導語:Java 編程語言的風格十分接近C、C++語言。Java是一個純的面向對象的程序設計語言,以下是小編整理的Java基于余弦方法實現的計算相似度算法示例,歡迎參考閱讀!

              (1)余弦相似性

              通過測量兩個向量之間的角的余弦值來度量它們之間的相似性。0度角的余弦值是1,而其他任何角度的余弦值都不大于1;并且其最小值是-1。從而兩個向量之間的角度的余弦值確定兩個向量是否大致指向相同的方向。所以,它通常用于文件比較。

              相關介紹可參考百度百科:余弦相似性

              (2)算法實現的中未使用權重(IDF ---逆文檔頻率),使用詞項的出現次數作為向量空間的值。

              import java.util.HashMap;

              import java.util.Iterator;

              import java.util.Map;

              public class SimilarDegreeByCos

              {

              /*

              * 計算兩個字符串(英文字符)的相似度,簡單的余弦計算,未添權重

              */

              public static double getSimilarDegree(String str1, String str2)

              {

              /pic/p>

              MapvectorSpace = new HashMap();

              int[] itemCountArray = null;/pic/p>

              /pic/p>

              String strArray[] = str1.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 = str2.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);

              }

              }

              /pic/p>

              double vector1Modulo = 0.00;/pic/p>

              double vector2Modulo = 0.00;/pic/p>

              double vectorProduct = 0.00; /pic/p>

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

              /pic/p>

              return (vectorProduct/(vector1Modulo*vector2Modulo));

              }

              /*

              *

              */

              public static void main(String args[])

              {

              String str1 = "gold silver truck";

              String str2 = "Shipment of gold damaged in a fire";

              String str3 = "Delivery of silver arrived in a silver truck";

              String str4 = "Shipment of gold arrived in a truck";

              String str5 = "gold gold gold gold gold gold";

              System.out.println(SimilarDegreeByCos.getSimilarDegree(str1, str2));

              System.out.println(SimilarDegreeByCos.getSimilarDegree(str1, str3));

              System.out.println(SimilarDegreeByCos.getSimilarDegree(str1, str4));

              System.out.println(SimilarDegreeByCos.getSimilarDegree(str1, str5));

              }

              }

            【Java基于余弦方法實現的計算相似度算法示例】相關文章:

            java算法實現排列組合的方法介紹03-08

            權重隨機算法的java實現03-11

            冒泡排序算法原理及JAVA實現代碼方法09-26

            java通用組合算法如何實現10-04

            JAVA簡單選擇排序算法及實現02-10

            希爾排序算法的C語言實現示例02-06

            快速排序算法及C#版的實現示例12-06

            java構造函數實現代碼示例12-15

            如何實現java漢諾塔遞歸算法09-05

                    <pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

                    <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

                    <p id="bbfd9"></p>

                    <p id="bbfd9"><cite id="bbfd9"></cite></p>

                      <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

                      <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
                      <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
                      飘沙影院