У меня есть два набора данных, которые мне нужны для нечеткого сопоставления столбца, который содержит названия организаций. Я использовал библиотеку fuzzywuzzy в Python и установил порог 50 (см. Код ниже). Код успешно совпал с некоторыми именами. Когда я посмотрел на спички, я понял проблему. Проблема в том, что есть некоторые совпадения с порогом 90, но два имени совершенно разные.
Например, следующие два имени совпадают с 91:
"PARIS HEALTH CORPORATION" и "LONDON HEALTCARE CORPORATION"
(я заменил первые слова на Париж и Лондон на конфиденциально).
Мне интересно, как правильно подобрать совпадения этих типов?
Кроме того, два набора данных также имеют адрес и почтовый индекс, но я еще не использовал адрес для сопоставления двух наборов данных.
Я получил код с этой страницы .
from fuzzywuzzy import fuzz
def match_name(name, list_names, min_score=0):
max_score = -1
max_name = ""
for name2 in list_names:
score = fuzz.ratio(name, name2)
if (score > min_score) & (score > max_score):
max_name = name2
max_score = score
return (max_name, max_score)
dict_list = []
for name in df.SYSNAME:
match = match_name(name, df1.PAYER_NAME, 50)
dict_ = {}
dict_.update({"SYSNAME" : name})
dict_.update({"match_name" : match[0]})
dict_.update({"score" : match[1]})
dict_list.append(dict_)
merge_table = pd.DataFrame(dict_list)