seqeval
Testing framework for sequence labeling
What it is and what it does
seqeval is a Python evaluation framework for sequence labeling tasks—the kind of work you do when training models for named-entity recognition, part-of-speech tagging, semantic role labeling, or other chunking problems. It computes standard metrics (accuracy, precision, recall, F1) and generates classification reports, and it supports multiple tagging schemes (IOB1, IOB2, IOE1, IOE2, IOBES, BILOU). The package has two evaluation modes: a default mode compatible with the conlleval Perl script, and a strict mode that enforces schema compliance more rigidly.
The package has no runtime dependencies, making installation straightforward, but it is dormant—the last release was in October 2020 and there have been no commits since August 2024. If you need sequence labeling evaluation and the existing metrics and schemes cover your use case, seqeval is a lightweight, stable choice; if you need active maintenance, bug fixes, or support for newer tagging schemes, you should verify whether the package still works with your Python version and consider alternatives.
Use it for:
- Evaluate NER model predictions against ground-truth labels using standard metrics like precision and recall.
- Generate a classification report showing per-entity performance for a part-of-speech tagger or chunker.
- Compare predictions across different tagging schemes (IOB1, IOB2, IOBES) to understand how schema choice affects scoring.
- Validate sequence labeling output in strict mode to catch malformed tag sequences that default mode would overlook.
- Benchmark sequence labeling systems using conlleval-compatible metrics for reproducibility with published results.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
seqeval evaluates the performance of sequence labeling tasks like named-entity recognition and part-of-speech tagging by computing accuracy, precision, recall, and F1 scores across multiple tagging schemes.
Yes, if your sequence labeling evaluation needs match the supported schemes and metrics. The package is lightweight, has no dependencies, carries a permissive MIT license, and is well-tested against conlleval. However, it is dormant—last release October 2020—so verify compatibility with your Python version before adopting. Do not use if you need active maintenance or support for newer tagging schemes.
Install
seqeval on PyPI
pip
pip install seqevaluv
uv add seqevalpoetry
poetry add seqevalInstalling seqeval
Before you install
High install friction with no runtime dependencies. The package is dormant—last release was 2020-10-24 and no commits since 2024-08-28—so expect no active maintenance or bug fixes going forward.
License in practice
MIT license is permissive and imposes no restrictions on use or redistribution, making it safe to adopt in any project.
Quickstart
pip install seqeval
from seqeval.metrics import f1_score
y_true = [['O', 'O', 'B-MISC', 'I-MISC']]
y_pred = [['O', 'B-MISC', 'I-MISC', 'I-MISC']]
print(f1_score(y_true, y_pred))
Verify before relying
- Whether the package works reliably with modern Python versions (classifiers list Python 2.6–3.6, but latest release was 2020; current compatibility unknown).
- Whether strict mode with IOBES and BILOU schemes is production-ready or has known limitations.
Package facts
| License | MIT (permissive) |
| Python support | not specified |
| Install friction | high — source build required |
| Runtime dependencies | none |
| Maintenance | dormant — 2,120 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 372,667/month — #7,158 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: seqeval-1.2.2.tar.gz
Tags
More Testing packages
Pluggy provides a plugin system that lets you…
permissive · top 100 on PyPI
pytestpytest is a testing framework that lets you…
permissive · top 100 on PyPI
virtualenvvirtualenv creates isolated Python environments…
permissive · top 100 on PyPI
coverageCoverage.py measures which lines of Python code…
permissive · top 1,000 on PyPI
pytest-asynciopytest-asyncio is a pytest plugin that enables…
permissive · top 1,000 on PyPI
pytest-json-ctrfA pytest plugin that generates test reports in…
permissive · top 1,000 on PyPI
flairFlair is a PyTorch-based NLP framework that…
permissive · top 15,000 on PyPI
rougeComputes ROUGE scores (Recall-Oriented…
unclear · top 5,000 on PyPI
rouge-chineseComputes ROUGE evaluation metrics for Chinese…
unclear · top 15,000 on PyPI
mir-evalmir_eval computes standard accuracy metrics for…
permissive · top 15,000 on PyPI
tf2crfProvides a Conditional Random Field (CRF) layer…
permissive · top 15,000 on PyPI
python-crfsuitePython binding to CRFsuite for conditional…
permissive · top 5,000 on PyPI
unitxtUnitxt provides a unified framework for…
permissive · top 15,000 on PyPI
ja-ginzaA pre-trained Japanese NLP model for spaCy that…
permissive · top 15,000 on PyPI
glinerGLiNER is a lightweight framework for named…
permissive · top 15,000 on PyPI
sklearn-crfsuitesklearn-crfsuite wraps CRFsuite (Conditional…
permissive · top 15,000 on PyPI