denckring-en-pos
An English part-of-speech tagger for denckring, trained on the Universal Dependencies English Web Treebank.
pip install denckring[pos]
It supplies one capability, pos: a reading of each token in its sentence,
as a universal part-of-speech tag and, for verbs, UD's VerbForm feature. Two
rows need it and could not be built without it — verbless_prose, which bars
finite verbs while living on participles, and homosyntaxism, which keeps a
source's word classes and replaces its words.
Every other English capability here answers about a word on its own. This one
cannot: walks is a noun in the evening walks were long and a finite verb
in she walks home, and no lookup decides between them.
It registers no entry point. denckring-en-data owns the en language and its
pack() factory composes this distribution in when it is importable, because
denckring refuses two packs claiming one language (ADR 0013, ADR 0045).
What it is, and what that costs
An averaged perceptron over the feature set Honnibal published for
textblob-aptagger — the standard cheap tagger. Pure Python at inference time
and no model download, which is why, unlike the usual tagger, it can sit in
denckring's test matrix including the free-threaded build.
It is a model, so its answers are estimates. There is no exact tier behind it
the way syllables.dictionary stands behind syllables.heuristic, so the
honesty is carried per token instead: PosTag.known says whether the form
appeared in the training data at all, and a procedure that reports a violation on
a word where it did not says so in the violation.
Measured on the treebank's held-out test split (hyperparameters were chosen
on dev and the test split read once):
| tokens | 21,885 |
| joint accuracy (UPOS + VerbForm) | 0.9269 |
| UPOS accuracy | 0.9342 |
| finite verb — precision | 0.9482 |
| finite verb — recall | 0.9498 |
| finite verb — F1 | 0.9490 |
The finite-verb row is reported separately because it is the number
verbless_prose actually rests on, and an aggregate accuracy hides it among
nineteen other labels.
These figures are lower than the published ones for this feature set, and
deliberately so: the model is trained and scored on a punctuation-free token
stream, because that is what denckring's word_spans hands it. Scoring over a
stream where roughly one token in eight is a punctuation mark that cannot be got
wrong would be measuring something the shipped tagger never does.
Why a separate distribution
The treebank is CC BY-SA 4.0, where denckring-en-data carries a different mix.
ADR 0013 quarantines a data licence in its own distribution. The shipped weights
are treated as an adapted work under share-alike — see NOTICE, which records
why, and that the question is one on which readings differ.
Rebuilding the model
cd packages/denckring-en-pos && uv run python scripts/build_tagger.py
Fetches the three splits, verifies each against a pinned SHA-256, trains, and
writes tagger.json.gz and metadata.json. About twenty seconds. The archive is
written with mtime=0, so a rebuild from the same inputs is byte-identical and a
diff of the shipped file means the model genuinely changed.
See ADR 0045 for the decision and the costs it accepts.
Metadata
Release files for denckring-en-pos 0.3.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| denckring_en_pos-0.3.2.tar.gz | 1.1 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| denckring_en_pos-0.3.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 2.2 MB
Release files / denckring_en_pos-0.3.2.tar.gz
| Download URL | denckring_en_pos-0.3.2.tar.gz |
|---|---|
| Size | 1.1 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ff037216657a2de8cde24f54ba873f5f7061e4222a37f5eaf7114b9c7c78f64e
|
|
BLAKE2b-256 checksum How to use checksums |
a72c056303a3c0ca0b424249a9bb9903611eef13a68ae51d57fdd3e1ef2c6a31
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 5, 2026.
Transparency logRelease files / denckring_en_pos-0.3.2-py3-none-any.whl
| Download URL | denckring_en_pos-0.3.2-py3-none-any.whl |
|---|---|
| Size | 1.1 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1d3cb22107462d03080d106352f9e65b23d89858bb4a2fe522979dd5854540c9
|
|
BLAKE2b-256 checksum How to use checksums |
545c48e5efbf4d5da16424339c68f2c0cb4e656cfceba6dcf52e560d00b5807c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 5, 2026.
Transparency log