У Свифта «платье» — это костюм Гулливера. На летучем острове Лапута портной обмеряет путешественника линейкой, циркулем и угломерным инструментом. Шесть дней вычислений — и готова одежда не по фигуре. Геометрия довольна. Гулливер пока ищет в этом костюме себя.

Разметка данных для обучения нейросетей — это добавление к исходным материалам целевых меток. Они показывают, какой ответ нужен: класс сообщения, имя внутри строки, область предмета на снимке. На размеченных примерах модель можно учить и проверять. Чтобы метка пригодилась, её нужно точно подогнать к задаче.

Попробуем разобраться на трёх коротких текстах. В них всего семь людей, организаций и городов, которые нужно отметить. К концу у вас будет таблица с точными фрагментами, короткое правило для разметчика и способ проверить результат. Если Label Studio уже доступна, тот же пример можно перенести в проект и сохранить разметку в JSON.

Разметка данных для обучения нейросетей: выбор меток

Допустим, вы разбираете старую папку. Между письмом, визиткой и записанным на обороте адресом обнаруживаются люди и города, которых хочется собрать в понятный список. На листе встретилась Тула. Отметить весь лист как «поездки» — один способ навести порядок. Найти внутри строки само название города — другой. Для каждого понадобится своё правило.

Если нужны имена и места, отмечают соответствующие кусочки текста. Если ищут кота на снимке, указывают объект на изображении. А если достаточно решить, есть ли кот вообще, можно назначить категорию всему снимку. Сам кот спокойно спит при любом способе. Разница проявится в том, какой ответ сможет проверять человек.

Что хотим получить Как размечаем Что остаётся в результате
Тему входящего сообщения Присваиваем категорию сообщению целиком Текст и метка, например «доставка»
Людей и города в заметке Выделяем фрагменты внутри текста Границы каждого фрагмента и его тип
Положение предмета на фотографии Обводим объект рамкой или отмечаем его область Координаты и метка объекта
Участки аудиозаписи Отмечаем начало и конец сегмента Временные границы и нужная метка, например говорящий

Состав меток зависит от задачи. Для одной коллекции достаточно категории на весь снимок, для другой нужно выделить каждый предмет. В рассказе команды NtechLab о разметке хорошо видна эта связь: данные готовят под признак, который затем должен распознавать алгоритм. Здесь начнём с текста — его границы легко увидеть самостоятельно.

Три строки и семь сущностей

Наш пример:

  1. «Анна работает в Лира в Омске.»
  2. «Илья приехал в Тулу.»
  3. «Вега открыла офис в Перми.»

Условимся, что Лира и Вега — названия организаций. Анна и Илья — люди. Омск, Тула и Пермь — города, но в разметке оставляем слова в той форме, в которой они стоят: «Омске», «Тулу», «Перми».

Задача называется распознаванием именованных сущностей, или NER. «Сущность» здесь — нужное нам упоминание человека, организации или места. Обозначим их короткими метками: PER — человек, ORG — организация, LOC — место.

Сначала напишем инструкцию тому, кто размечает:

Отмечай только имена людей, названия организаций и мест. Выделяй сам фрагмент без предлога, соседнего пробела и точки. Сохраняй написание и падеж исходника. В этих трёх текстах Лира и Вега обозначают организации. Если значение непонятно, запиши вопрос к правилу, не назначай метку наугад.

Теперь можно заполнить таблицу. Номер строки соответствует списку выше.

Строка Точный фрагмент Метка Что не захватываем
1 Анна PER Пробел после имени
1 Лира ORG Предлог «в» и пробелы
1 Омске LOC Предлог «в» и точку
2 Илья PER Пробел после имени
2 Тулу LOC Предлог «в» и точку
3 Вега ORG Пробел после названия
3 Перми LOC Предлог «в» и точку

Получилось семь сущностей: две PER, две ORG и три LOC. «Работает», «приехал», «открыла офис» остаются обычным текстом. Цветные метки заманчиво раздать всем подряд, словно билеты на праздник. Но глагол «приехал» в списке городов нам совершенно ни к чему.

А вот выделить «в Омске» целиком — ошибка границы. Город определили верно, но прихватили предлог. Получился лапутский костюм с лишним рукавом: сшито аккуратно, а носить некому. Оставляем ровно «Омске». В полном уроке Hugging Face о классификации токенов распознавание сущностей также связывают с метками внутри последовательности; здесь нам достаточно увидеть точные фрагменты, без запуска обучения.

Где может помочь ИИ

Можно попросить помощника предложить разметку, а затем сверить её с исходником. Откройте DeepSeek или привычный вам ChatGPT/Claude и вставьте три строки с таким заданием:

Найди в этих текстах людей, организации и места. Используй PER, ORG, LOC. Лира и Вега здесь — организации. Верни таблицу: номер текста, точный фрагмент, метка. Копируй фрагменты буквально, без предлогов, внешних пробелов и точек; не меняй падеж. Если не можешь выбрать тип по условию, вынеси вопрос отдельно. Тексты: «Анна работает в Лира в Омске.»; «Илья приехал в Тулу.»; «Вега открыла офис в Перми.».

Ответ помощника — предложение для сверки. Сравните каждый фрагмент с таблицей выше и проверьте, что он существует в исходном тексте. Особенно внимательно посмотрите на окончания городов и пробелы по краям выделения.

Когда перейдёте к своим записям, начните с небольшого обезличенного отрывка — пригодится подготовка документа для нейросети. Оставьте рядом колонку «что исправлено»: помощник предложил «Тула», вы вернули исходное «Тулу». По такой записи уже видно, какое правило стоит напомнить на следующем листе. Если завтра попадётся «из Тулы», у вас уже будет правило: сохранять форму исходника, предлог оставить снаружи.

Из таблицы — в Label Studio

Для табличного результата достаточно уже сделанного. Следующий путь подходит, если у вас есть доступ к Label Studio — программе, где исходные материалы и метки сохраняют в одном проекте. Здесь понадобится создать файл с тремя текстами и затем выделить слова в интерфейсе.

Если не знаете, как сохранить такой файл на своём устройстве, начните с запроса помощнику:

Помоги перенести три учебных текста и метки PER/ORG/LOC в доступную мне Label Studio. Сначала уточни, какое у меня устройство и как я открываю программу. Затем давай по одному действию: что открыть, куда вставить или что нажать, что должно получиться. Начни с сохранения обычного текстового файла tasks.json. Жди моего ответа после каждого шага. Если названия кнопок отличаются, разберись по моему описанию и актуальной официальной инструкции.

Для файла используйте именно этот JSON. Это список из трёх задач; data.text содержит исходную строку. Сохраните его как обычный текст UTF-8 с именем tasks.json, без дополнительного расширения .txt.

[
  {"data":{"text":"Анна работает в Лира в Омске."}},
  {"data":{"text":"Илья приехал в Тулу."}},
  {"data":{"text":"Вега открыла офис в Перми."}}
]

В Label Studio создайте отдельный учебный проект через Create Project, задайте ему понятное имя. В разделе Data Import загрузите tasks.json. В Labeling Setup выберите шаблон Named Entity Recognition. Он задаёт выделение фрагментов внутри текста; это официальный шаблон NER.

Оставьте три нужные метки — PER, ORG и LOC. Если в шаблоне есть MISC, для нашего упражнения уберите её до начала разметки. Сохраните проект. Нужный результат этого шага — три задачи с теми же предложениями, что в файле.

Если удобнее настроить метки кодом, в Settings → Labeling Interface → Code можно задать такую конфигурацию:

<View>
  <Labels name="label" toName="text">
    <Label value="PER" background="#245144"/>
    <Label value="ORG" background="#b56145"/>
    <Label value="LOC" background="#ba8c32"/>
  </Labels>
  <Text name="text" value="$text"/>
</View>

Связка $text означает: показывать значение text из каждой задачи. Настройка интерфейса и импорт файла описаны отдельно в документации проекта и импорта данных.

Откройте первую задачу. Выберите метку PER и выделите ровно «Анна»; затем ORG — «Лира», LOC — «Омске». Сохраните аннотацию кнопкой Submit. Для второй строки отметьте «Илья»/PER и «Тулу»/LOC; для третьей — «Вега»/ORG и «Перми»/LOC. Если возвращаетесь к уже сохранённой задаче, кнопка сохранения может называться Update.

Перед переходом дальше сравните выделенное с таблицей. У первой строки должны быть три фрагмента, у второй и третьей — по два. На этом этапе видно, где случайно захвачен предлог или осталась неотмеченная организация.

Сохранить файл и проверить, что в него попало

В проекте нажмите Export, выберите JSON и скачайте файл — этот путь описан в документации экспорта. В JSON ищите исходные строки в data.text, а принятые аннотации — в annotations, внутри result.

У фрагмента будут метка и границы: start — начало, end — позиция сразу после последнего символа. Счёт начинается с нуля, пробелы тоже учитываются; это важно для текстовых меток Label Studio. В наших строках контрольные значения такие:

Строка Фрагмент start end
1 Анна 0 4
1 Лира 16 20
1 Омске 23 28
2 Илья 0 4
2 Тулу 15 19
3 Вега 0 4
3 Перми 20 25

Например, «Анна» занимает первые четыре символа: позиции 0, 1, 2 и 3. Поэтому конец равен 4. Это таблица для сверки экспорта, который вы получите у себя. Исходные пробелы и точки оставляйте на месте: после изменения строки прежние позиции могут относиться уже к другим буквам.

Если разбираться в JSON пока трудно, попросите ИИ проверить небольшой учебный фрагмент:

Сверь аннотации этих трёх учебных текстов с их data.text и контрольной таблицей. Для каждого фрагмента покажи подстроку от start до end, где end не включается, и её тип PER/ORG/LOC. Отдельно назови пропуски, лишние фрагменты, неверный тип и ошибки границ. Ничего не исправляй молча: сначала покажи расхождения.

После подсказки сверьте названные буквы с исходной строкой. Нужны три текста и семь принятых фрагментов с верными типами. Само число семь ещё ничего не решает: можно потерять Вегу, зато торжественно выдать слову «офис» свидетельство организации. В ведомости порядок, пропавшую Вегу никто не ищет.

При сверке разделяйте четыре случая:

Что случилось Пример Что поправить
Пропуск «Вега» осталась без метки Добавить ORG на нужные буквы
Лишняя метка В ORG попало слово «офис» Убрать этот фрагмент
Неверный тип «Анна» отмечена как LOC Заменить тип на PER
Ошибка границы Выделено «в Омске» Оставить только «Омске»

Первые две ошибки могут скрыть друг друга в общем количестве. Последние две тоже потребуют отдельных исправлений: цветная полоса на месте, но правило не выполнено.

Как из маленького примера вырастает рабочая разметка

Путь повторяется: определить задачу → договориться о метках и границах → выбрать подходящие разрешённые исходники → разметить → разобрать расхождения → проверить сохранённые данные. Человек, который выполняет разметку, называется аннотатором; хорошая инструкция помогает двум аннотаторам понимать задачу одинаково.

Когда появится запись «Вега выступила вечером», одного имени мало: так могут называться организация, человек или сценический образ. Найдите контекст и сверьтесь с инструкцией. В наших трёх строках тип Веги задан условием. Для своей коллекции заранее решите, где фиксировать «нужно уточнить», чтобы человек мог продолжить работу без случайной метки.

Рабочему набору нужны разные характерные случаи: сокращения, названия из нескольких слов, привычные опечатки. Попросите другого человека независимо разметить небольшую общую часть. При расхождении сравните конкретные буквы, тип и правило: один отметил всю фамилию с именем, другой только имя — значит, инструкция оставила развилку. После уточнения пересмотрите уже сделанные похожие случаи.

Сохраните версию правила вместе с данными. Если завтра решите выделять имена с фамилиями, станет понятно, какие старые записи требуют пересмотра. Дальше можно расширять набор, сохраняя один и тот же смысл меток.

Сам набор меток ещё не является обученной моделью. Что происходит после подготовки примеров и когда дообучение действительно уместно, разобрано в статье о дообучении языковой модели.

Вопросы и ответы

Любая таблица с текстами — уже размеченные данные?

Нет. Нужны метки, связанные с исходниками, и понятное правило, что они означают. Столбец с именами файлов сам по себе не сообщает модели, какой ответ мы считаем правильным.

Достаточно попросить ИИ выделить всё автоматически?

Он может подготовить первый вариант. Затем нужно проверить типы и границы по инструкции. В нашем примере важно заметить и лишний предлог, и замену «Перми» на «Пермь», хотя оба варианта человеку понятны.

Нужно ли каждому слову назначить категорию?

В нашем упражнении отмечаются только люди, организации и места. Остальной текст остаётся фоном. Для другой задачи набор меток и способ их записи могут отличаться.

Разметка и дообучение — это одно действие?

Разметка готовит примеры и эталоны. При дообучении алгоритм использует подготовленные данные для настройки модели. Между ними есть отдельный шаг обучения и последующая проверка результата.

Можно остановиться на таблице без программы?

Да. Три исходника, семь точных фрагментов и правило уже дают законченный результат для понимания процесса. Label Studio добавляет сохранение аннотаций в формате проекта и экспорт; выбирать программу удобнее после первой понятной ручной попытки.

Сохраните маленький комплект: исходные строки, правило, таблицу и, если пошли дальше, JSON с аннотациями. Вы уже можете объяснить другому человеку, что именно отмечать, и показать, как проверить его работу.

С собственной папкой заметок или новой задачей можно продолжить в практике клуба по работе с источниками: разобрать фрагмент, обсудить неоднозначное место, улучшить инструкцию. Семь слов уже на своих местах. Следующий лист из старой папки можно разбирать по тому же правилу.