Label data by committee, then let statistics sort it out
skweak generates training labels for NLP tasks by aggregating noisy predictions from heuristics, gazetteers, and models—no manual annotation required.

What it does
skweak is a Python toolkit that automates data labeling for NLP by running documents through a battery of labelling functions—think regexes, dictionaries, and model stubs—and then reconciling their disagreements. It targets sequence labeling and text classification tasks where annotated data is scarce, such as low-resource languages or niche domains. The toolkit is built on SpaCy and uses a hidden Markov model to estimate how much trust to place in each labelling function.
The interesting bit
Instead of treating weak supervision as a bespoke research pipeline, skweak wraps the whole workflow—labelling, aggregation, and corpus generation—into a concise API that sits naturally inside existing SpaCy pipelines. The aggregation model learns the accuracy and confusion patterns of each labelling function by pitting them against one another, so you don’t need ground truth to calibrate trust.
Key highlights
- Integrates tightly with SpaCy
Docobjects and existing NLP pipelines - Supports diverse labelling functions: heuristics, gazetteers, machine learning models, and crowd-worker annotations
- Uses a generative HMM to aggregate conflicting labels and estimate per-function reliability
- Handles both sequence labeling and text classification
- Published and presented at ACL 2021
Caveats
- The project is no longer actively maintained; the authors are explicitly seeking a new maintainer
- Performance depends heavily on having enough unlabeled domain data and a sufficiently large set of labelling functions
Verdict
Worth exploring if you need to bootstrap an NLP model in a data-scarce domain and already live in the SpaCy ecosystem. If you require actively maintained libraries with commercial support, look elsewhere.
Frequently asked
- What is NorskRegnesentral/skweak?
- skweak generates training labels for NLP tasks by aggregating noisy predictions from heuristics, gazetteers, and models—no manual annotation required.
- Is skweak open source?
- Yes — NorskRegnesentral/skweak is open source, released under the MIT license.
- What language is skweak written in?
- NorskRegnesentral/skweak is primarily written in Python.
- How popular is skweak?
- NorskRegnesentral/skweak has 925 stars on GitHub.
- Where can I find skweak?
- NorskRegnesentral/skweak is on GitHub at https://github.com/NorskRegnesentral/skweak.