一、概念
編輯距離:編輯距離,又稱levenshtein距離,是指兩個字串之間,由乙個轉成另乙個所需的最少編輯操作次數。許可的編輯操作包括將乙個字元替換成另乙個字元,插入乙個字元,刪除乙個字元。
如:將sailn一字轉成failing:
sailn--->failn: (s->f)插入,刪除
sailn--->failin: (+i) 插入
sailn--->failing: (+g) 插入
二、思想
函式edit(i, j),它表示第乙個字串的長度為i的子串到第二個字串的長度為j的子串的編輯距離。
簡單描述動態規劃公式:
if i == 0 且 j == 0,edit(i, j) = 0
if i == 0 且 j > 0,edit(i, j) = j
if i > 0 且j == 0,edit(i, j) = i
if i ≥ 1 且 j ≥ 1 ,edit(i, j) == min,當第乙個字串的第i個字元不等於第二個字串的第j個字元時,f(i, j) = 1;否則,f(i, j) = 0。
三、實現
int min(int a, int b)
int edit(string str1, string str2)
for(int i = 0 ;i < max1 + 1 ;i++)
for(int i = 0 ;i < max2 + 1;i++)
for(int i = 1 ;i < max1 + 1 ;i++)
else
ptr[i][j] = min(temp, ptr[i-1][j-1] + d);
} }cout << "**************************" << endl;
for(int i = 0 ;i < max1 + 1 ;i++)
cout << endl;
} cout << "**************************" << endl;
int dis = ptr[max1][max2];
for(int i = 0; i < max1 + 1; i++)
delete ptr;
ptr = null;
return dis;
}
基於詞的編輯距離文字相似度計算
分詞結果放在list裡面 基於詞的編輯距離計算 public static float levenshtein arraylistlistfirst,arraylistlistsecond for int a 0 a len2 a 計算兩個字元是否一樣,計算左上的值 int temp for int...
編輯距離演算法求文字相似度
編輯距離,又稱levenshtein距離 萊文斯坦距離也叫做edit distance 是指兩個字串之間,由乙個轉成另乙個所需的最少編輯操作次數,如果它們的距離越大,說明它們越是不同。許可的編輯操作包括將乙個字元替換成另乙個字元,插入乙個字元,刪除乙個字元。在概念中,我們可以看出一些重點那就是,編輯...
計算文字相似度
計算文字相似度 推薦2收藏 簡單講解 文字相似度計算在資訊檢索 資料探勘 機器翻譯 文件複製檢測等領域有著廣泛的應用。比如 控制,我們假設你開發了乙個微博 並且已經把世界上罵人的句子都已經收錄進了資料庫,那麼當乙個使用者發微博時會先跟罵人句子的資料庫進行比較,如果符合裡面的句子就不讓使用者發出。通常...