文字相似度計算 編輯距離

2021-09-02 03:55:09 字數 1194 閱讀 7344

一、概念

編輯距離:編輯距離,又稱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收藏 簡單講解 文字相似度計算在資訊檢索 資料探勘 機器翻譯 文件複製檢測等領域有著廣泛的應用。比如 控制,我們假設你開發了乙個微博 並且已經把世界上罵人的句子都已經收錄進了資料庫,那麼當乙個使用者發微博時會先跟罵人句子的資料庫進行比較,如果符合裡面的句子就不讓使用者發出。通常...