Skip to main content
Version: 25.4

snorkelflow.lfs.labeling_function

warning

This is a beta function in 25.4. Beta features may have known gaps or bugs, but are functional workflows and eligible for Snorkel Support. To access beta features, contact Snorkel Support to enable the feature flag for your Snorkel-hosted instance.

class snorkelflow.lfs.labeling_function(name=None, resources=None, preprocess_configs=None)

Bases: object

Decorator to create a LabelingFunction object from a user-defined function.

Parameters

NameTypeDefaultInfo
nameOptional[str]NoneName of the LF.
resourcesOptional[Mapping[str, Any]]None

Labeling resources passed in to f via kwargs.

note
While this can be a nested dictionary and can include functions, functions should be its direct children if any otherwise they would break when Snorkel Flow upgrades to a newer version of Python.
preprocess_configsOptional[List[Dict[str, Any]]]NonePreprocessors to run on data points before LF execution.

Examples

# Simple example
@labeling_function()
def f(x):
return "SPAM" if "drug" in x.body else "UNKNOWN"

# Example with resources
def find_word_index(text):
import numpy
try:
idx = numpy.where(text.split(" ").index("employee"))
except:
idx = numpy.array([])
return idx

@labeling_function(name="my_lf", resources=dict(find_word_index=find_word_index))
def lf(x, find_word_index):
import numpy
idx = find_word_index(x.text)
if numpy.mean(idx) <= 1000:
return "employment"
else:
return "UNKNOWN"

# Bad example ("find_word_index" function is NOT a direct child of "resources")
@labeling_function(name="my_lf", resources=dict(funcs=dict(find_word_index=find_word_index)))
def bad_lf(x, funcs):
import numpy
idx = funcs["find_word_index"](x.text)
if numpy.mean(idx) <= 1000:
return "employment"
else:
return "UNKNOWN"

__init__

__init__(name=None, resources=None, preprocess_configs=None)

Methods

__init__([name, resources, preprocess_configs])