Skip to main content

PyPI - Version PyPI - Python Version PyPI - Downloads codecov

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

abbr2words-0.2.0.tar.gz (87.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

abbr2words-0.2.0-py3-none-any.whl (41.8 kB view details)

Uploaded Python 3

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

Hashes for abbr2words-0.2.0.tar.gz
Algorithm Hash digest
SHA256 f6badaee2f5f9bbc81ebe4fa295ba30d2645b597385286546451aeb41b3eaed2
MD5 b474338bee6f358bfd4951cb93abcf77
BLAKE2b-256 494fbc0579eabef93bbed30185acd7175bf64b974856418c32ad669d45e49c6a

See more details on using hashes here.

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

Hashes for abbr2words-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 57045bcf2f9a64a6f0ed37731d41b1f42d2383929ca3a2fb23efbd06aca26d88
MD5 75b5a8df50013ab69f5d84a5c2f4adee
BLAKE2b-256 6f8ef9ae522cdddd464fd6b3d3ff87db92a3854695650483e5deece3e0b9272b

See more details on using hashes here.

Release history Release notifications | RSS feed

0.2.9

2 files

0.2.8

2 files

0.2.7

2 files

0.2.6

2 files

0.2.5

2 files

0.2.4

2 files

0.2.3

2 files

0.2.2

2 files

0.2.1

2 files

This release

0.2.0 This release

2 files

0.1.1

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page