Введение
Для отнесения вакансий к профессиональным категориям, как и для классификации текстов вообще, применяются линейные модели на признаках TF-IDF, прежде всего метод опорных векторов [1; 2], а также случайный лес [3] и градиентный бустинг [4]; на русскоязычных текстах их сравнивали, например, при классификации научных работ [5]. При наличии разметки, сделанной людьми (например, кодов профессий от сотрудников служб занятости), модели обучают и проверяют на ней [6].
В прикладных системах такой разметки часто нет, и категории присваиваются правилами по ключевым словам — это слабая разметка с шумом [7; 8]. Если модель и обучается, и проверяется на таких метках, метрика показывает, насколько точно модель воспроизводит правила, а не насколько верно определяет профессию; даже несколько процентов ошибок в тестовых метках способны изменить ранжирование моделей [9]. Такая схема использовалась и в ранее разработанной автором системе анализа вакансий [10], где качество оценивалось только по меткам-правилам. Цель работы — проверить, насколько эта оценка расходится с оценкой по независимой разметке.
Данные, разметка и модели
Объявления SuperJob и «Работы России» собраны через программные интерфейсы сайтов; после удаления точных повторов и записей не длиннее 20 символов осталось 2 752 вакансии (1 831 и 921 соответственно, 79 % — декабрь 2025 — январь 2026 г.). Классифицируется название с описанием без HTML-разметки.
Метки-правила. Для 13 категорий заданы списки из 5–20 ключевых слов; категории проверяются в фиксированном порядке, и вакансия получает первую, хотя бы одно ключевое слово которой входит в текст как подстрока, иначе — «Другое». Распределение сильно неравномерно: «Медицина» — 756 вакансий (27 %), «Финансы/Бухгалтерия» — 392, а «Строительство» и «Дизайн» — 7 и 4.
Эталонная разметка. 300 случайным вакансиям присвоена одна из тех же 14 категорий по основной трудовой функции, а не по отрасли работодателя (бухгалтер клиники — «Финансы/Бухгалтерия», а не «Медицина»).
Модели. Признаки — TF-IDF по словам и биграммам (до 30 000 признаков, документная частота от 2 до 95 %, сублинейное масштабирование), векторизатор обучается только на обучающей части разбиения; реализация — scikit-learn [11]. Сравниваются мультиномиальный наивный Байес (α = 0,1), логистическая регрессия и линейный SVM (C = 1), случайный лес (100 деревьев глубиной до 20) — все три со взвешиванием классов — и градиентный бустинг HistGradientBoosting по схеме LightGBM [4] (100 итераций, шаг 0,1, до 31 листа, 2 000 признаков, отобранных по χ²). Гиперпараметры не подбирались, кроме одного: без L2-регуляризации обучение бустинга в одном из разбиений разошлось (accuracy 0,16), и затем во всех разбиениях использована регуляризация 1,0.
Оценка по меткам-правилам — стратифицированная 5-блочная кросс-валидация, повторенная три раза (15 разбиений); разброс по разбиениям занижает неопределенность [12], и малые различия не следует считать значимыми. По эталону каждую из 300 вакансий классифицирует модель разбиения, где вакансия была тестовой (с усреднением по трем повторам). 95-процентные интервалы, в том числе для парных разностей, получены бутстрепом по вакансиям (2000 повторов) без поправки на множественные сравнения.
Результаты
Лучше всего метки-правила воспроизводят градиентный бустинг (accuracy 0,818, макро-F1 0,615) и линейный SVM (0,808 и 0,610) с разницей меньше разброса по разбиениям (табл. 1); без регуляризации и без сбойного разбиения бустинг давал 0,806. SVM обучается за 0,9 с, бустинг — за 71 с. Макро-F1 ниже accuracy, потому что в редких категориях от 4 до 18 примеров.
Таблица 1
Качество по меткам-правилам (15 разбиений кросс-валидации)
|
Модель |
Accuracy |
Макро-F1 |
Обучение, с |
Предсказание, мс |
|
Наивный Байес |
0,758 ± 0,013 |
0,480 ± 0,029 |
0,6 |
0,14 |
|
Логистическая регрессия |
0,777 ± 0,014 |
0,585 ± 0,019 |
5,4 |
0,18 |
|
Линейный SVM |
0,808 ± 0,018 |
0,610 ± 0,023 |
0,9 |
0,14 |
|
Случайный лес |
0,756 ± 0,016 |
0,573 ± 0,026 |
1,0 |
0,20 |
|
Градиентный бустинг |
0,818 ± 0,018 |
0,615 ± 0,032 |
70,9 |
0,30 |
Примечание: среднее ± стандартное отклонение по 15 разбиениям; время — медиана по разбиениям (обучение на ≈2 200 вакансиях, предсказание — в расчете на одну вакансию). Случайный лес и бустинг используют два ядра процессора, остальные модели — одно.
Сами правила совпали с эталоном лишь в 69,3 % вакансий (табл. 2): побеждает категория, стоящая в списке раньше, где бы ни встретилось ее ключевое слово. «Медицина» проверяется второй, и слова из условий работы («медицинская страховка», «ДМС со стоматологией») относят к ней инженеров, экономистов, водителей (точность категории — 0,70), а инженеры-сметчики попадают в «Производство/Инженерию» по слову «инженер» (полнота «Строительства» — 0).
Таблица 2
Сравнение с эталонной разметкой 300 случайных вакансий
|
Классификатор |
Совпадение с метками-правилами |
Accuracy по эталону |
Макро-F1 по эталону |
Разность с правилами, п. п. |
|
Правила (без обучения) |
- |
0,693 [0,640; 0,747] |
0,498 |
- |
|
Наивный Байес |
0,734 |
0,704 [0,652; 0,754] |
0,392 |
+1,1 [−3,2; 5,7] |
|
Логистическая регрессия |
0,759 |
0,774 [0,729; 0,820] |
0,498 |
+8,1 [4,1; 12,8] |
|
Линейный SVM |
0,777 |
0,749 [0,701; 0,796] |
0,466 |
+5,6 [1,7; 9,8] |
|
Случайный лес |
0,742 |
0,753 [0,708; 0,798] |
0,511 |
+6,0 [1,7; 10,4] |
|
Градиентный бустинг |
0,817 |
0,717 [0,668; 0,764] |
0,456 |
+2,3 [−1,6; 6,3] |
Примечание: в скобках — 95-процентный доверительный интервал (бутстреп по вакансиям). Предсказания получены вне обучающей выборки и усреднены по трем повторам.
Логистическая регрессия, линейный SVM и случайный лес совпадают с эталоном чаще правил — на 5,6–8,1 п. п. (интервалы разности не включают нуль): классификатор учитывает все слова текста, и единичные случайные совпадения слабее влияют на решение, что ожидаемо при обучении на слабой разметке [7; 8]. Бустинг и наивный Байес значимо от правил не отличаются.
Главное расхождение оценок — в порядке моделей (рис. 1). Бустинг лучше всех совпадает с метками-правилами, в том числе на тех же 300 вакансиях (0,817), но по эталону уступает логистической регрессии на 5,8 п. п. [2,0; 9,6]; отставание от линейного SVM и случайного леса (3–4 п. п.) на границе значимости. На 92 вакансиях, где правила ошиблись, бустинг повторяет их ошибочную категорию в 58 % случаев, остальные модели — в 36–43 %. Возможная причина — отбор признаков по χ² относительно меток-правил, который оставляет прежде всего ключевые слова самих правил; эта гипотеза не проверялась. Логистическая регрессия совпадает с эталоном чаще линейного SVM на 2,6 п. п. [0,4; 4,7], а от случайного леса значимо не отличается (2,1 п. п. [−0,6; 4,9]).
Рис. 1. Accuracy классификаторов по меткам-правилам (среднее по кросс-валидации) и по эталонной разметке (с 95-процентным интервалом)
Обсуждение и ограничения
Логистическая регрессия, линейный SVM и случайный лес обучаются за секунды и даже на шумных метках превосходят сами правила. Но выбирать модель по метрикам на метках-правилах ненадежно: такая оценка вознаграждает копирование правил вместе с ошибками. Нужна независимая размеченная выборка; уже 300 вакансий дают интервал около ±5 п. п. Улучшать стоит и правила: искать ключевые слова по границам слов, отдавать приоритет названию должности, не учитывать описание работодателя и условий работы или брать метки из профессиональных ролей, указанных работодателем. Ограничения: корпус невелик и не включает hh.ru; в редких категориях единицы примеров; эталон проверен одним человеком — автором; у 139 вакансий описание совпадает с другой вакансией, что может немного завышать оценку кросс-валидацией; бустинг обучался на сокращенном наборе признаков, и его результат нельзя напрямую переносить на LightGBM с полным разреженным представлением.
Заключение
На 2 752 русскоязычных вакансиях градиентный бустинг и линейный SVM лучше других моделей воспроизвели метки-правила (accuracy 0,82 и 0,81), но по эталонной разметке бустинг значимо уступил логистической регрессии и чаще других повторял ошибки правил. Правила совпали с эталоном в 69 % случаев, лучшие модели — в 75–77 %. Классификатор, обученный на эвристической разметке, следует оценивать по независимой выборке, а метрики по меткам-правилам приводить с оговоркой о происхождении меток.
Литература:
- Sebastiani F. Machine learning in automated text categorization // ACM Computing Surveys. 2002. Vol. 34, No. 1. P. 1–47. DOI: 10.1145/505282.505283.
- Joachims T. Text categorization with Support Vector Machines: Learning with many relevant features // Machine Learning: ECML-98: 10th European Conference on Machine Learning. Berlin; Heidelberg: Springer, 1998. P. 137–142. (Lecture Notes in Computer Science; vol. 1398). DOI: 10.1007/BFb0026683.
- Breiman L. Random Forests // Machine Learning. 2001. Vol. 45, No. 1. P. 5–32. DOI: 10.1023/A:1010933404324.
- LightGBM: A Highly Efficient Gradient Boosting Decision Tree / G. Ke, Q. Meng, T. Finley [et al.] // Advances in Neural Information Processing Systems 30 (NIPS 2017). 2017. P. 3146–3154.
- Иномов Б. Б., Тропманн-Фрик М. Классификация научных текстов по специальностям методами машинного обучения // Вестник НГУ. Серия: Информационные технологии. 2022. Т. 20, № 2. С. 27–36. DOI: 10.25205/1818–7900–2022–20–2–27–36.
- Multilingual Hierarchical Classification of Job Advertisements for Job Vacancy Statistics / M. Beręsewicz, M. Wydmuch, H. Cherniaiev, R. Pater // Journal of Official Statistics. 2026. Vol. 42, No. 1. P. 23–61. DOI: 10.1177/0282423X251395400.
- Snorkel: Rapid Training Data Creation with Weak Supervision / A. Ratner, S. H. Bach, H. Ehrenberg [et al.] // Proceedings of the VLDB Endowment. 2017. Vol. 11, No. 3. P. 269–282. DOI: 10.14778/3157794.3157797.
- Frénay B., Verleysen M. Classification in the Presence of Label Noise: A Survey // IEEE Transactions on Neural Networks and Learning Systems. 2014. Vol. 25, No. 5. P. 845–869. DOI: 10.1109/TNNLS.2013.2292894.
- Northcutt C. G., Athalye A., Mueller J. Pervasive Label Errors in Test Sets Destabilize Machine Learning Benchmarks // Proceedings of the Neural Information Processing Systems Track on Datasets and Benchmarks. 2021. Vol. 1. URL: https://datasets-benchmarks-proceedings.neurips.cc/paper/2021/hash/f2217062e9a397a1dca429e7d70bc6ca-Abstract-round1.html (дата обращения: 13.10.2026).
- Сотниченко З. Э. Разработка системы анализа текстов вакансий онлайн-бирж труда на основе алгоритмов машинного обучения // XV Конгресс молодых ученых Университета ИТМО (Санкт-Петербург, 6–10 апреля 2026 г.). URL: https://kmu.itmo.ru/file/download/application/59063 (дата обращения: 13.10.2026).
- Scikit-learn: Machine Learning in Python / F. Pedregosa, G. Varoquaux, A. Gramfort [et al.] // Journal of Machine Learning Research. 2011. Vol. 12. P. 2825–2830.
- Nadeau C., Bengio Y. Inference for the Generalization Error // Machine Learning. 2003. Vol. 52, No. 3. P. 239–281. DOI: 10.1023/A:1024068626366.

