python如何實(shí)現(xiàn)Dice系數(shù)
python實(shí)現(xiàn)Dice系數(shù)
維基百科,自由的百科全書(shū)
跳到導(dǎo)航跳到搜索
Disambig gray.svg 關(guān)于與“Dice系數(shù)”名稱相近或相同的條目,請(qǐng)見(jiàn)“Dice”。
Dice系數(shù), 根據(jù) Lee Raymond Dice[1] 命名,是一種集合相似度度量函數(shù),通常用于計(jì)算兩個(gè)樣本的相似度:
{\displaystyle s={\frac {2|X\cap Y|}{|X|+|Y|}}} {\displaystyle s={\frac {2|X\cap Y|}{|X|+|Y|}}}它和Sørensen 相似度指數(shù)相同, 也稱作Sørensen-Dice系數(shù)。
它在形式上和Jaccard指數(shù)沒(méi)多大區(qū)別,但是有些不同的性質(zhì)。
和Jaccard類似,它的范圍為0到1。 與Jaccard不同的是,相應(yīng)的差異函數(shù)
{\displaystyle d=1-{\frac {2|X\cap Y|}{|X|+|Y|}}} {\displaystyle d=1-{\frac {2|X\cap Y|}{|X|+|Y|}}}不是一個(gè)合適的距離度量措施,因?yàn)樗鼪](méi)有三角形不等性的性質(zhì)。
例如給定 {a}, , 和 {a,b}, 前兩個(gè)集合的距離為1, 而第三個(gè)集合和其他任意兩個(gè)集合的距離為三分之一。
與Jaccard類似, 集合操作可以用兩個(gè)向量 A 和B的操作來(lái)表示:
{\displaystyle s_{v}={\frac {2|A\cdot B|}{|A|^{2}+|B|^{2}}}} {\displaystyle s_{v}={\frac {2|A\cdot B|}{|A|^{2}+|B|^{2}}}}上式給出了兩個(gè)向量的距離輸出,也給出了更一般情況下向量之間的相似度度量措施。
Dice 系數(shù)可以計(jì)算兩個(gè)字符串的相似度:Dice(s1,s2)=2*comm(s1,s2)/(leng(s1)+leng(s2))。
其中,comm (s1,s2)是s1、s2 中相同字符的個(gè)數(shù)leng(s1),leng(s2)是字符串s1、s2 的長(zhǎng)度。
在信息檢索中, 給定關(guān)鍵詞集合X 和Y ,相似度定義為兩倍的共同信息(重疊部分)除以基數(shù)的總和 :[2]
當(dāng)作為字符串之間的相似度度量時(shí), 計(jì)算兩個(gè)字符串之間的系數(shù), x 和y,使用 bigrams 公式如下:[3]
{\displaystyle s={\frac {2n_{t}}{n_{x}+n_{y}}}} {\displaystyle s={\frac {2n_{t}}{n_{x}+n_{y}}}}其中nt 是兩個(gè)字符串共有的bigrams的個(gè)數(shù), nx 是 x中bigrams的個(gè)數(shù) ,ny 是 y中bigrams的個(gè)數(shù)。
例如:要計(jì)算下面兩個(gè)字符串之間的相似度:
nightnacht
我們可以在各個(gè)單詞中得出如下bigrams集合:
{ni,ig,gh,ht}{na,ac,ch,ht}
每個(gè)集合有4個(gè)元素, 這個(gè)兩個(gè)集合只有一個(gè)相同的元素: ht.
代入公式我們可以計(jì)算出, s = (2 · 1) / (4 + 4) = 0.25.
Dice距離用于度量?jī)蓚€(gè)集合的相似性,因?yàn)榭梢园炎址斫鉃橐环N集合,因此Dice距離也會(huì)用于度量字符串的相似性。
此外,Dice系數(shù)的一個(gè)非常著名的使用即實(shí)驗(yàn)性能評(píng)測(cè)的F1值。
Dice系數(shù)定義
如下:

其中分子是A與B的交集數(shù)量的兩倍,分母為X和Y的長(zhǎng)度之和,所以他的范圍也在0到1之間。
從公式看,Dice系數(shù)和Jaccard非常的類似。
Jaccard是在分子和分母上都減去了|A∩B|。

與Jaccard不同的是,相應(yīng)的差異函數(shù)

不是一個(gè)合適的距離度量措施,因?yàn)樗鼪](méi)有三角形不等性的性質(zhì)。
例如:
給定 {a}, , 和 {a,b}, 前兩個(gè)集合的距離為1, 而第三個(gè)集合和其他任意兩個(gè)集合的距離為三分之一。
與Jaccard類似,集合操作可以用兩個(gè)向量A和B的操作來(lái)表示:

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)
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Django集成Celery實(shí)現(xiàn)高效的異步任務(wù)處理的全過(guò)程
Django?作為一個(gè)強(qiáng)大的?Python?Web?框架,可以通過(guò)集成?Celery?這一異步任務(wù)隊(duì)列來(lái)優(yōu)化這些任務(wù)的處理,本文將深入探討如何在?Django?項(xiàng)目中集成?Celery,包括?Celery?的基本配置、定義任務(wù)、以及監(jiān)控任務(wù)執(zhí)行,需要的朋友可以參考下2023-11-11
Python Opencv提取圖片中某種顏色組成的圖形的方法
這篇文章主要介紹了Python Opencv提取圖片中某種顏色組成的圖形的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
pyqt5數(shù)據(jù)庫(kù)使用詳細(xì)教程(打包解決方案)
這篇文章主要介紹了pyqt5數(shù)據(jù)庫(kù)使用教程(打包解決方案),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03
python實(shí)現(xiàn)下載整個(gè)ftp目錄的方法
這篇文章主要介紹了python實(shí)現(xiàn)下載整個(gè)ftp目錄的方法,文中給出了詳細(xì)的示例代碼,相信對(duì)大家的理解和學(xué)習(xí)具有一定的參考借鑒價(jià)值,有需要的朋友可以一起來(lái)學(xué)習(xí)學(xué)習(xí)。2017-01-01
python數(shù)據(jù)類型之間怎么轉(zhuǎn)換技巧分享
在本篇文章里小編給大家分享的是關(guān)于python數(shù)據(jù)類型之間怎么轉(zhuǎn)換實(shí)例以及小技巧內(nèi)容,有興趣的朋友們參考下。2019-08-08
python?使用?with?open()?as?讀寫(xiě)文件的操作方法
這篇文章主要介紹了python?使用?with?open()as?讀寫(xiě)文件的操作代碼,寫(xiě)文件和讀文件是一樣的,唯一區(qū)別是調(diào)用open()函數(shù)時(shí),傳入標(biāo)識(shí)符'w'或者'wb'表示寫(xiě)文本文件或?qū)懚M(jìn)制文件,需要的朋友可以參考下2022-11-11
只需要100行Python代碼就可以實(shí)現(xiàn)的貪吃蛇小游戲
貪吃蛇小游戲相信80、90后小時(shí)候肯定都玩過(guò),那么你知道如果通過(guò)Python來(lái)實(shí)現(xiàn)嗎?今天就來(lái)教大家,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python的小伙伴們很有幫助,需要的朋友可以參考下2021-05-05

