Использование библиотеки FuzzyWuzzy для получения оценки сходства между строкой и предложением.
Ниже приведен короткий фрагмент кода.
data = pd.read_csv("abc.csv",encoding ='latin1')
df = data.main_hotel_name.str.lower().tolist()
ds = [str(x) for x in df]
process.extract("radisson",ds,
scorer=fuzz.partial_ratio,limit=10)
Вывод:
[('Country Inn & Suites by Radisson, Эшвилл Вестгейт, Нью-Йорк Эшвилл, Соединенные Штаты Америки', 100), ('Country Inn & Suites by Radisson, Дели Сакет, Нью-Дели Индия', 100), ('Country Inn & Suites by Radisson, Effingham, Il Effingham Соединенные Штаты Америки, 100), ('Country Inn & Suites от Radisson, Hoffman Estates, Il Hoffman Estates, Соединенные Штаты Америки', 100), ('Country Inn & SuitesАвтор: Radisson, хватает Ирландии (Сан-Антонио), Техас Сан-Антонио, Соединенные Штаты Америки, 100), ('Inn Inn & Suites by Radisson, Mishawaka, в Мишавака, Соединенные Штаты Америки', 100), ('Country Inn & Suitesby radisson, norman, ok norman United States of America ', 100)]
Хотя приведенный выше вывод является точным, однако, если я изменю одну букву в своем запросе, результаты будут совершенно другими:
Например:
# Removing just an "s" from the query:
process.extract("radison",ds,
scorer=fuzz.partial_ratio,limit=10)
Выход:
[('6-я знаменитая роскошная дизайнерская награда виллы fontaines-sur-grandson Switzerland', 86), ('отель в отеле Marriott Madison в центре Мэдисона, Соединенные Штаты Америки', 86), ('apart paradiso mar azul argentina', 86), ('apartamento cadiz paradiso cadiz spain', 86), ('aparthotel paradisoНесебр Болгария ', 86), (' квартира Мэдисон возле центрального парка с видом на город Джакарта Индонезия ', 86)]
Разница в обоих выходах огромна, я неправильно использую модуль Fuzzywuzzy?