小编Vik*_*kov的帖子

如何优化算法以更快地找到带有fuzzywuzzy的相似字符串?

我在我的数据库中找到相似的食物名称时遇到问题(大约有 10 万个产品名称)。我决定使用 fuzz.token_sort_ratiofrom libfuzzywuzzy来查找相似的产品名称。这是它的工作原理:

s1 = 'Pepsi Light'
s2 = 'Light Pepsi'
fuzz.token_sort_ratio(s1, s2)
Run Code Online (Sandbox Code Playgroud)

100

现在我想找到所有具有相似词的产品名称,结果fuzz.token_sort_ratio>= 90 这里我的代码:

#Find similar
start=datetime.now()
l = list(v_foods.name[0:20000])
i=0
df = pd.DataFrame(columns=['name1', 'name2', 'probab_same'])
for k in range(len(l)):
    for s in range(k+1,len(l)):
        probability = fuzz.token_sort_ratio(l[k], l[s])
        if  probability >= 90:
            df.loc[i] = [l[k], l[s], probability]
            i +=1
print('Spent time: {}' .format(datetime.now() - start))           
df.head(5)   
Run Code Online (Sandbox Code Playgroud)

这需要很多时间。我拥有的产品越多,花费的时间就越多

  1. l = list(v_foods.name[0:5000]) 花费时间:~3 分钟
  2. l = list(v_foods.name[0:10000]) 花费时间:~13 分钟
  3. l = list(v_foods.name[0:20000]) …

python algorithm optimization

3
推荐指数
1
解决办法
327
查看次数

标签 统计

algorithm ×1

optimization ×1

python ×1