新聞中心
字符串的相似性比較應(yīng)用場(chǎng)合很多,像拼寫糾錯(cuò)、文本去重、上下文相似性等。
評(píng)價(jià)字符串相似度最常見的辦法就是:把一個(gè)字符串通過插入、刪除或替換這樣的編輯操作,變成另外一個(gè)字符串,所需要的最少編輯次數(shù),這種就是編輯距離(edit distance)度量方法,也稱為L(zhǎng)evenshtein距離。海明距離是編輯距離的一種特殊情況,只計(jì)算等長(zhǎng)情況下替換操作的編輯次數(shù),只能應(yīng)用于兩個(gè)等長(zhǎng)字符串間的距離度量。
其他常用的度量方法還有 Jaccard distance、J-W距離(Jaro–Winkler distance)、余弦相似性(cosine similarity)、歐氏距離(Euclidean distance)等。
python-Levenshtein 使用
使用 pip install python-Levenshtein 指令安裝 Levenshtein
# -*- coding: utf-8 -*- import difflib # import jieba import Levenshtein str1 = "我的骨骼雪白 也長(zhǎng)不出青稞" str2 = "雪的日子 我只想到雪中去si" # 1. difflib seq = difflib.SequenceMatcher(None, str1,str2) ratio = seq.ratio() print 'difflib similarity1: ', ratio # difflib 去掉列表中不需要比較的字符 seq = difflib.SequenceMatcher(lambda x: x in ' 我的雪', str1,str2) ratio = seq.ratio() print 'difflib similarity2: ', ratio # 2. hamming距離,str1和str2長(zhǎng)度必須一致,描述兩個(gè)等長(zhǎng)字串之間對(duì)應(yīng)位置上不同字符的個(gè)數(shù) # sim = Levenshtein.hamming(str1, str2) # print 'hamming similarity: ', sim # 3. 編輯距離,描述由一個(gè)字串轉(zhuǎn)化成另一個(gè)字串最少的操作次數(shù),在其中的操作包括 插入、刪除、替換 sim = Levenshtein.distance(str1, str2) print 'Levenshtein similarity: ', sim # 4.計(jì)算萊文斯坦比 sim = Levenshtein.ratio(str1, str2) print 'Levenshtein.ratio similarity: ', sim # 5.計(jì)算jaro距離 sim = Levenshtein.jaro(str1, str2 ) print 'Levenshtein.jaro similarity: ', sim # 6. Jaro–Winkler距離 sim = Levenshtein.jaro_winkler(str1 , str2 ) print 'Levenshtein.jaro_winkler similarity: ', sim
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
當(dāng)前標(biāo)題:詳解Python字符串相似性的幾種度量方法-創(chuàng)新互聯(lián)
路徑分享:http://biofuelwatch.net/article/gcpdi.html