需要更多了解 python 模糊部分比率

Need more understanding on python fuzz partial ratio

我在企业级使用 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

能解释一下为什么第二场的fuzz分数比第一场好吗?

非常感谢help/suggestion。

fuzzywuzzy 使用 Levenshtein 距离,这意味着它会比较所有字符,包括空格和符号,例如“:”。

partial_ratio比较两个字符串,但允许将较长的字符串切割成较短的字符串的长度。

在您的例子中,较短的字符串是 'ja rule:mesmerize',长度为 17。比较字符串时,较长的字符串会被剪切成该大小。

考虑到这些信息,让我们比较一下您的输出。我们可以看到第一个长字符串在 'ja rule' 末尾没有 : 但第二个长字符串有。还有许多其他可能的因素,但这可能是导致您结果的主要原因。

我相信更仔细的分析会揭示更多关于分数的信息。 patial_ratio 的实现可在此处找到 https://github.com/seatgeek/fuzzywuzzy/blob/master/fuzzywuzzy/fuzz.py#L34