我正在使用Python中的模糊wuzzy,雖然它聲稱它與levenshtein距離一起工作,但我發現許多單個字符不同的字符串會產生不同的結果。例如。Python的fuzzywuzzy返回不可預知的結果
>>>fuzz.ratio("vendedor","vendedora")
94
>>>fuzz.ratio("estagiário","estagiária")
90
>>> fuzz.ratio("abcdefghijlmnopqrst","abcdefghijlmnopqrsty")
97
>>>fuzz.ratio("abc","abcd")
86
>>>fuzz.ratio("a","ab")
67
我想Levenshtein距離應該是相同的,因爲在所有的例子單個字符的距離,但我知道這不是簡單的距離,這是某種形式的某種「比例平等」的。
我試圖理解它是如何工作的,但我似乎無法理解。我很長的字符串給出了一個97和很短的一個67.我想這意味着字符串越大,對單個字符的影響就越小。然而,對於「vendedor」,「vendedora」和「estagiário」,「estagiária」的例子,情況並非如此,因爲後者比前者大。
這是如何工作的?
我目前正在匹配用戶輸入職位名稱,嘗試將錯誤輸入的姓名與正確類型的名稱連接起來。是否有更好的工作包用於我的任務?
'fuzz.ratio'基於levenshtein距離返回字符串相似程度的百分比。 –