probablepeople
Parse romanized names & companies using advanced NLP methods
What it is and what it does
probablepeople is a Python library that breaks down person and company names from unstructured text into their semantic components—given names, surnames, prefixes, suffixes, corporation types, and so on—using conditional random fields trained on labeled examples. It sits on top of the parserator framework and python-crfsuite, learning patterns from training data rather than relying on rigid rules. The library exposes two main methods: `parse` splits a name string into tuples of (text, label), while `tag` merges consecutive components and returns an ordered dictionary keyed by component type plus an inferred entity type (Person or Corporation).
The package is designed for cases where simple regex or dictionary-based parsing breaks down—names with nicknames, multiple surnames, generational suffixes, or company legal entities. It acknowledges its own limitations: it makes probabilistic guesses, not perfect identifications, and cannot verify that a parsed name is actually valid. The library includes tooling to add new training examples via the parserator command-line interface, allowing you to improve accuracy on name formats that currently stump the model.
Use it for:
- Clean and standardize person names from user-submitted forms or data imports before storage or matching
- Extract and categorize company legal entity types (Inc, LLC, Corp) from unstructured business name strings
- Deduplicate or link records by parsing names into components and comparing them structurally
- Prepare name data for downstream NLP or machine learning pipelines that require labeled name parts
- Build data quality checks that flag names the parser cannot confidently decompose into standard components
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Parses unstructured person and company names into labeled components using probabilistic NLP methods, handling complex cases where rule-based parsing typically fails.
Yes, if you need to parse person or company names from unstructured text and can tolerate probabilistic (not perfect) results. The low install friction, permissive MIT license, and active maintenance make it a reasonable choice. However, the aging release cycle (654 days since last update) and Alpha development status mean you should test it on your specific name formats before relying on it in production; if accuracy is critical, verify performance on a representative sample first.
Install
probablepeople on PyPI
pip
pip install probablepeopleuv
uv add probablepeoplepoetry
poetry add probablepeopleInstalling probablepeople
Before you install
Low install friction with three runtime dependencies. The package is aging (654 days since last release) but the repository remains active and well-maintained, with a recent commit in May 2025 and no archived status.
License in practice
MIT License permits commercial and private use with minimal restrictions; you must include a copy of the license but face no copyleft obligations.
Quickstart
pip install probablepeople
import probablepeople as pp
name_str = 'Mr George "Gob" Bluth II'
pp.parse(name_str) # Returns: [('Mr', 'PrefixMarital'), ('George', 'GivenName'), ('"Gob"', 'Nickname'), ('Bluth', 'Surname'), ('II', 'SuffixGenerational')]
pp.tag(name_str) # Returns: (OrderedDict([('PrefixMarital', 'Mr'), ('GivenName', 'George'), ('Nickname', '"Gob"'), ('Surname', 'Bluth'), ('SuffixGenerational', 'II')]), 'Person')
Requires Python 3.9 or later; depends on python-crfsuite, probableparsing, and doublemetaphone.
Verify before relying
- Accuracy benchmarks or typical precision/recall rates on real-world name datasets
- Performance characteristics (latency per parse, throughput) for batch processing
- Whether the model handles non-English romanized names or only English patterns
Package facts
| License | MIT License (permissive) |
| Python support | supports the current Python release (>=3.9) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 3 — python-crfsuite, probableparsing, doublemetaphone |
| Maintenance | aging — 654 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 171,163/month — #10,377 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: probablepeople-0.5.6-py3-none-any.whl
Tags
More Scientific/Engineering packages
NumPy provides an N-dimensional array object…
permissive · top 100 on PyPI
pandaspandas provides fast, flexible data structures…
permissive · top 100 on PyPI
scipyscipy provides numerical algorithms for…
permissive · top 100 on PyPI
scikit-learnscikit-learn provides a comprehensive Python…
permissive · top 1,000 on PyPI
dilldill extends Python's pickle module to…
permissive · top 1,000 on PyPI
multiprocessMultiprocess is an enhanced fork of Python's…
permissive · top 1,000 on PyPI
usaddressusaddress parses unstructured US address…
permissive · top 5,000 on PyPI
fingerprintsGenerates simplified entity identifiers…
permissive · top 15,000 on PyPI
python-crfsuitePython binding to CRFsuite for conditional…
permissive · top 5,000 on PyPI
splinkSplink performs probabilistic record linkage…
permissive · top 5,000 on PyPI
glinerGLiNER is a lightweight framework for named…
permissive · top 15,000 on PyPI
probableparsingProvides common utility methods for building…
permissive · top 5,000 on PyPI
sklearn-crfsuitesklearn-crfsuite wraps CRFsuite (Conditional…
permissive · top 15,000 on PyPI
gliner2GLiNER2 extracts entities, classifies text,…
permissive · top 15,000 on PyPI
graphragGraphRAG extracts structured knowledge graphs…
permissive · top 15,000 on PyPI
ngboostNGBoost implements Natural Gradient Boosting…
permissive · top 15,000 on PyPI