У Свифта «платье» — это костюм Гулливера. На летучем острове Лапута портной обмеряет путешественника линейкой, циркулем и угломерным инструментом. Шесть дней вычислений — и готова одежда не по фигуре. Геометрия довольна. Гулливер пока ищет в этом костюме себя.
Разметка данных для обучения нейросетей — это добавление к исходным материалам целевых меток. Они показывают, какой ответ нужен: класс сообщения, имя внутри строки, область предмета на снимке. На размеченных примерах модель можно учить и проверять. Чтобы метка пригодилась, её нужно точно подогнать к задаче.
Попробуем разобраться на трёх коротких текстах. В них всего семь людей, организаций и городов, которые нужно отметить. К концу у вас будет таблица с точными фрагментами, короткое правило для разметчика и способ проверить результат. Если Label Studio уже доступна, тот же пример можно перенести в проект и сохранить разметку в JSON.
Разметка данных для обучения нейросетей: выбор меток
Допустим, вы разбираете старую папку. Между письмом, визиткой и записанным на обороте адресом обнаруживаются люди и города, которых хочется собрать в понятный список. На листе встретилась Тула. Отметить весь лист как «поездки» — один способ навести порядок. Найти внутри строки само название города — другой. Для каждого понадобится своё правило.
Если нужны имена и места, отмечают соответствующие кусочки текста. Если ищут кота на снимке, указывают объект на изображении. А если достаточно решить, есть ли кот вообще, можно назначить категорию всему снимку. Сам кот спокойно спит при любом способе. Разница проявится в том, какой ответ сможет проверять человек.
| Что хотим получить | Как размечаем | Что остаётся в результате |
|---|---|---|
| Тему входящего сообщения | Присваиваем категорию сообщению целиком | Текст и метка, например «доставка» |
| Людей и города в заметке | Выделяем фрагменты внутри текста | Границы каждого фрагмента и его тип |
| Положение предмета на фотографии | Обводим объект рамкой или отмечаем его область | Координаты и метка объекта |
| Участки аудиозаписи | Отмечаем начало и конец сегмента | Временные границы и нужная метка, например говорящий |
Состав меток зависит от задачи. Для одной коллекции достаточно категории на весь снимок, для другой нужно выделить каждый предмет. В рассказе команды NtechLab о разметке хорошо видна эта связь: данные готовят под признак, который затем должен распознавать алгоритм. Здесь начнём с текста — его границы легко увидеть самостоятельно.
Три строки и семь сущностей
Наш пример:
- «Анна работает в Лира в Омске.»
- «Илья приехал в Тулу.»
- «Вега открыла офис в Перми.»
Условимся, что Лира и Вега — названия организаций. Анна и Илья — люди. Омск, Тула и Пермь — города, но в разметке оставляем слова в той форме, в которой они стоят: «Омске», «Тулу», «Перми».
Задача называется распознаванием именованных сущностей, или 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 с аннотациями. Вы уже можете объяснить другому человеку, что именно отмечать, и показать, как проверить его работу.
С собственной папкой заметок или новой задачей можно продолжить в практике клуба по работе с источниками: разобрать фрагмент, обсудить неоднозначное место, улучшить инструкцию. Семь слов уже на своих местах. Следующий лист из старой папки можно разбирать по тому же правилу.