利用最小編輯距離演算法實現文字diff

2022-04-29 14:30:10 字數 611 閱讀 3108

最近在公司一直在做diff的事情,對於文字的diff。因為一開始維基百科實現文字的diff做得比較不錯,所以就調研了下mediawiki的diff實現,但發現mediawiki預設只能diff到行的級別,如果要diff到漢字的級別,是需要更改**的。所以我就改了該mediawiki的**,發現可以得到相應的效果。

但待我繼續追蹤**發現,其實mediawiki的diff實現並不是很優雅,當然我沒有太細看它diff的內容,是在追蹤的過程中,發現不如使用最小距離去做diff,這樣就可以實現和mediawiki同樣的diff效果,而且實現起來比mediawiki的要簡單。

可以實現單個漢字級別的diff。

下面是幾個diff的截圖:

可以較為清晰的diff出相應的內容。

**比較ugly,我就不上傳了。不過我可以貢獻下最小編輯距離的實現演算法,php本身雖也自帶最小編輯距離的函式,但只能給出編輯距離,無法給出編輯過程,這個演算法,是可以給出編輯過程的。此演算法的產生離不開snowteng([email protected])的協助。**比較ugly,別笑話。。

**位置:

最小編輯距離演算法

最小距離演算法用來計算兩個字串之間的相似度,這次主要是因為對搜尋結果的rerank需要用這個演算法做一下優化。一 簡介 1.最小編輯距離演算法又稱 min edit distance,是用來計算兩個字串相似性的比較常用的演算法,主要應用場景包括抄襲檢測,拼寫檢查,相似度計算等等方面,這次主要是對搜尋...

scala文字編輯距離演算法實現

編輯距離,又稱levenshtein距離,是指兩個字串之間,由乙個轉成另乙個所需的最少編輯操作次數。許可的編輯操作包括 將乙個字元替換成另乙個字元,插入乙個字元,刪除乙個字元。例如將eeba轉變成abac 1.eba 刪除第乙個e 2.aba 將剩下的e替換成a 3.abac 在末尾插入c 所以ee...

演算法 最小編輯距離 動態規劃

給定兩個單詞 word1 和 word2,計算出將 word1 轉換成 word2 所使用的最少運算元 你可以對乙個單詞進行如下三種操作 插入乙個字元 刪除乙個字元 替換乙個字元 示例 1 輸入 word1 horse word2 ros 輸出 3 解釋 horse rorse 將 h 替換為 r ...