#python #nlp #string-matching #levenshtein-distance #fuzzywuzzy
#python #nlp #сопоставление строк #левенштейн-расстояние #fuzzywuzzy
Вопрос:
Я ищу некоторые предложения по алгоритмам, которые можно было бы использовать для сопоставления строк, которые также поддерживают неанглоязычные языки.
Ранее опробованный алгоритм:
Я попробовал расстояние Левенштейна (нечеткое сопоставление) с помощью алгоритма token_sort_ratio. Этот алгоритм работает довольно хорошо для большинства моих вариантов использования и даже для неанглоязычных языков. Я считал, что две строки совпадают, если соотношение превышает 90%. Проблема, с которой я в настоящее время сталкиваюсь с этим алгоритмом, заключается в том, что в приведенном ниже примере 19-й век и 18-й век не совпадают, и я не хочу, чтобы они рассматривались как совпадение.
Str1 = "19th Century"
Str2 = "18th Century"
fuzz.token_sort_ratio(Str1,Str2)
>> 92%
Если я изменю соотношение так, чтобы оно было больше 95%, я бы пропустил приведенный ниже пример в качестве соответствия. Но эти две строки совпадают
Str1 = "Robert Jones"
Str2 = "Robert F. Jones"
fuzz.token_sort_ratio(Str1,Str2)
>> 92%
Ответ №1:
почему бы не попробовать вместо этого использовать функцию диапазона. вы могли бы просто написать диапазон процентов, который вы хотите, и зациклить его. Код может занять некоторое время, но он должен работать.