演算法簡介:
levenshtein distance,又稱編輯距離,指的是兩個字串之間,由乙個轉換成另乙個所需的最少編輯操作次數。
許可的編輯操作包括將乙個字元替換成另乙個字元,插入乙個字元,刪除乙個字元。
編輯距離的演算法是首先由**科學家levenshtein提出的,故又叫levenshtein distance。
/**
* time:2019/8/2
* author:jimmy wang
* email:[email protected]
* blog:
* description:
*/public class stringutils
if (m == 0)
d = new int[n + 1][m + 1];
// 初始化第一列
for (i = 0; i <= n; i++)
// 初始化第一行
for (j = 0; j <= m; j++)
for (i = 1; i <= n; i++) else
// 左邊+1,上邊+1, 左上角+temp取最小
d[i][j] = min(d[i - 1][j] + 1, d[i][j - 1] + 1, d[i - 1][j - 1] + temp);}}
return d[n][m];
}/**
* 獲取最小的值
*/private static int min(int one, int two, int three)
/*** 獲取兩字串的相似度
*/public static float getsimilarityratio(string str, string target)
public static void main(string args)
}
演算法原理:
該演算法的解決是基於動態規劃的思想,具體如下:
設 s 的長度為 n,t 的長度為 m。如果 n = 0,則返回 m 並退出;如果 m=0,則返回 n 並退出。否則構建乙個陣列 d[0..m, 0..n]。
將第0行初始化為 0..n,第0列初始化為0..m。
依次檢查 s 的每個字母(i=1..n)。
依次檢查 t 的每個字母(j=1..m)。
如果 s[i]=t[j],則 cost=0;如果 s[i]!=t[j],則 cost=1。將 d[i,j] 設定為以下三個值中的最小值:
緊鄰當前格上方的格的值加一,即 d[i-1,j]+1
緊鄰當前格左方的格的值加一,即 d[i,j-1]+1
當前格左上方的格的值加cost,即 d[i-1,j-1]+cost
重複3-6步直到迴圈結束。d[n,m]即為萊茵斯坦距離。
編輯距離演算法求文字相似度
編輯距離,又稱levenshtein距離 萊文斯坦距離也叫做edit distance 是指兩個字串之間,由乙個轉成另乙個所需的最少編輯操作次數,如果它們的距離越大,說明它們越是不同。許可的編輯操作包括將乙個字元替換成另乙個字元,插入乙個字元,刪除乙個字元。在概念中,我們可以看出一些重點那就是,編輯...
文字相似度計算 編輯距離
一 概念 編輯距離 編輯距離,又稱levenshtein距離,是指兩個字串之間,由乙個轉成另乙個所需的最少編輯操作次數。許可的編輯操作包括將乙個字元替換成另乙個字元,插入乙個字元,刪除乙個字元。如 將sailn一字轉成failing sailn failn s f 插入,刪除 sailn faili...
短文本相似度 編輯距離演算法及其應用
最近因為在做短文本字串相似度比較的事情,重溫了一下編輯距離演算法及其應用。編輯距離,又稱levenshtein距離,是指兩個字串之間,由乙個轉成另乙個所需的最少編輯操作次數。許可的編輯操作包括將乙個字元替換成另乙個字元,插入乙個字元,刪除乙個字元。例如將kitten一字轉成sitting kitte...