为什么使用Fuzzywuzzy会使令牌设置比率如此之低?

问题描述

我正在使用fuzzywuzzy和Rapidfuzz来查找注释中提到的名称。我通读了“ token_set_ratio”函数的文档,但仍然不了解以下内容

# I preprocessed the comments to remove stop words and commonly mentioned other words

fuzz.token_set_ratio("reporting michael anders sven straumann guy called jonatjan smith partners","jonathan smith")

# returns 52.6

乔纳森·史密斯只有一个拼写错误,为什么比例如此之低?

此外,是否可以解决该问题,让乔纳森获得更高的分数?

感谢您的帮助, 迈克尔

解决方法

Fuzz.token_set_ratio并不是真正适合您的问题的比率,因为它会对单词进行排序,而您希望保留名字和名字的配对。您可以使用fuzz.partial_ratio来比较长字符串和短字符串中最匹配的子字符串。

fuzz.partial_ratio(
  "reporting michael anders sven straumann guy called jonatjan smith partners","jonathan smith")
# returns 92.85714285714286