最近在做演算法作業,需要比較兩個字串的相似度,並且返回相同的元素所佔的百分比。
如果讓我自己做的話,思路是把兩個字串分別轉化為列表,然後在列表中解決掉。
[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,在改變的過程中我們使用的最少步驟稱之為 編輯距離 二 解析 可能大家覺得有點...