Алгоритмы сопоставления строк в Python

#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:

почему бы не попробовать вместо этого использовать функцию диапазона. вы могли бы просто написать диапазон процентов, который вы хотите, и зациклить его. Код может занять некоторое время, но он должен работать.