python中的字符串匹配算法

问题描述

我正在寻找有关可用于字符串匹配的算法的建议,该算法也支持非英语语言。

以前尝试过的算法:

我用token_sort_ratio算法尝试了Levenshtein距离(模糊匹配)。对于我的大多数用例,甚至对于非英语语言,该算法都可以很好地工作。如果比率超过90%,我认为两个字符串是匹配项。在下面的示例中,我目前使用此算法面临的问题是19世纪和18世纪并不相同,我不希望将它们视为匹配项。

Str1 = "19th Century"
Str2 = "18th Century"
fuzz.token_sort_ratio(Str1,Str2)
>> 92%

如果我将比率更改为大于95%,那么我将错过以下示例作为匹配项。但是这两个字符串是匹配的

Str1 = "Robert Jones"
Str2 = "Robert F. Jones"
fuzz.token_sort_ratio(Str1,Str2)
>> 92%

解决方法

为什么不尝试使用范围函数。您可以只编写所需百分比的范围并进行循环。该代码可能需要一段时间,但它应该可以工作。