Similaridade entre duas strings com TheFuzz do Python
- Amanda Nascimento

- 28 de ago.
- 2 min de leitura
Você já precisou comparar nomes, títulos ou registros que não são exatamente iguais, mas claramente representam a mesma coisa?
O TheFuzz é uma biblioteca Python para comparar textos usando o conceito de fuzzy matching (busca aproximada).Ela usa algoritmos como o Levenshtein Distance, que mede quantas operações (inserção, exclusão, substituição) seriam necessárias para transformar uma string em outra.
O resultado é um score de similaridade de 0 a 100.Quanto maior o score, mais parecidas são as strings!
Em resumo, o fuzz.ratio serve exatamente para mostrar o quanto o texto A se parece com o texto B, ou seja, a similaridade entre duas strings.Ele retorna um número entre 0 e 100:
100: As strings são idênticas.
0: Completamente diferentes.
Qualquer valor entre 0 e 100: Grau de similaridade (quanto maior, mais parecido).
Principais Funções do TheFuzz
fuzz.ratio: compara duas strings diretamente (sensível à ordem).
fuzz.partial_ratio: identifica se uma string é substring da outra.
fuzz.token_sort_ratio: compara strings ignorando a ordem das palavras.
fuzz.token_set_ratio: ignora duplicatas e palavras extras, ótimo para nomes.
fuzz.WRatio: uma função “inteligente” que combina várias técnicas para trazer o melhor score possível.
Como instalar
Abra o terminal do VS Code e digite: pip install thefuzz[speedup]
(O speedup instala um pacote extra para deixar a biblioteca ainda mais rápida.)
Se você não padronizar, o algoritmo pode achar que são mais diferentes do que realmente são. pois na vida real, nomes e textos podem vir com:
Letras maiúsculas/minúsculas diferentes,
Acentos (ex: José x Jose),
Espaços a mais (ex: "Ana Carolina " x "Ana Carolina"),
Pequenas diferenças que não mudam o significado.
Exemplo:

Comparando Listas de Nomes com TheFuzz e Padronização

Saída:
"Ana Karolina" se parece mais com "Ana Carolina" (score: 91)
"Jose Silva" se parece mais com "José da Silva" (score: 90)
"Ana Karolina" se parece mais com "Ana Carolina" (score: 91)
"Jose Silva" se parece mais com "José da Silva" (score: 90)
"Jose Silva" se parece mais com "José da Silva" (score: 90)
"Marcos Vinícios" se parece mais com "Marcos Vinicius" (score: 93)
"Beatriz Da Costa" se parece mais com "Beatriz Costa" (score: 92)
"Carlos Eduardo" se parece mais com "Ana Carolina" (score: 42)
"Amanda Nascimento" se parece mais com "Amanda Nascimento " (score: 100)
"João" se parece mais com "Joao" (score: 100)


