使用模糊 wuzzy 来匹配名称(问题!)没有达到预期效果?
Using fuzzy wuzzy to match names (Issue!) Not performing as expected?
我想适当地命名匹配,但如下所示,这不是我想要的匹配,有什么办法可以解决这个问题吗?我只是希望 Mark Longfield 先生比 Laurence Boode 先生更受欢迎,因为它更有可能是正确的匹配。
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)
这是否与列表和字符串的结构有关,而不是其他任何事情。因此,如果我删除人们的名字,我当然会更有可能匹配,但我宁愿使用他们的全名。
就其价值而言,以下将产生您预期的匹配:
print(process.extractOne(str, L, scorer=fuzz.token_set_ratio))
在这种情况下,您将获得:
('Mr Mark Longfield', 79)
Laurence Boode 在这种情况下的得分是 43。
我说 它的价值 因为除了查看源代码(下面的 link)之外,我无法找到关于它如何工作的更多细节.
此外,您当然需要测试这对您的更大人群的效果。
您还可以测试其他记分器选项。其中之一可能更合适。有关详细信息,请参阅 here。
我刚才在 Java 的这个库的端口中使用 token_set_ratio
来匹配电影标题。如果我记得的话,它对我的需要来说已经足够好了,但肯定有我得到误报的情况——但那是由于某些电影片名的性质。这可能不适用于您的情况。
希望对您有所帮助。
更新
来源评论中的一些注释:
A token_set 是字符串中的一组字母数字标记(按空格拆分)。
函数:
token_set_比率:
Returns 是 0 到 100 之间序列相似性的度量。
token_sort_ratio:
Returns 是 0 到 100 之间序列相似性的度量,但在比较之前对标记进行排序。
partial_ratio:
Returns 最相似子串的比率为 0 到 100 之间的数字。
partial_token_set_ratio:
Return 最相似子串的比率为 0 到 100 之间的数字。
partial_token_sort_ratio:
Return 最相似子字符串的比率,作为 0 到 100 之间的数字,但在比较之前对标记进行排序。
Java 端口文档中有一些额外的 usage examples。
我想适当地命名匹配,但如下所示,这不是我想要的匹配,有什么办法可以解决这个问题吗?我只是希望 Mark Longfield 先生比 Laurence Boode 先生更受欢迎,因为它更有可能是正确的匹配。
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)
这是否与列表和字符串的结构有关,而不是其他任何事情。因此,如果我删除人们的名字,我当然会更有可能匹配,但我宁愿使用他们的全名。
就其价值而言,以下将产生您预期的匹配:
print(process.extractOne(str, L, scorer=fuzz.token_set_ratio))
在这种情况下,您将获得:
('Mr Mark Longfield', 79)
Laurence Boode 在这种情况下的得分是 43。
我说 它的价值 因为除了查看源代码(下面的 link)之外,我无法找到关于它如何工作的更多细节.
此外,您当然需要测试这对您的更大人群的效果。
您还可以测试其他记分器选项。其中之一可能更合适。有关详细信息,请参阅 here。
我刚才在 Java 的这个库的端口中使用 token_set_ratio
来匹配电影标题。如果我记得的话,它对我的需要来说已经足够好了,但肯定有我得到误报的情况——但那是由于某些电影片名的性质。这可能不适用于您的情况。
希望对您有所帮助。
更新
来源评论中的一些注释:
A token_set 是字符串中的一组字母数字标记(按空格拆分)。
函数:
token_set_比率: Returns 是 0 到 100 之间序列相似性的度量。
token_sort_ratio: Returns 是 0 到 100 之间序列相似性的度量,但在比较之前对标记进行排序。
partial_ratio: Returns 最相似子串的比率为 0 到 100 之间的数字。
partial_token_set_ratio: Return 最相似子串的比率为 0 到 100 之间的数字。
partial_token_sort_ratio: Return 最相似子字符串的比率,作为 0 到 100 之间的数字,但在比较之前对标记进行排序。
Java 端口文档中有一些额外的 usage examples。