通过减少比较次数来加速模糊模糊



我目前正在使用Fuzzy Wuzzy字符串相似性比较,并且代码正在运行,但由于运行时间长,我正在努力减少运行时间。目前,我使用的代码获取每个用户名,并将其与其他用户名进行比较,然后转到下一个用户名并再次执行。我正在想一种方法,让for循环跳过它已经进行的比较(这应该会将比较次数减半(。我正在处理的子集目前包含50000行,因此它正在进行25亿次比较,运行需要一个小时。以下是我目前所拥有的:

mat1 = []
list1 = df4['usernames'].tolist()
for i in list1:
mat1.append(process.extract(i, list1, limit= 3))
df4['three_most_similar_usernames'] = mat1

我不完全理解上面的代码(process.extract是什么?-我认为它是一个将第一个参数与第二个参数中的每个元素进行比较的函数(,但我认为你想要这样的东西:

mat1 = []
list1 = df4['usernames'].tolist()
for i, username in enumerate(list1):
mat1.append(process.extract(i, list1[i+1:], limit= 3))
df4['three_most_similar_usernames'] = mat1

Enumerate允许您同时迭代索引(i(和相应的元素(username(。然后,list1[i+1:]是list1的一个切片,包含list1中username之后的所有用户名——因此,当前用户名尚未与之进行比较的用户名。

最新更新