字串相似度

2021-08-15 09:09:39 字數 773 閱讀 6825

最近在做演算法作業,需要比較兩個字串的相似度,並且返回相同的元素所佔的百分比。

如果讓我自己做的話,思路是把兩個字串分別轉化為列表,然後在列表中解決掉。

[python]view plain

copy

new = [i 

fori,j 

inzip(a,b) 

ifi == j]  

ratio = 2.0

* len(new) / (len(a) + len(b))  

去網上一查,發現python自帶比較相似度的模組,difflib。比較兩個字串的模組是difflib.sequencematcher,使用起來很簡單:

[python]view plain

copy

seq = difflib.sequencematcher(

none

, a, b)  

ratio = seq.ratio()  

最主要的是,python原生的模組的效率都比較好。其中none的位置是乙個函式,用來去掉自己不想算在內的元素。比如我想把空格排除在外:

[python]view plain

copy

seq = difflib.sequencematcher(

lambda

x:x=

" ", a, b)  

ratio = seq.ratio()  

這樣不用自造輪子了。

字串相似度

這個演算法 於網上,但忘記了出處,對其使使用了 issame封裝,然後用在了自己的網頁資料抓取 中。求解兩個字串的相似度int calculatestringdistance const string stra,const string strb intret c lena 1 lenb 1 for...

字串相似度

最近要對字串進行聚類,這些字串都是 的輸出,嘗試了幾種字串相似度度量的方法 levenshtein距離 字串核函式 lcs max len str1,str2 其中相似度用公式distance 1.0 similarity 1轉換為距離.使用層次聚類方法.下面是要聚類的字串 points aabbc...

字串相似度

這篇我們看看最長公共子串行的另乙個版本,求字串相似度 編輯距離 我也說過了,這是乙個非常實用的演算法,在dna對比,網 頁聚類等方面都有用武之地。一 概念 對於兩個字串a和b,通過基本的增刪改將字串a改成b,或者將b改成a,在改變的過程中我們使用的最少步驟稱之為 編輯距離 二 解析 可能大家覺得有點...