[Поисковые технологии, Машинное обучение, Развитие стартапа, Карьера в IT-индустрии, Поисковая оптимизация] Как мы запустили агрегатор удаленных вакансий и зачем в нем ML
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
В один прекрасный день в конце 2020 года мы решили сделать еще один агрегатор удаленных вакансий, начав с исключительно IT-позиций. Логично спросить: зачем? Мол, на рынке их уже достаточно. Ответ на этот вопрос звучит очень просто: мы понимали, как улучшить текущие решения как минимум по пяти параметрам.
- Количество (агрегировать больше всех в мире);
- Реальная удаленка (а не позиции в стиле "remote until COVID-19");
- Актуальность (часто на схожих сайтах можно найти большое количество неактуальных вакансий);
- Хороший поиск (по нашему мнению поиск на текущих сайтах с удаленными вакансиями находится на уровне 2005 года);
- Фильтр по гражданству.
О последнем параметре я и хочу сегодня рассказать.Прежде, чем вы начнете читать. Сегодня мы запустились с Bergamot на ProductHunt. И, если у вас вдруг возникло желание поддержать наш продукт, будет круто. Ищите нас тут. ПроблемаИногда компании устанавливают ограничения для граждан некоторых стран (например, компания готова нанимать только ребят с гражданством США / или конкретным типом визы ЕС). Как правило, на страницах с описанием вакансий нет отдельного поля где выводились бы подобные ограничения. И поиска/фильтра, соответственно, тоже нет. Поэтому соискателю приходится внимательно читать текст каждой вакансии, чтобы понять, есть ли вообще смысл откликаться на эту позицию.Мы знали, как решить эту проблему, а именно — показывать пользователю только те вакансии, на которые он реально может претендовать, учитывая его гражданство.АнализСначала мы думали решить эту задачу простыми алгоритмическими методами. Базовая идея заключалась в следующем:Шаг №1Ищем определенные ключевые слова в тексте, например: «only», «remote in», «authorized to work in» и так далее.Шаг №2Ищем рядом с ключевыми словами локацию. Как правило, это слово, которое начинается с заглавной буквы. Если такое слово-локация находится, то оно и является ограничением.Окей, если в вакансии написано «USA only», то такая логика работает идеально. Но если капнуть глубже, становится понятно, что ограничения могут быть обозначены самыми разными, например:
- This role is remote and you can be based anywhere across the UK
- Living in Europe is a must
- This opportunity is only open to candidates within Canada at this time
- Location: Argentina (any part of the country it’s great for us!)
- и еще сотни других описаний.
Очевидно, алгоритмами задачу не решить — и мы попробовали использовать силу ML-a.ЗадачаНа всякий случай ещё раз сформулирую задачу. На входе — текст с описанием вакансии, в котором, как правило, содержится описание компании, стек технологий, требования, условия, бенефиты и так далее. На выходе у нас должны быть параметры:restriction: 0 (no) / 1 (yes)если restriction = 1, то тогда необходимо выделять еще и страну, по которой есть ограничениеРешениеСтруктура решенияИтак: на входе у нас текст, в котором обычно содержится куча всего. Задача была несколько сложнее, чем просто написать обычный классификатор. Сначала нужно было найти, что именно классифицировать.Так как мы пытаемся решить проблему с локациями, для начала нам нужно найти их в тексте. Потом выделить все предложения, в которых содержались локации и уже для них написать классификатор.Нахождение локацийСначала мы также хотели решить задачу «в лоб»: найти где-нибудь список всех стран и городов и просто искать их вхождение в тексте. Но опять же, задача оказалась не такой очевидной.Во-первых, ограничения касались не только стран и столиц мира, а также небольших городов и штатов. Например «Can work full time in Eugene, OR / Hammond, IN». А сделать список локаций всех уровней уже сложнее.Во-вторых, написания локаций в вакансиях часто отличались от стандартного (например «100% Remote in LATAM»).Поэтому для выделения локаций мы приняли решение использовать NER. Пробовали разные готовые варианты:
В итоге выбор пал на spaCy, потому что из готовых и бесплатных вариантов spaCy EntityRecognizer показал наилучший результат.Итого: нам удалось выделить в тексте локации.Разделение на предложенияДля разделения на предложения, где есть локации, мы тоже использовали spaCy.На выходе мы получили список предложений из текста, где содержатся локации. Вот примеры таких предложений:
- The position is remote so the only thing is they have to be in the US and be able to work Eastern or Central time.
- This job is located out of our Chicago office, but remote, US-based applicants are still encouraged to apply.
- This is a remote role, but we're looking for candidates based in Montreal, Canada.
КлассификаторЭти предложения и должна была разметить модель. Важно — у нас не было возможности сделать датасет с десятками тысяч таких предложений (на это нужно очень много времени), поэтому при подборе модели нам надо было учесть эти ограничения.Решили попробовать несколько моделей, среди которых как более простые CNN и LSTM, так и более современные transformers. Последние предсказуемо оказались лучше, обучение которых сводилось по сути к fine-tunning — это нам точно подходило, ведь датасет, как я уже сказал выше, был невелик.Среди transformers наилучший результат показала архитектура RoBERTa (roberta-base) с показателем точности 94% для нашего датасета.Нормализация локацийНа основе классификатора и NER-a для каждой вакансии мы получили вот такие дополнительные поля:restriction: 1 (yes); location: LondonRestriction отдавал классификатор. А вот Location выдавал NER. Из-за того что в поле Location могли быть разные написания городов и стран, мы еще сделали дополнительную нормализацию через Google API. Остановились на том, чтобы сделать ограничения по странам.То есть на выходе получалось:restriction: 1 (yes); location: United KingdomИтогВ итоге мы теперь умеем это делать и кандидаты могут фильтровать неподходящие для них вакансии. Mission accomplished (вроде бы! вы можете сами потестить Bergamot и написать, что думаете).
===========
Источник:
habr.com
===========
Похожие новости:
- [Управление разработкой, Управление проектами, Карьера в IT-индустрии] Гайд начинающего тимлида
- [Научно-популярное, Физика, Астрономия] Исследователи ищут скрытые нити тёмной материи между галактиками с помощью машинного обучения
- [Машинное обучение, Google Cloud Platform] Google запустила Vertex AI — объединеную платформу для машинного обучения
- [Карьера в IT-индустрии] Портфолио разработчика по Джошу Комо: структура, наполнение, смысл
- [Управление персоналом, Карьера в IT-индустрии, IT-компании, Удалённая работа] Зачем разработчику soft-скиллы и как HR-менеджеры оценивают hard-скиллы: опыт игроков IT-рынка
- [Карьера в IT-индустрии] DINS IT EVENING (online): Резюме, которое работает на тебя
- [Программирование, Машинное обучение] Автоматизация машинного обучения
- [Управление продажами, Управление персоналом, Карьера в IT-индустрии, Интервью] Как устроиться в компанию мечты: тренинг-интервью от «А» до «Я»
- [Карьера в IT-индустрии, Читальный зал] Dear Haters. За что хейтеры травят юзеров, и как с этим бороться
- [Тестирование IT-систем, Тестирование веб-сервисов, Тестирование мобильных приложений, Карьера в IT-индустрии] 7 QA-шных грехов, которые помогут или помешают тестировщику (стать тем, кем ты хочешь)
Теги для поиска: #_poiskovye_tehnologii (Поисковые технологии), #_mashinnoe_obuchenie (Машинное обучение), #_razvitie_startapa (Развитие стартапа), #_karera_v_itindustrii (Карьера в IT-индустрии), #_poiskovaja_optimizatsija (Поисковая оптимизация), #_mashinnoe+obuchenie (машинное+обучение), #_mashinnoe_obuchenie (машинное обучение), #_machine_learning, #_udalennaja_rabota (удаленная работа), #_poisk_raboty (поиск работы), #_poisk_raboty_za_rubezhom (поиск работы за рубежом), #_parsing (парсинг), #_ner, #_normalizatsija (нормализация), #_poiskovye_tehnologii (
Поисковые технологии
), #_mashinnoe_obuchenie (
Машинное обучение
), #_razvitie_startapa (
Развитие стартапа
), #_karera_v_itindustrii (
Карьера в IT-индустрии
), #_poiskovaja_optimizatsija (
Поисковая оптимизация
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 18:37
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
В один прекрасный день в конце 2020 года мы решили сделать еще один агрегатор удаленных вакансий, начав с исключительно IT-позиций. Логично спросить: зачем? Мол, на рынке их уже достаточно. Ответ на этот вопрос звучит очень просто: мы понимали, как улучшить текущие решения как минимум по пяти параметрам.
=========== Источник: habr.com =========== Похожие новости:
Поисковые технологии ), #_mashinnoe_obuchenie ( Машинное обучение ), #_razvitie_startapa ( Развитие стартапа ), #_karera_v_itindustrii ( Карьера в IT-индустрии ), #_poiskovaja_optimizatsija ( Поисковая оптимизация ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 18:37
Часовой пояс: UTC + 5