需要更多了解 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。
我在企业级使用 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。