我有两个不同格式的公司列表(较长列表中有 > 2k 个条目)需要统一。我知道这两种格式大约 80% 的时间共享一个 stub ,所以我使用模糊匹配来比较两个列表:
def get_fuzz_score(str1, str2):
from fuzzywuzzy import fuzz
partial_ratio = fuzz.partial_ratio(str1, str2)
return partial_ratio
a = ['Express Scripts', 'Catamaran Corp', 'Banmedica SA (96.7892%)', 'WebMD', 'ODC', 'Caremerge LLC (Stake%)']
b = ['Doctor on Demand', 'Catamaran', 'Express Scripts Holding Corp', 'ODC, Inc.', 'WebMD Health Services', 'Banmedica']
for i in b:
for j in a:
if get_fuzz_score(i, j) > 80:
# process
我很感激关于如何优化此任务以提高性能的想法(例如,不必使用 2 个 for 循环)。
请您参考如下方法:
首先,我会将 import from fuzzywuzzy import fuzz 从函数移动到文件的开头。
接下来,您似乎想要检查每个元素,所以无论如何您都在比较 all2all,但我没有看到简单的解决方法。
如果数据“不错”,那么您可以进行一些简单的启发式操作,例如在第一个字母上(来自您发布的示例 - 但这取决于数据)。
最好的问候
附言如果我的分数足够高,我会发表评论。
