abbr2words
Multilingual, context-aware abbreviation expansion for text normalization and speech.
This standalone package was extracted from the abbreviation framework and language
registries in kokorog2p. It has no runtime dependencies and uses a flat package
layout (no src/ directory).
Supported languages
- Czech (
cs) - German (
de) - English (
en) - Spanish (
es) - French (
fr) - Italian (
it) - Portuguese (
pt)
Locale forms such as de-DE, en_GB, and pt-BR are accepted and currently map
to their base-language registry.
Installation
python -m pip install abbr2words
For development:
python -m pip install -e ".[dev]"
pytest
API
from abbr2words import abbr2words
text = "Prof. Klein kommt ggf. am Fr."
print(abbr2words(text, lang="de"))
# Professor Klein kommt gegebenenfalls am Freitag
Context can be disabled:
abbr2words("Fr. Klein", lang="de", context=False)
# Freitag Klein
External linguistic annotations
abbr2words remains dependency-free. Applications that already tokenize and
tag text can pass provider-neutral TokenAnnotation objects with character
offsets and optional POS labels. spaCy is not installed or imported by
abbr2words; see the external POS annotation guide
and examples/spacy_pos.py.
Bundled registries do not currently require POS labels; annotations are used by
custom entries configured with POS guards. The provider-specific tag value is
retained as metadata but is not currently evaluated.
Use an isolated mutable registry for project-specific entries:
from abbr2words import Expander
expander = Expander("de")
expander.add("KI", "Künstliche Intelligenz", case_sensitive=True)
print(expander("KI hilft."))
Consumers that need the shared language registry can use get_shared_expander() and
reset_expanders(). Expander and get_expander() remain isolated mutable registries.
Command line
python -m abbr2words --lang de "Prof. Klein kommt ggf."
printf 'Prof. Klein kommt ggf.' | abbr2words --lang de
Scope
abbr2words expands registered abbreviations and a reviewed set of unit symbols
when they occur after numeric quantities. It preserves numeric values and does
not spell ordinary numbers, dates, times, or currencies, and does not perform
unit conversion. Unit support is not universal UCUM support.
abbr2words("500 g", lang="en")
# "500 gram"
abbr2words("section g", lang="en")
# "section g"
Examples
The repository includes runnable examples for abbreviation-only expansion and
for composing abbr2words with num2words:
python -m pip install "abbr2words[examples]"
python examples/abbreviations.py
python examples/full_text_demo.py --sample german
abbr2words itself expands abbreviations only. The optional examples show how
to combine it with num2words for broader speech-text normalization, including
output such as 500 g -> five hundred grams. The full-text demo is example code,
not part of the stable public API. See
examples/README.md for the complete command reference.
Versioning
The package version is derived from Git tags by setuptools-scm. Use tags in the
form v0.2.0, v0.3.0, and so on; the corresponding package version is generated
automatically during builds. A checkout without tags falls back to 0.2.0.
For a release, commit the changes, create an annotated tag, and build from that tag:
git tag -a v0.2.0 -m "Release 0.2.0"
uv build
License
Apache License 2.0. See LICENSE and NOTICE.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file abbr2words-0.2.0.tar.gz.
File metadata
- Download URL: abbr2words-0.2.0.tar.gz
- Upload date:
- Size: 87.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f6badaee2f5f9bbc81ebe4fa295ba30d2645b597385286546451aeb41b3eaed2
|
|
| MD5 |
b474338bee6f358bfd4951cb93abcf77
|
|
| BLAKE2b-256 |
494fbc0579eabef93bbed30185acd7175bf64b974856418c32ad669d45e49c6a
|
File details
Details for the file abbr2words-0.2.0-py3-none-any.whl.
File metadata
- Download URL: abbr2words-0.2.0-py3-none-any.whl
- Upload date:
- Size: 41.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
57045bcf2f9a64a6f0ed37731d41b1f42d2383929ca3a2fb23efbd06aca26d88
|
|
| MD5 |
75b5a8df50013ab69f5d84a5c2f4adee
|
|
| BLAKE2b-256 |
6f8ef9ae522cdddd464fd6b3d3ff87db92a3854695650483e5deece3e0b9272b
|