python如何實現Dice系數
python實現Dice系數
維基百科,自由的百科全書
跳到導航跳到搜索
Disambig gray.svg 關于與“Dice系數”名稱相近或相同的條目,請見“Dice”。
Dice系數, 根據 Lee Raymond Dice[1] 命名,是一種集合相似度度量函數,通常用于計算兩個樣本的相似度:
{\displaystyle s={\frac {2|X\cap Y|}{|X|+|Y|}}} {\displaystyle s={\frac {2|X\cap Y|}{|X|+|Y|}}}
它和Sørensen 相似度指數相同, 也稱作Sørensen-Dice系數。
它在形式上和Jaccard指數沒多大區(qū)別,但是有些不同的性質。
和Jaccard類似,它的范圍為0到1。 與Jaccard不同的是,相應的差異函數
{\displaystyle d=1-{\frac {2|X\cap Y|}{|X|+|Y|}}} {\displaystyle d=1-{\frac {2|X\cap Y|}{|X|+|Y|}}}
不是一個合適的距離度量措施,因為它沒有三角形不等性的性質。
例如給定 {a}, , 和 {a,b}, 前兩個集合的距離為1, 而第三個集合和其他任意兩個集合的距離為三分之一。
與Jaccard類似, 集合操作可以用兩個向量 A 和B的操作來表示:
{\displaystyle s_{v}={\frac {2|A\cdot B|}{|A|^{2}+|B|^{2}}}} {\displaystyle s_{v}={\frac {2|A\cdot B|}{|A|^{2}+|B|^{2}}}}
上式給出了兩個向量的距離輸出,也給出了更一般情況下向量之間的相似度度量措施。
Dice 系數可以計算兩個字符串的相似度:Dice(s1,s2)=2*comm(s1,s2)/(leng(s1)+leng(s2))。
其中,comm (s1,s2)是s1、s2 中相同字符的個數leng(s1),leng(s2)是字符串s1、s2 的長度。
在信息檢索中, 給定關鍵詞集合X 和Y ,相似度定義為兩倍的共同信息(重疊部分)除以基數的總和 :[2]
當作為字符串之間的相似度度量時, 計算兩個字符串之間的系數, x 和y,使用 bigrams 公式如下:[3]
{\displaystyle s={\frac {2n_{t}}{n_{x}+n_{y}}}} {\displaystyle s={\frac {2n_{t}}{n_{x}+n_{y}}}}
其中nt 是兩個字符串共有的bigrams的個數, nx 是 x中bigrams的個數 ,ny 是 y中bigrams的個數。
例如:要計算下面兩個字符串之間的相似度:
night
nacht
我們可以在各個單詞中得出如下bigrams集合:
{ni,ig,gh,ht}
{na,ac,ch,ht}
每個集合有4個元素, 這個兩個集合只有一個相同的元素: ht.
代入公式我們可以計算出, s = (2 · 1) / (4 + 4) = 0.25.
Dice距離用于度量兩個集合的相似性,因為可以把字符串理解為一種集合,因此Dice距離也會用于度量字符串的相似性。
此外,Dice系數的一個非常著名的使用即實驗性能評測的F1值。
Dice系數定義
如下:
其中分子是A與B的交集數量的兩倍,分母為X和Y的長度之和,所以他的范圍也在0到1之間。
從公式看,Dice系數和Jaccard非常的類似。
Jaccard是在分子和分母上都減去了|A∩B|。
與Jaccard不同的是,相應的差異函數
不是一個合適的距離度量措施,因為它沒有三角形不等性的性質。
例如:
給定 {a}, , 和 {a,b}, 前兩個集合的距離為1, 而第三個集合和其他任意兩個集合的距離為三分之一。
與Jaccard類似,集合操作可以用兩個向量A和B的操作來表示:
def dice_coefficient(a, b): """dice coefficient 2nt/na + nb.""" a_bigrams = set(a) b_bigrams = set(b) overlap = len(a_bigrams & b_bigrams) return overlap * 2.0/(len(a_bigrams) + len(b_bigrams)) if __name__ == '__main__': a=dice_coefficient('你好daadsffda','你你好ihiuhiihibiuhiuhiuhiuhiuhiuhuya妹aaa') print(a)
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
在Mac中PyCharm配置python Anaconda環(huán)境過程圖解
這篇文章主要介紹了在Mac中PyCharm配置python Anaconda環(huán)境過程圖解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-03-03