Фреймворк Snorkel обеспечивает систему программируемой разметки. В ней шумные метки создаются при помощи понятных эвристик, получаемых благодаря знанию предметной области данных. Например, если пост в соцсети содержит слово «обзор», то он вполне может быть пользовательским обзором. Это хорошее эмпирическое правило, однако может существовать множество случаев, в которых это слово используется, но пост заключается в чём-то совершенно другом, поэтому результаты разметки будут шумными. На практике эта эвристика применяется коротким фрагментом кода, называемым функцией разметки (labeling function, LF). Она получает пост и возвращает метку, или сообщает, что она не уверена в ответе, отказываясь возвращать метку. В этом примере она может вернуть положительный результат, если встретит слово «обзор» или сообщить о своей неуверенности в противном случае. Другие LF могут обрабатывать отрицательные случаи и назначать отрицательную метку или сообщать о неуверенности.