Levenshtein計算相似度距離


使用Levenshtein計算相似度距離,裝下模塊,調用下函數就好。

idf還得自己去算權重,而且不一定准確度高,一般做idf還得做詞性歸一化,把動詞形容詞什么全部轉成名詞,很麻煩。

Levenshtein.distance(str1,str2)

計算編輯距離(也稱Levenshtein距離)。是描述由一個字串轉化成另一個字串最少的操作次數,在其中的操作包括插入、刪除、替換。如

例如將eeba轉變成abac

① eba(刪除第一個e

② aba(將剩下的e替換成a

③ abac(在末尾插入c

所以eebaabac的編輯距離就是3

備注:

http://www.lfd.uci.edu/~gohlke/pythonlibs/#python-levenshtein

 1. Levenshtein.hamming(str1, str2)

計算漢明距離。要求str1和str2必須長度一致。是描述兩個等長字串之間對應位置上不同字符的個數。如

2. Levenshtein.distance(str1, str2)

計算編輯距離(也成Levenshtein距離)。是描述由一個字串轉化成另一個字串最少的操作次數,在其中的操作包括插入刪除替換。如

算法實現 參考動態規划整理:http://www.cnblogs.com/kaituorensheng/archive/2013/05/15/3080990.html

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,就可以解決這個問題。

4. Levenshtein.jaro(s1, s2)

計算jaro距離,

其中的m為s1, s2的匹配長度,當某位置的認為匹配 當該位置字符相同,或者在不超過

         t是調換次數的一半

5. Levenshtein.jaro_winkler(s1, s2)

計算Jaro–Winkler距離


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM