社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

需要更多了解python fuzz partial ratio

Sains • 7 年前 • 1927 次点击  

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