java 相似度計算
阿新 • • 發佈:2019-01-28
相似度計算的java程式碼:
// 相似度計算 public double xiangsidu(String a, String b) { // 相似度公式:1 - 最小編輯距離/兩個串中較長的長度 int n = a.length(); int m = b.length(); if (n < 1 && m < 1) return 0; // 兩個空串 return 1 - minEditDist(a, b) / Math.max(n, m); } // 最小編輯距離計算 public double minEditDist(String a, String b) { int n = a.length(); int m = b.length(); if (n < 1 || m < 1) return (n + m) * 1.00; // 兩個空串 double[][] d = new double[n + 1][m + 1]; double cost; for (int i = 0; i <= n; ++i) d[i][0] = i; for (int i = 0; i <= m; ++i) d[0][i] = i; for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { if (a.charAt(i - 1) == b.charAt(j - 1)) cost = 0; else cost = 1; d[i][j] = Minimum(d[i - 1][j] + 1, d[i][j - 1] + 1, d[i - 1][j - 1] + cost); } } return d[n][m]; } private double Minimum(double a, double b, double c) { double mi = a; if (b < mi) { mi = b; } if (c < mi) { mi = c; } return mi; }