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

В то время я работал аналитиком данных в одной из 50 крупнейших компаний Новой Зеландии, поэтому решил использовать данные, чтобы найти лучшую работу.

Конечно, есть несколько веб-сайтов со списками вакансий, которые имеют разумные инструменты категоризации и поиска. Проблема в том, что они не очень помогают при поиске работы, которая близко соответствует моему собственному набору навыков.

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

Определение проблемы

Задача очень похожа на поиск иголки в стоге сена. Я хотел найти «лучшую» работу для меня. Так как же определить «лучшее»? Для этого я решил, что именно они наиболее точно соответствуют моим собственным навыкам.

Поиск работы потребовал от меня погружения в обработку естественного языка (NLP). Мое резюме и навыки описаны с помощью текста, а вакансии перечислены и описаны с помощью текста. Итак, НЛП как нельзя лучше подходило для этой работы!

С 2013 года, с созданием word2vec, в НЛП произошел огромный прогресс. Word2vec был методом обучения нейронной сети для создания числового векторного представления слова. Оттуда мир НЛП развивался семимильными шагами. Теперь можно кодировать целые фрагменты текста, используя предварительно обученные модели.

Когда у вас есть числовое векторное представление описания работы, очень легко вычислить расстояние между одним вектором и другим. Итак, это просто вопрос кодирования моего резюме и всех списков вакансий, которые я смог найти в Интернете!

Получение данных

В Новой Зеландии самым популярным сайтом с вакансиями является Seek.co.nz. Сайт показывает почти все списки Новой Зеландии, а также списки для Австралии. На момент написания статьи в Новой Зеландии было более 34 500 объявлений о вакансиях. О ручном копировании и вставке описаний вакансий не могло быть и речи. Итак, я использовал Python для программного доступа к API сайта и сбора списков вакансий в областях, в которых мне было интересно жить и работать.

Получение «лучших» совпадений

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

Затем я мог рассчитать косинусное расстояние между вектором моего резюме и всеми векторами описания работы. Затем мы можем отсортировать вакансии в зависимости от того, насколько они соответствуют моему резюме. Проверьте лучшие матчи ниже! Списки имеют около 94% совпадений.

Кажется, что наука о данных и анализ с финансами — это роли, которые мне больше всего подходят. Это имеет смысл, учитывая мое происхождение!

Забрасывание более широкой сети

Хорошо, это здорово, когда работа лучше всего соответствует моему собственному резюме. Можно было бы просто начать подавать заявки на работу сверху вниз; однако я хотел забросить сеть пошире. Для меня было предпочтительнее получить несколько работ, которые могли бы не совпадать так близко. Итак, я решил сгруппировать описания вакансий и проверить вакансии в одной группе.

Используя HDBSCAN и UMAP для уменьшения размерности, я могу визуально идентифицировать кластеры заданий на основе их должностных инструкций. Зная, какие вакансии хорошо соответствуют моему резюме, я смог определить, какие кластеры были наиболее актуальны для меня. Все вакансии в этих кластерах фактически стали рекомендуемыми списками вакансий.

Приложения

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

Группирование рабочих мест также может использоваться консультантами по вопросам карьеры для наблюдения за тесно связанными типами должностей при консультировании о возможных карьерных изменениях.

Позже я использую это, чтобы создать более сложную модель, чтобы рекомендовать оптимальный следующий карьерный шаг. Это основано на графе типа работы со стохастическими переходами. (Подробнее об этом в другом посте!)

Краткое содержание

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

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

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

В Queenstown Resort College (QRC) мы запускаем нашу новую микросертификационную программу по машинному обучению в прекрасной Новой Зеландии. Присоединяйтесь к нам и приобретайте навыки, необходимые для следующих шагов в карьере!

Узнайте больше о наших микро-учетных данных по основам машинного обучения здесь.