Странное поведение в экстракте FuzzyWuzzy
Я пытаюсь использовать FuzzyWuzzy, чтобы исправить неправильно написанные имена в тексте. Однако я не могу заставить process.extract и process.extractOne вести себя так, как я ожидал.
from fuzzywuzzy import process
the_text = 'VICTOR HUGO e MARIANA VEIGA'
search_term = 'VEYGA'
the_text = the_text.split()
found_word = process.extract(search_term, the_text)
print(found_word)
Это приводит к:
[('e', 90), ('VEIGA', 80), ('HUGO', 22), ('VICTOR', 18), ('MARIANA', 17)]
Как я могу заставить FuzzyWuzzy правильно идентифицировать "VEIGA" как правильный ответ?
1 ответ
Решение
Вы можете попробовать использовать: fuzz.token_set_ratio или fuzz.token_sort_ratio Ответы здесь: Когда использовать какую функцию fuzz для сравнения 2 строк, дает отличное объяснение.
Для завершения здесь немного кода:
from fuzzywuzzy import process
from fuzzywuzzy import fuzz
the_text = 'VICTOR HUGO e MARIANA VEIGA'
search_term = 'VEYGA'
the_text = the_text.split()
found_word = process.extract(search_term, the_text, scorer=fuzz.token_sort_ratio)
print(found_word)
выход:
[("VEIGA", 80), ("e", 33), ("HUGO", 22), ("VICTOR", 18), ("MARIANA", 17)]