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

Sai*_*ins 6 python fuzzy-logic fuzzy-comparison python-2.7 fuzzywuzzy

我在企业级使用 python fuzzywuzzy 来匹配 2 个字符串。它在大多数情况下工作正常,但在下面提到的场景中会产生意想不到的结果:

fuzz.partial_ratio('ja rule:mesmerize','ja rule feat. ashanti:mesmerize') gives output 65
Run Code Online (Sandbox Code Playgroud)

fuzz.partial_ratio('ja rule:mesmerize','jennifer lopez feat. ja rule:im real ') gives the output 67
Run Code Online (Sandbox Code Playgroud)

有什么解释为什么第二场比赛的模糊分数比第一场比赛更好吗?

非常感谢任何帮助/建议。

Jam*_*ker 6

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

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

在您的情况下,较短的字符串的'ja rule:mesmerize'长度为 17。比较字符串时,较长的字符串将被切成该大小。

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

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