Заявка (связь = отклик кандидата на вакансию, статус: принят / не принят, источник подбора, номер вакансии)
Всего уникальных связок 43 000.
➕ Большинство данных — структурированных (не нужно парсить / классифицировать)
Вызовы
Сложно дать относительный / отнормированный score от 0 до 100%.
Решать как классификацию или как ранжирование?
Как всегда imbalanced данные.
Решение
❗ Стандартный CV-Resume Matching от SAP не подошел (русский язык, нестандартные поля приводили к нулевому качеству). Плюс, он делал matching 2 текстовых документов.
Supervised задачка
Feature generation — ключ к решению
— Строковое расстояние м\у адресом проживания кандидата и адресом из вакансии. — Внутренний кандидат или нет: 0 – внешний, 1 – внутренний. — Значение схожести м\у текущей позицией кандидата и должностью из вакансии. — Строковое расстояние м\у предыдущими позициями кандидата в Сбербанке (если внутренний) и должностью из вакансии. — Строковое расстояние м\у предыдущими позициями кандидата (вне) и должностью из вакансии. — Наличие наград у кандидата: 0 – нет, 1 – есть. — Уровень образования кандидата: среднее, высшее, PhD, … — Строковое расстояние м\у отделением в пред. опыте кандидата в Сбербанке (если внутренний) и отделом из вакансии. — Строковое расстояние м\у отделением в пред. опыте кандидата (вне) и отделом из вакансии. — Подсчет количество общих слов между полем «Область бизнеса» в пред. опыте кандидата и полем «Доп. требования» из вакансии. — Наличие опыта руководства у кандидата: 0 – нет, 1 – есть. — Подсчет количество общих слов между полем «Область руководства» в пред. опыте кандидата и полем «Доп. требования» из вакансии. — Наличие функционального опыта у кандидата: 0 – нет, 1 – есть. — Подсчет количество общих слов между полем «Функциональный опыт» в пред. опыте кандидата и полем «Доп. требования» из вакансии. — Подсчет количество общих слов между полем «Функциональный опыт» в пред. опыте кандидата и полем «Функциональный блок» из вакансии. — Подсчет количество общих слов между полем «Язык» кандидата и полем «Доп. требования» из вакансии. — Количество иностранных язык, которыми владеет кандидат. — Является ли вакансия конфиденциальной: 0 – нет, 1 – да. — Причина возникновения вакансии: расширение численности, стажировка, … — Разряд по должности вакансии.
Архитектура решения:
Результат
Метрики
— Accuracy (a-ka hit rate): 82% — очень плохая метрика для текущей задачи (баланс классов, задача ранжирования). — Recall (полнота): 83% — показывает с какой вероятностью мы не пропустим релевантного кандидата, т.е. score будет высоким.
Важные признаки
— Соответствие между позицией в вакансии и позицией в резюме кандидата. — Соответствие между позицией в вакансии и позицией предыдущего внешнего места работы кандидата (вне Сбербанка). — Разряд по должности. — Соответствие между функциональной сферой позиции в вакансии и образованием кандидата. — Соответствие между городом вакансии и городом кандидата. — Конфиденциальная ли вакансия. — Соответствие между функциональной областью позиции в вакансии и образованием кандидата. — Соответствие между подразделением позиции в вакансии и отделом предыдущего внешнего места работы кандидата (вне Сбербанка). — Соответствие между дополнительными требованиями вакансии и функциональной областью позиции кандидата с предыдущего внешнего места работы (вне Сбербанка). — Источник резюме — доска объявления. — Соответствие между дополнительными требованиями вакансии и функциональной областью позиции кандидата с предыдущего внутреннего места работы (внутри Сбербанка). — Соответствие между подразделением позиции в вакансии и отделом предыдущего внутреннего места работы кандидата (внутри Сбербанка). — Соответствие между позицией в вакансии и позицией предыдущего внутреннего места работы кандидата (внутри Сбербанка).
Аналитика
Модели для некоторых функциональных сфер:
Demo
Что дальше
сейчас SAP SF убрали.
сейчас благодарю LLM есть новый виток развития подобных HR продуктов.