Есть ли способ ускорить нечеткое совпадение строк, используя fuzzywuzzy в пандах.
У меня есть кадр данных как extra_names
, в котором есть имена, для которых я хочу выполнить нечеткие совпадения с другим кадром данныхas names_df
.
>> extra_names.head()
not_matching
0 Vij Sales
1 Crom Electronics
2 REL Digital
3 Bajaj Elec
4 Reliance Digi
>> len(extra_names)
6500
>> names_df.head()
names types
0 Vijay Sales 1
1 Croma Electronics 1
2 Reliance Digital 2
3 Bajaj Electronics 2
4 Pai Electricals 2
>> len(names_df)
250
На данный момент я запускаю логику, используя следующий код, но она завершается вечно.
choices = names_df['names'].unique().tolist()
def fuzzy_match(row):
best_match = process.extractOne(row, choices)
return best_match[0], best_match[1] if best_match else '',''
%%timeit
extra_names['best_match'], extra_names['match%'] = extra_names['not_matching'].apply(fuzzy_match)
По мере публикацииэтот вопрос, запрос все еще выполняется.Есть ли способ ускорить процесс нечеткого сопоставления строк?