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

时间:2018-12-13 05:37:59

标签: python python-2.7 fuzzy-logic fuzzy-comparison fuzzywuzzy

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

关于第二场比赛的模糊得分为什么比第一场比赛更好的解释?

非常感谢您的帮助/建议。

1 个答案:

答案 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的实现。