【问题标题】:Need more understanding on python fuzz partial ratio需要更多了解python fuzz部分比例
【发布时间】:2018-12-13 05:37:58
【问题描述】:

我在企业级使用 python blurwuzzy 来匹配 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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 感谢您的解释!
    • [2020 年 10 月] 它不会剪切较长的字符串。它只是根据上面的 github 链接切换它们。
    猜你喜欢
    • 1970-01-01
    • 2015-08-15
    • 2011-12-21
    • 2019-10-04
    • 1970-01-01
    • 2020-10-29
    • 2012-06-25
    • 2021-10-14
    • 1970-01-01
    相关资源
    最近更新 更多