Sponsored in part by DARPA as part of the SIMPLEX program under contract number N66001-15-C-4043.
- Data Programming: ML with Weak Supervision
- Installation instructions below
- Get started with the tutorials below
- Documentation here
Snorkel is intended to be a lightweight but powerful framework for developing structured information extraction applications for domains in which large labeled training sets are not available or easy to obtain, using the data programming paradigm.
In the data programming approach to developing a machine learning system, the developer focuses on writing a set of labeling functions, which create a large but noisy training set. Snorkel then learns a generative model of this noise—learning, essentially, which labeling functions are more accurate than others—and uses this to train a discriminative classifier.
At a high level, the idea is that developers can focus on writing labeling functions—which are just (Python) functions that provide a label for some subset of data points—and not think about algorithms or features!
Snorkel is very much a work in progress, but some people have already begun developing applications with it, and initial feedback has been positive… let us know what you think, and how we can improve it, in the Issues section!
- Data Programming, to appear at NIPS 2016: https://arxiv.org/abs/1605.07723
- Workshop paper from HILDA 2016 (note Snorkel was previously DDLite): here
Installation / dependencies
Snorkel uses Python 2.7 and requires a few python packages which can be installed using
pip install --requirement python-package-requirement.txt
sudo can be prepended to install dependencies system wide if this is an option and the above does not work.
jupyter nbextension enable --py widgetsnbextension --sys-prefix
Note: Currently the
Viewer is supported on the following versions:
jupyter notebook: 4.2
By default (e.g. in the tutorials, etc.) we also use Stanford CoreNLP for pre-processing text; you will be prompted to install this when you run
virtualenv can be used by starting with:
virtualenv -p python2.7 .virtualenv source .virtualenv/bin/activate
After installing (see below), just run:
Learning how to use Snorkel
We like issues as a place to put bugs, questions, feature requests, etc- don’t be shy! If submitting an issue about a bug, however, please provide a pointer to a notebook (and relevant data) to reproduce it.
Jupyter Notebook Best Practices
Snorkel is built specifically with usage in Jupyter/IPython notebooks in mind; an incomplete set of best practices for the notebooks:
It’s usually most convenient to write most code in an external
.py file, and load as a module that’s automatically reloaded; use:
%load_ext autoreload %autoreload 2
A more convenient option is to add these lines to your IPython config file, in
c.InteractiveShellApp.extensions = ['autoreload'] c.InteractiveShellApp.exec_lines = ['%autoreload 2']