国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

用Python計算字符串的相似度

2019-11-06 09:00:52
字體:
來源:轉載
供稿:網友

準備做一個小功能,需要計算字符串的相似度,提前做點功課。

算法

字符串相似度的算法以及有很多資料了。最常見的理解就是:把一個字符串通過插入、刪除或替換這樣的編輯操作,變成另外一個字符串,所需要的最少編輯次數。AKA,兩個字符串之間的距離。解這樣一個問題,可以使用窮舉法,也可以使用動態規劃,大家可以自行搜索。貪婪法不適合這個問題。

python-Levenshtein

我需要使用python完成相似度的計算,因而選擇了python-Levenshtein。python-Levenshtein的常用函數包括:

1) Levenshtein.hamming(str1, str2)計算 漢明距離。 要求str1和str2必須長度一致。是描述兩個等長字串之間 對應 位置上 不同 字符的個數。2)Levenshtein.distance(str1, str2)計算 編輯距離 (也稱為Levenshtein距離 )。是描述由一個字串轉化成另一個字串最少的操作次數,在其中的操作包括 插入 、 刪除 、 替換 。3)Levenshtein.ratio(str1, str2)計算萊文斯坦比。計算公式  r = (sum - ldist) / sum, 其中sum是指str1 和 str2 字串的長度總和,ldist是 類編輯距離。注意 :這里的類編輯距離不是2中所說的編輯距離,2中三種操作中每個操作+1,而在此處,刪除、插入依然+1,但是替換+2。這樣設計的目的:ratio('a', 'c'),sum=2,按2中計算為(2-1)/2 = 0.5,’a','c'沒有重合,顯然不合算,但是替換操作+2,就可以解決這個問題。

測試結果

Distance360-lobby:360-loby                           1360-guest:360_guest                      1ICBC Free:ICBC Secure                  5ICBC_Sec:@ICBC                            5ICBC:IBCC                                         2ICBC:CBCI                                         2ICBC:IICCBBCC                               4ICBC:ICBCICBC                               4Ratio360-lobby:360-loby                         0.941176360-guest:360_guest                    0.888889ICBC Free:ICBC Secure                0.700000ICBC_Sec:@ICBC                          0.615385ICBC:IBCC                                       0.750000ICBC:CBCI                                       0.750000ICBC:IICCBBCC                             0.666667ICBC:ICBCICBC                             0.666667


上一篇:SQLite - Python

下一篇:python 創建新文件

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 松滋市| 恭城| 荣成市| 莱阳市| 栾城县| 吉木乃县| 黄石市| 泰安市| 沈阳市| 华容县| 怀安县| 朝阳县| 闸北区| 惠安县| 新泰市| 保德县| 上杭县| 玉环县| 共和县| 定边县| 普宁市| 永城市| 右玉县| 长宁县| 巴林右旗| 斗六市| 古交市| 宜阳县| 中山市| 宣恩县| 新野县| 全椒县| 广德县| 于都县| 手游| 额尔古纳市| 沂南县| 花莲县| 金寨县| 徐闻县| 山阳县|