我想用水母來處理模糊的字符串。我注意到jaro_distance算法的一些奇怪行爲。Jaro的特殊行爲距離在JellyFish
我以前用damerau_levenshtein_distance算法出現了一些問題,這個算法似乎是代碼中的一個錯誤,然後棧用戶在github上提出了一個問題。
我不確定我是否在考慮錯誤的措施,或者它是否是一個真正的錯誤。我已經看過源代碼(http://goo.gl/YVMl8k),但我不熟悉C,所以很難知道這是一個實現問題,還是我錯了。
注意以下事項:
In [1]: S1 = Poverty
In [2]: S2 = Poervty
In [3]: jf.jaro_distance(S3, S4)
Out[3]: 0.95238095
現在,如果我的賈羅距離測量的理解是正確的,我相信結果應該是0.9285714285
我已經確定爲什麼calcualtion是怎麼了。爲了計算量度相信followig是正確的:
(7.0/7.0 + 7.0/7.0 + ((7.0 - (3.0/2.0))/7.0) * (1.0/3.0) = 0.9285714285
在表達式中的臨界值是3.0。這個數字必須表示「匹配的數量(但不同的序列順序)」(維基百科)。在我看來,在S1和S2中,匹配但是以不同順序排列的字符是'e','r','v'。
然而,水母似乎只能識別兩個換位,因爲它是計算:
(7.0/7.0 + 7.0/7.0 + ((7.0 - (2.0/2.0))/7.0) * (1.0/3.0) = 0.95238095
我錯了這一點,或者是有什麼不好的作用?
迷人!我向開發人員郵寄了Levensthein距離錯誤,然後他回到我身邊,我提到了這一點,所以他可能會告訴我爲什麼他們做出了這個決定。在我發現這個問題後,我只是假設它是一個錯誤。似乎測試感官源應該是相當可靠的。 –