我想恰当地命名这场比赛,但从下面可以看出,这不是我想要的比赛,有什么办法可以避免吗?我只是希望马克·朗菲尔德先生比劳伦斯·布德先生更受欢迎,因为这更可能是正确的匹配
from fuzzywuzzy import fuzz, process
str = 'Mr Lonfield'
L = list('Mr Laurence Boode', 'Mr Mark Longfield')
print(process.extractOne(str, L))
Output: ('Mr Laurence Boode', 86)
这与列表和字符串的结构有关吗。所以,如果我删除了人们的名字,我当然更可能匹配他们,但我更希望有他们的全名
不管它值多少钱,以下内容将产生您的预期匹配:
在这种情况下,您将获得:
劳伦斯·布德在这个场景中的得分是43
我之所以说是因为它的价值,是因为除了查看源代码(下面的链接)之外,我无法找到关于它如何工作的更多细节
此外,您当然需要测试这在您的更大人群中的效果
您还可以使用其他记分器选项进行测试。其中之一可能更适合。详情见here
不久前,我在这个库的Java端口中使用了
token_set_ratio
,用于匹配电影标题。如果我还记得的话,它对我的需求来说已经足够好了,但确实有一些案例我得到了误报——但这是由于某些电影标题的性质。这可能不适用于您的场景我希望有帮助
更新
来源评论中的一些注释:
一个标记\u集是一个字符串中的字母数字标记集(按空格分割)
职能:
令牌集比率: 返回序列在0和100之间的相似性度量
令牌排序比率: 返回序列在0和100之间的相似性度量,但在比较之前对标记进行排序
部分比例: 以0到100之间的数字形式返回最相似子字符串的比率
部分令牌集比率: 以0到100之间的数字形式返回最相似子字符串的比率
部分令牌排序比率: 以0到100之间的数字形式返回最相似子字符串的比率,但在比较之前对标记进行排序
Java端口文档中还有一些附加的usage examples
相关问题 更多 >
编程相关推荐