# SPEAR : Semi-supervised Data Programming in Python

arXiv: https://arxiv.org/abs/2108.00373 · HTML: https://mlsanity.com/paper/2108.00373/

## Key facts

- Cited by 6 papers in the map (data through 14 Oct 2026).
- Builds on 6 of its 18 references that are in the map.
- First posted on arXiv 1 Aug 2021.

## Builds on (most cited first, 6 of 6)

- [Learning to Reweight Examples for Robust Deep Learning](https://mlsanity.com/paper/1803.09050/) (2018)
- [Harnessing Deep Neural Networks with Logic Rules](https://mlsanity.com/paper/1603.06318/) (2016)
- [Learning from Rules Generalizing Labeled Exemplars](https://mlsanity.com/paper/2004.06025/) (2020)
- [Snorkel DryBell: A Case Study in Deploying Weak Supervision at Industrial Scale](https://mlsanity.com/paper/1812.00417/) (2018)
- [skweak: Weak Supervision Made Easy for NLP](https://mlsanity.com/paper/2104.09683/) (2021)
- [Rule Augmented Unsupervised Constituency Parsing](https://mlsanity.com/paper/2105.10193/) (2021)

## Built on by (most cited first, 6 of 6)

- [UDAAN: Machine Learning based Post-Editing tool for Document Translation](https://mlsanity.com/paper/2203.01644/) (2022)
- [EIGEN: Expert-Informed Joint Learning Aggregation for High-Fidelity Information Extraction from Document Images](https://mlsanity.com/paper/2311.13993/) (2023)
- [TEXTRON: Weakly Supervised Multilingual Text Detection through Data Programming](https://mlsanity.com/paper/2402.09811/) (2024)
- [FAIR: Filtering of Automatically Induced Rules](https://mlsanity.com/paper/2402.15472/) (2024)
- [WeaNF: Weak Supervision with Normalizing Flows](https://mlsanity.com/paper/2204.13409/) (2022)
- [INSITE: labelling medical images using submodular functions and semi-supervised data programming](https://mlsanity.com/paper/2402.07173/) (2024)

## Abstract (arXiv)

We present SPEAR, an open-source python library for data programming with semi supervision. The package implements several recent data programming approaches including facility to programmatically label and build training data. SPEAR facilitates weak supervision in the form of heuristics (or rules) and association of noisy labels to the training dataset. These noisy labels are aggregated to assign labels to the unlabeled data for downstream tasks. We have implemented several label aggregation approaches that aggregate the noisy labels and then train using the noisily labeled set in a cascaded manner. Our implementation also includes other approaches that jointly aggregate and train the model for text classification tasks. Thus, in our python package, we integrate several cascade and joint data-programming approaches while also providing the facility of data programming by letting the user define labeling functions or rules. The code and tutorial notebooks are available at https://github.com/decile-team/spear. Further, extensive documentation can be found at https://spear-decile.readthedocs.io/. Video tutorials demonstrating the usage of our package are available here. We also present some real-world use cases of SPEAR.
