ssk(字串核)計算相似度

2021-08-09 21:08:25 字數 798 閱讀 2750

字串核通過將兩個字串表示成子串組成的特徵空間來計算兩者的相似度。如字串car, cat, bat, bar,以長度為2的子串來表示它們,表示結果如下:

其中 γ表示字串的權重,γ的指數表示子串的距離(子串不要求連續),則cat 和car的核計算如下:

kernel(cat,cat)=2γ^4+γ^6.(向量內積)

kernel(car, car)=2γ^4+γ^6

kernel(car,cat)=γ^4(未歸一化的核)

則car和cat的歸一化後的核為:kernal(car,cat)/sqrt(kernel(cat,cat)*kernel(car, car))

=γ^4/sqrt((2γ^4+γ^6)*(2γ^4+γ^6))=1/(2+γ^2)

特例:當字串中包含重複的子串時該如何處理呢?如s1="哈哈哈" , s2="孟哈哈" 定義子串的長度為2,則s1,s2中共有兩個不同的子串"哈哈" "孟哈".此時"哈哈"在s1中的距離有2、3. "孟哈"在s2的距離有2、3。根據阿里雲機器學習元件中字串相似度ssk得出的結果,推導可知此時應該如下計算:

哈哈 孟哈

哈哈哈 2*γ^2+γ^3 0

孟哈哈 γ^2 γ^2+γ^3

則kernel("哈哈哈","孟哈哈")=(2*γ^2+γ^3)*γ^2/sqrt(((2*γ^2+γ^3)^2)*[γ^4+(γ^2+γ^3)^2])

=(2+γ)/sqrt((4+4γ+γ^2)*(2+2γ+γ^2))

計算字串的相似度

程式設計之美223頁的題目。如果他們的第乙個字元相同,那麼計算接下來的字串的距離。如果他們的第乙個字元不同,那麼 1 刪除a的第乙個字元,計算a接下來的字串和b的距離 2 刪除b的第乙個字元,計算b接下來的字串和a的距離 3 修改a的第乙個字元為b的第乙個字元,計算a接下來的字串和b接下來的字串距離...

字串的相似度計算

一 基於編輯距離的字串相似度計算 兩個字串之間的相似度可以用編輯距離來定義。所謂編輯,指的是,對字串中的任一字元進行插入,刪除和替換這三種操作。經過一定步驟的編輯,乙個字串可以變換為另乙個字串,那麼最少的編輯步數稱為兩個字串的編輯距離。這是乙個遞迴或動態規劃的問題。比如長度分別為m,n的字串str1...

計算字串的相似度

程式設計之美 3.3節 計算字串的相似度 問題 對於給定的兩個字串,用最少的操作 插入 刪除和替換,使得兩個字串相同。找出這個最少需要操作的步數。解法 1 一步操作後,再將a 2 end 和b 2 end 程式設計相同的字串 2 一步操作後,再將a 1 end 和b 2 end 程式設計相同的字串 ...