Введение
В этой статье я хочу изучить активное обучение решению задачи классификации НЛП. В частности, используя конкурсный набор данных Spooky Author Identification, я хочу пометить его, притворяясь, что начинаю с совершенно неразмеченного набора данных.
Основными ссылками на активное обучение являются Курс MIT «Введение в data-centric AI и, в частности, третий курс) и Человек в цикле машинного обучения.
Я сталкиваюсь с проблемой ручного аннотирования набора данных для многих проектов, и цель этой статьи — стать более систематичным. В этой статье я предполагаю, что аннотаторы не допускают ошибок в маркировке данных; Я думаю, разумно предположить, что извлечение текста из книг и аннотирование вместе с автором не подвержено ошибкам.
В этой первой статье я сосредотачиваюсь только на первых трех шагах процесса аннотирования — подготовке/приеме данных, первой аннотации, основанной на знаниях предметной области, и обучении первой базовой модели.
Подготовка набора данных
В качестве первого шага я читаю данные и создаю оракул, возвращающий правильную метку при запросе; это имитирует работу аннотаторов, просматривающих текст вручную.
import pandas as pd from IPython.display import display from IPython.display import Markdown df = pd.read_csv("input/train.csv") display(Markdown(df.head().to_markdown(index=False)))
Затем я создаю немаркированный набор данных, аннотацию и проверяю, что аннотация работает правильно:
unlabelled = df[["id", "text"]].copy() truth = df[["id", "author"]].copy() def annotate(truth: pd.DataFrame, tobelabelled: pd.DataFrame) -> pd.DataFrame: return tobelabelled.merge(truth, how="left", on="id") display(Markdown(annotate(truth, unlabelled.iloc[:4, :]).to_markdown(index=False)))