Я хочу рассчитать показатель сходства на основе сходства Жаккара на n-граммах.
Вот что я реализовал на данный момент: это очень наивный подход, который просто просматривает каждую строку набора данных, вычисляя оценки сходства один за другим.
Код: Выделить всё
# Initial match with Jaccard similarity > 0.5
matches = []
for idx_a, row_a in data_b.iterrows():
for idx_b, row_b in df_new.iterrows():
ngrams_a = ngrams(row_a['name_std'], n=5)
ngrams_b = ngrams(row_b['name_std'], n=5)
score = jaccard_similarity(ngrams_a, ngrams_b)
matches.append({
'permno_adj': row_a['permno_adj'],
'firm_name': row_b['name_std'],
'rec_name': row_a['name_std'],
'rec_id': row_b['rec_id'],
'similarity_score': score
})
matches_df = pd.DataFrame(matches)
matches_df.sort_values(by=['firm_name', 'similarity_score'], ascending=False, inplace=True)
Я ищу любые подсказки/отзывы. Заранее спасибо!
Подробнее здесь: https://stackoverflow.com/questions/791 ... e-datasets