PolyFuzz logo

PolyFuzz

MaartenGr/PolyFuzz

Fuzzy string matching, grouping and evaluation

GraphCanon updated 3d · GitHub synced 3d · 26 views this month

801 stars72 forksLast push 1y Python MIT

Decision brief

PolyFuzz leverages advanced methods like BERT embeddings, edit distance, Levenshtein distance, and TF-IDF for sophisticated fuzzy string matching in Python datasets.

Good fit when

  • Use PolyFuzz when your project requires deep semantic similarity detection with BERT embeddings alongside traditional string metrics.
  • Consider it for projects where the robust evaluation of match quality is essential through integrated scoring methods.

Avoid when

  • Avoid using PolyFuzz if you aim to match very short strings since Levenshtein distance and edit distance may dominate over BERT's nuances.
  • Steer clear if runtime speed is a priority, as embedding computations can be resource-intensive compared to purely algorithmic methods.

Observed Jul 17, 2026 · Source: enrich:decision_facts

Verify the decision

Maintenance and security

Full trust report
Maintenance
Dormant (408d since push)
As of 3d
Provenance
Not a fork · Personal account
As of 3d
Security (OSV)
No lockfile
As of 1mo

Public GitHub metadata and optional OSV scans. Signals, not a guarantee. Trust methodology.

Install

pip install PolyFuzz
PyPI

Similar tools

Same-category neighbours. No typed graph edges are catalogued for this tool yet.

Evidence and technical details

Sourced facts, taxonomy, compatibility claims, README excerpt, and machine-readable endpoints.

Overview

PolyFuzz is a Python library for fuzzy string matching which leverages methods such as BERT embeddings, edit distance, Levenshtein distance, and TF-IDF to match strings within datasets.

Capability facts

Languages
python

Source: github.language · Aug 22, 2026

Categories

Compatibility

Sourced claims from the README excerpt - not unsourced marketing copy.

Python runtimePython

Source: README excerpt (regex_v1, Aug 22, 2026)

```python pip install polyfuzz[sbert]
Source link

Tags

README

Installation

You can install PolyFuzz via pip:

pip install polyfuzz

You may want to install more depending on the transformers and language backends that you will be using. The possible installations are:

pip install polyfuzz[sbert]
pip install polyfuzz[flair]
pip install polyfuzz[gensim]
pip install polyfuzz[spacy]
pip install polyfuzz[use]

If you want to speed up the cosine similarity comparison and decrease memory usage when using embedding models, you can use sparse_dot_topn which is installed via:

pip install polyfuzz[fast]
Installation Issues

You might run into installation issues with sparse_dot_topn. If so, one solution that has worked for many is by installing it via conda first before installing PolyFuzz:

conda install -c conda-forge sparse_dot_topn

If that does not work, I would advise you to look through their issues](https://github.com/ing-bank/sparse_dot_topn/issues) page or continue to use PolyFuzz without sparse_dot_topn.


Getting Started

For an in-depth overview of the possibilities of PolyFuzz you can check the full documentation here or you can follow along with the notebook here.


Quick Start

The main goal of PolyFuzz is to allow the user to perform different methods for matching strings. We start by defining two lists, one to map from and one to map to. We are going to be using TF-IDF to create n-grams on a character level in order to compare similarity between strings. Then, we calculate the similarity between strings by calculating the cosine similarity between vector representations.

We only have to instantiate PolyFuzz with TF-IDF and match the lists:

from polyfuzz import PolyFuzz

from_list = ["apple", "apples", "appl", "recal", "house", "similarity"]
to_list = ["apple", "apples", "mouse"]

model = PolyFuzz("TF-IDF")
model.match(from_list, to_list)

The resulting matches can be accessed through model.get_matches():

>>> model.get_matches()
         From      To    Similarity
0       apple   apple    1.000000
1      apples  apples    1.000000
2        appl   apple    0.783751
3       recal    None    0.000000
4       house   mouse    0.587927
5  similarity    None    0.000000

NOTE 1: If you want to compare distances within a single list, you can simply pass that list as such: model.match(from_list)

NOTE 2: When instantiating PolyFuzz we also could have used "EditDistance" or "Embeddings" to quickly access Levenshtein and FastText (English) respectively.

For agents

This page has a .md twin and JSON over the API.

Was this helpful?

Anonymous feedback helps us improve pages and translations.