Как должна выглядеть разметка для обучения трансформера распознавать спецтерминологию
Что проверяют
Можете ли вы превратить расплывчатое «научить модель терминам» в конкретную постановку задачи и формат данных, и понимаете ли, как разметка стыкуется с токенизатором трансформера. Следом обычно спрашивают, как проверить качество самой разметки и чем мерить модель.
Как отвечать
Сначала постановка. Чаще всего это классификация токенов, как в NER: энкодер семейства BERT для нужного языка помечает, какие слова образуют термин и какого он типа. Если тип не нужен, хватит одной метки TERM.
Форматы:
- спаны: текст плюс список
{start, end, label}по символам. Так размечают в Label Studio или doccano; - BIO (IOB2): метка на каждое слово,
B-TERMоткрывает термин,I-TERMпродолжает,Oвне терминов. Для «метод опорных векторов» этоB-TERM I-TERM I-TERM; - вложенность: если важен термин внутри термина, BIO его не выразит, нужна спановая модель или несколько слоёв меток.
Ключевой технический момент: токенизатор режет слова на подслова. Метки выравнивают через word_ids() быстрого токенизатора Hugging Face: первое подслово получает метку слова, остальные -100, и функция потерь их пропускает.
Качество задаёт инструкция для аннотаторов: где границы термина, входит ли прилагательное, как метить аббревиатуры. Часть данных размечают двое, считают согласие (каппа Коэна или F1 между аннотаторами), спорные случаи разбирает эксперт. Ускоряет работу предразметка словарём или моделью с ручной проверкой.
В выборке нужны и предложения без терминов, иначе модель начнёт находить их везде. Модель оценивают по F1 на уровне сущностей через seqeval, а не по точности токенов: токенов O большинство, и точность выходит высокой даже у бесполезной модели.
Где спотыкаются
Делят данные на train и test по предложениям. Куски одного документа и одни и те же термины попадают в обе части, и F1 выглядит лучше реального. Делят по документам и держат в тесте термины, которых не было в обучении.
Размечают без письменной инструкции. Три аннотатора ставят три разные границы, и модель учит шум.
Забывают выравнивание меток после токенизации, и метки съезжают относительно подслов.