我在企业级别使用python Fuzzywuzzy来匹配2个字符串。在大多数情况下,它都能正常工作,但在以下情况下会产生意外结果:
fuzz.partial_ratio('ja rule:mesmerize','ja rule feat. ashanti:mesmerize') gives output 65
和
fuzz.partial_ratio('ja rule:mesmerize','jennifer lopez feat. ja rule:im real ') gives the output 67
关于第二场比赛的模糊得分为什么比第一场比赛更好的解释?
非常感谢您的帮助/建议。
答案 0 :(得分:0)
fuzzywuzzy
使用Levenshtein距离,这意味着它会比较所有字符,包括空格和符号,例如“:”。
partial_ratio
比较两个字符串,但是可以将较长的字符串剪切为较短的字符串的长度。
在您的情况下,较短的字符串是长度为17的'ja rule:mesmerize'
。比较该字符串时,会将较长的字符串剪切为该大小。
记住这些信息,让我们比较您的输出。我们可以看到第一个长字符串在:
的末尾没有'ja rule'
,但是第二个长字符串却有。还有许多其他可能的因素,但这可能是导致您结果的主要原因。
我敢肯定,更仔细的分析将揭示更多有关分数的信息。 https://github.com/seatgeek/fuzzywuzzy/blob/master/fuzzywuzzy/fuzz.py#L34在这里patial_ratio
的实现。