我在我的数据库中找到相似的食物名称时遇到问题(大约有 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)
这需要很多时间。我拥有的产品越多,花费的时间就越多
l = list(v_foods.name[0:5000])
花费时间:~3 分钟l = list(v_foods.name[0:10000])
花费时间:~13 分钟l = list(v_foods.name[0:20000]) …