Py学习  »  Python

需要更多了解python fuzz partial ratio

Sains • 7 年前 • 2013 次点击  

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

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

为什么第二场比赛的分数比第一场比赛的分数高?

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

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/40380
文章 [ 1 ]  |  最新文章 7 年前
James Parker
Reply   •   1 楼
James Parker    7 年前

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

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

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

考虑到这些信息,我们来比较一下您的输出。我们可以看到第一个长字符串没有 : 最后 'ja rule' 但第二个是。有很多其他可能的因素,但这可能是你的结果的主要原因。

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