演算法原理
在計算文字的相似性時,經常會用到編輯距離。編輯距離,又稱levenshtein距離,是指兩個字串之間,由乙個轉成另乙個所需的最少編輯操作次數。通常來說,編輯距離越小,兩個文字的相似性越大。這裡的編輯操作主要包括三種:
下面通過示例來看一下。
1、batyu變為beatyu(插入字元e)
2、beatyu變為beaty(刪除字元u)
3、beaty變為beauty(插入字元u)
所以編輯距離為3。
那麼,如何用python計算編輯距離呢?我們可以從較為簡單的情況進行分析。
很明顯,上述演算法的思想即為動態規劃。
python**實現
talk is cheap. show me the code. python**也是極其簡潔的,這也是動態規劃的魅力:
擴充套件
那麼,python功能這麼強大,有沒有計算編輯距離的包呢?
得到的結果是3而不是1。這是因為在字串編碼為utf-8時,乙個漢字占用3個位元組。改為unicode編碼即可得到1,即:
那麼,levenshtein包中還有沒有其它計算距離的方法呢?
這個包有很多計算距離的方法,包括如下:
總結
Python如何計算編輯距離?
演算法原理 在計算文字的相似性時,經常會用到編輯距離。編輯距離,又稱levenshtein距離,是指兩個字串之間,由乙個轉成另乙個所需的最少編輯操作次數。通常來說,編輯距離越小,兩個文字的相似性越大。這裡的編輯操作主要包括三種 下面通過示例來看一下。1 batyu變為beatyu 插入字元e 2 b...
Python實現計算最小編輯距離
最小編輯距離或萊文斯坦距離 levenshtei指由字串a轉化為字串b的最小編輯次數。允許的編輯操作有 刪除,插入,替換。具體內容可參見 維基百科 萊文斯坦距離。一般 實現的方式都是通過動態規劃演算法,找出從a轉化為b的每一步的最小步驟。從google借來的圖,python 實現,其中要注意矩陣的下...
計算編輯距離方法
給你兩個單詞word1和word2,請你計算出將word1和word2所使用的最少運算元。你可以對乙個單詞進行如下三種操作 1 插入乙個字元 2 刪除乙個字元 3 替換乙個字元 示例1 輸入 word1 horse word2 ros 輸出 3 解釋 horse rorse 將 h 替換為 r ro...