Middle — Senior
33
Что такое Snorkel и weak supervision?
Companies where asked
Answer from AI
sobes.tech AI
Snorkel — это фреймворк для weak supervision, который помогает создавать обучающие датасеты с помощью программных правил, а не вручную размеченных данных. Weak supervision — это подход, при котором используются неточные, шумные или косвенные источники разметки для обучения моделей, что значительно сокращает трудозатраты на аннотирование.
Основная идея Snorkel — объединить множество слабых сигналов (например, правила, внешние базы знаний, модели) в одну вероятностную модель, которая генерирует качественные метки для обучения.
Пример использования Snorkel:
from snorkel.labeling import labeling_function, LabelModel, PandasLFApplier
import pandas as pd
# Определяем метки
POSITIVE = 1
NEGATIVE = 0
ABSTAIN = -1
# Пример данных
data = pd.DataFrame({'text': ['I love this product', 'This is bad', 'Not sure about this']})
# Создаем простые функции разметки
@labeling_function()
def positive_words(x):
return POSITIVE if 'love' in x.text else ABSTAIN
@labeling_function()
def negative_words(x):
return NEGATIVE if 'bad' in x.text else ABSTAIN
lfs = [positive_words, negative_words]
applier = PandasLFApplier(lfs)
labeled_matrix = applier.apply(data)
# Обучаем модель для объединения меток
label_model = LabelModel(cardinality=2, verbose=True)
label_model.fit(labeled_matrix=labeled_matrix, n_epochs=500, log_freq=100)
# Получаем итоговые метки
data['label'] = label_model.predict(labeled_matrix)
print(data)
Таким образом, Snorkel позволяет быстро создавать обучающие выборки с помощью слабых сигналов, что особенно полезно при ограниченном количестве размеченных данных.