Practical overview
When it fits
Use Hmni when name variations make exact-match joins or duplicate checks insufficient, especially in workflows comparing records across datasets.
Who it is for
- Python developers building name-resolution steps into data-cleaning pipelines.
- Data teams linking records across tables when names may differ in spelling or form.
Documented uses
- Compare two name strings and obtain a predicted probability or binary match label.
- Join pandas data frames using fuzzy name matching.
- Reduce duplicate name variants or replace them with a selected representative form.
Requirements & limits
- The README lists Python 3.5–3.8 and TensorFlow, scikit-learn, fuzzywuzzy, abydos and unidecode as requirements.
- The described HMNI-Latin training data is internationally transliterated Latin first names, with precision prioritized.
- The README reports 0.9255 precision and 0.7548 recall for HMNI-Latin; those reported metrics may inform evaluation for a particular workflow but do not guarantee its results.
Check current requirements in the official documentation. Source-based guidance does not mean OpenViST has run or independently tested this project.
Install Hmni and initialize a Latin matcher
Add the library to a Python environment and create the matcher object shown in the README.
Before you start
- Python 3.5–3.8
- TensorFlow, scikit-learn, fuzzywuzzy, abydos and unidecode
Steps
Install the package with pip install hmni.
Import hmni in Python.
Create a matcher with hmni.Matcher(model='latin').
Expected outcome
A Latin-model Matcher object is initialized for the documented matching methods.
Guide limitations
- This recipe covers installation and initialization only; it does not verify successful execution.
- The README lists the Python versions and dependencies above.
Fuzzy-match names while merging two pandas tables
Use the documented fuzzymerge method to link two data frames by name.
Before you start
- Python 3.5–3.8 and the listed Hmni dependencies
- pandas
- An initialized Hmni Matcher
- Two pandas DataFrames with a name column
Steps
Create the two DataFrames with name columns.
Call matcher.fuzzymerge(df1, df2, how='left', on='name').
Expected outcome
The method returns a left-style fuzzy merge of the two data frames using their name fields.
Guide limitations
- The README's example uses a left merge; it also documents inner, right and outer merge modes.
- The method has a configurable threshold, which is 0.5 by default.
Sources & review
Source record details
- Source availability
- Active
- Sources checked
- 14 October 2026
- Original website title
- Christopher-Thornton/hmni · Official homepage title · retained in its source language

