Skip to content

Installing the fuzz

#!pip install thefuzz 
from thefuzz import fuzz

Simple Ratio

# Check the similarity score
name = "Kurtis Pykes"
full_name = "Kurtis K D Pykes"

print(f"Similarity Score: {fuzz.ratio(name, full_name)}")

Partial Ratio

# Check the similarity score
name = "Kurtis Pykes"
full_name = "Kurtis K D Pykes"

print(f"Similarity Score: {fuzz.partial_ratio(name, full_name)}")
# Order matters with partial ratio
# Check the similarity score
name = "Kurtis Pykes"
full_name = "Kurtis Pykes K D"

print(f"Partial ratio similarity score: {fuzz.partial_ratio(name, full_name)}")

# But order will not effect simple ratio if strings do not match
print(f"Simple ratio similarity score: {fuzz.ratio(name, full_name)}")

Token sort ratio

# Check the similarity score
full_name = "Kurtis K D Pykes"
full_name_reordered = "Kurtis Pykes K D"

# Order does not matter for token sort ratio
print(f"Token sort ratio similarity score: {fuzz.token_sort_ratio(full_name_reordered, full_name)}")

# Order matters for partial ratio 
print(f"Partial ratio similarity score: {fuzz.partial_ratio(full_name, full_name_reordered)}")

# Order will not effect simple ratio if strings do not match
print(f"Simple ratio similarity score: {fuzz.ratio(name, full_name)}")
# Check the similarity score
name = "Kurtis Pykes"
full_name = "Kurtis K D Pykes"

print(f"Token sort ratio similarity score: {fuzz.token_sort_ratio(name, full_name)}")

Token set ratio

# Check the similarity score
name = "Solar Multiple"
full_name = "Solar Multiple LLC, Golden, Colorado"

print(f"Token sort ratio similarity score: {fuzz.token_set_ratio(name, full_name)}")

Process

from thefuzz import process 

collection = ["AFC Barcelona", "Barcelona AFC", "barcelona fc", "afc barcalona"] 
print(process.extract("barcelona", collection, scorer=fuzz.ratio))
print(process.extract("barcelona", collection, limit=3, scorer=fuzz.ratio))