Привет, Хабр! Недавно мы делились с вами интервью с представителем робота Веры, первого в мире робота-рекрутера, разработанного в России командой Stafory. И вот подъехали технические подробности проекта, ведь мы попросили ребят рассказать, как устроена Вера.



Интервью о роботе Вере.

Передаю слово автору.

Робота Веру придумали чуть больше года назад, но за такое короткое время она успела сделать довольно много. Первый в мире робот-рекрутер экономит 60% рабочего времени для специалистов по подбору персонала в 300 компаниях не только в России, но и за рубежом. Всего за год Вера успела подобрать компаниям больше 95 000 кандидатов, провести 2 300 видеоинтервью и сделать больше 1 000 000 звонков, а в октябре 2017 года еще и выиграла всемирный конкурс стартапов HR Tech World.



Работы уйма — Вера ищет подходящие резюме соискателей среди десятков миллионов записей на работных сайтах, одновременно делает десятки тысяч звонков соискателям, чтобы предложить им вакансии, проводит видеоинтервью, распознает эмоции кандидатов и на вопрос “А что по деньгам-то?” ответит не хуже, чем на стандартный “Какую заработную плату предлагают?”.

Веб-сторона Веры


Управление Верой происходит в личном кабинете на сайте robotvera.com, а быстро запустить робота-рекрутера и обеспечить бесперебойную работу помогли решения от Microsoft. Первым, что разворачивали в облаке Azure, был веб-сервер на Django. Благодаря тому, что на маркетплейсе есть готовое решение с очень простой и понятной документацией, все настроили очень быстро. В общей сложности от начала работ до момента, когда развернули сайт, прошло меньше часа.

Это со временем мы перешли на стандартные инстансы с Ubuntu, но на первых этапах возможность развернуть сайт как облачный сервис, потратив всего несколько минут, для нас была очень полезной. Еще очень кстати оказалось наличие в маркетплейсе инстансов уже с Django. Например, тут есть сборка виртуальной машины от Bitnami, и если ей воспользоваться, то уже не надо устанавливать Django и сервер — все уже есть. В результате надо просто создать и запустить свое приложение-сайт.

Конечно, нельзя не учитывать, что у Bitnami есть свои особенности, например, дополнительный файрволл — из-за него порт надо открывать не только на Azure, но и на самой виртуальной машине в Bitnami. Но это тоже не сложно и не занимает много времени, тем более при помощи маркетплейса Azure мы его уже изрядно сэкономили.

Обучаем Веру


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

Мы хотим, чтобы наш робот-рекрутер не просто задавал вопросы работодателя по скрипту и механически фиксировал ответы, но и мог рассказать кандидату ту информацию, которая его интересует, справляясь с любой сложностью формулировок. Эта задача лежит в области машинного обучения. Запрограммировать хардкорно все варианты возможных вопросов от соискателей оказалось практически невозможно, потому что вариаций тысячи. Стандартный вопрос “Какая зарплата?” может звучать в десятке вариантов, например, “Что по деньгам?”, “Какой оклад?” или “Сколько денег дают?”.

Все варианты предусмотреть невозможно, и чтобы находить наиболее близкий по смыслу ответ на вопрос кандидата, мы решили использовать библиотеку word2vec. Если вдруг кто-то забыл или не знает, это технология, которая обрабатывает огромные массивы текстовой информации и вычисляет векторное представление слов. Последнее основано на близости в контексте: слова, которые встречаются в тексте рядом с одинаковыми словами, определяются как имеющие схожий смысл. В векторном представлении они будут иметь близкие координаты векторов-слов.

Давайте посмотрим, как обучается модель на паре предложений, в данном случае это слова, касающиеся доходов.



В коде выше мы инициализируем массив с предложениями, потом создаем модель word2vec и передаем в нее наш массив в качестве аргумента. Получаем все вектора из модели в переменную Х. Далее создаем двухмерную модель PCA (метод главных компонент) с помощью библиотеки scikit-learn, вызываем метод fit_transform и передаем в него наши вектора.

После этого наши слова можно отобразить в векторном пространстве, используя pyplot:



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

Чтобы робот стал полноценно общаться, мы загрузили в модель 13 миллиардов слов (это 25 000 книг и телесценариев, или 150 Гб текстов) и описание 100 000 вакансий. Это огромный массив данных, но только после этого модель начинает достаточно хорошо считать расстояние между предложениями и позволяет корректно подбирать ответы на вопросы пользователей.

Для расчета расстояния используем метод wmdistance(). Если брать наш же пример с парой предложений, которые используем в качестве аргументов, в данном случае модель должна рассчитать между этими предложениями расстояние. На листинге ниже видно, как это работает: вопрос кандидата “сколько платите?” имеет меньшую дистанцию по отношению к слову “зарплата”, чем, например, к слову “адрес”.



Учитывая, какой объем информации мы загрузили, чтобы робот мог общаться полноценно и расстояния между предложениями рассчитывались корректно, наша модель весит более 19 ГБ в оперативной памяти, плюс корпус для обучения — еще 41 ГБ. Опять же, используя Azure, мы легко подобрали подходящую машину. Развертка ее заняла несколько минут, после этого мы на данном инстансе сделали API для использования этой модели в своем продукте.

Обучаем Веру за 1 ночь


А вот еще одна история, когда Azure помог быстро подобрать нужный инстанс. Когда мы проводили pre-ICO, нам нужно было за ночь обучить чат-бота отвечать на вопросы про криптовалюту и блокчейн. Диалоги мы брали с этого форума. Полноценных диалогов там не так много, но все же достаточно, чтобы машина начала говорить что-то более-менее связное.

Например, у нас получились вот такие диалоги:

— Is mining illegal?
— That depends per view.

— Chinese government banned all of ICOs.
— Please don't panic, just calm for your mother.

— What is your favorite trading exchange?
— I use coinbase.

Бота мы учили, используя модель Sequence-to-Sequence библиотеки TensorFlow, которая переводит текст с французского на английский. Для обучения была необходима машина с GPU, поэтому мы использовали инстанс Azure N-Series. Все обучение проходило в облаке. Конечно, из примеров видно, что бот делал ошибки, и 100% совпадения вопросов и ответов мы на тот момент не добились. Но учитывая, что на разработку и обучение мы потратили всего один день и одну ночь, а бот при этом еще и умудрялся шутить, будем считать, что цели мы добились.

А тут вы найдете интервью с Алексеем Костаревым, одним из создателей Робота Веры.

Об авторе


Владимир Свешников — в прошлом основатель компании по оформлению персонала из стран СНГ. Затем партнеры создали робота Веру. Осенью 2017 года Робот Вера стал первым российским стартапом, выигравшим всемирный конкурс питчей на конференции HR Tech World 2017 в Амстердаме.

Комментарии (8)


  1. InstaHeat
    16.02.2018 09:30

    Вроде бы подобные достижения должны радовать. Но известно, что роботы сейчас не намного умнее человека в общении, да и могут далеко не все. И с таким подтекстом этот робот — не показатель ли качества работы «живых» HR? Не буду обобщать, но мне часто встречались довольно слабенькие рекрутеры. На фоне них Вера куда выгоднее. Плюс «вау» эффект


  1. Areso
    16.02.2018 10:47

    В который уже раз…
    Как заменить HR-a роботом? причем здесь ряд комментаторов, и я в том числе, решили посмотреть, что из себя представляет столь продвигаемая технология и пришли к неудовл. выводу InstaHeat
    HR-робот обзванивает тысячи людей одновременно: рассказываем, как


    1. InstaHeat
      16.02.2018 12:12

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

      подобрать компаниям больше 95 000 кандидатов

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


      1. lybin
        16.02.2018 14:22

        Верно, это одна из первых автоматизаций в HR, массовые вакансии, без Веры надо обзвонить в ручную 95 000 спросить удобно ли, задать 95 000 раз одни и те же вопросы.
        Про удобно ли говорить есть настройка, Вера может спросить в начале диалога, зависит от рекрутера, который настраивает логику анкетирования.


    1. Mox
      16.02.2018 13:17

      Всему свое применение. Хороших спецов хантят лично и никакие роботы общаться тут не помогут. А вот когда надо закрыть 300 позиций на заправки какой-нибудь Газпромнефти — отличное решение.


  1. enjoykaz
    16.02.2018 11:48
    -2

    Вроде все большие дяди, а желтые клик-бейт заголовки пишем, как будто студентка плохого журфака из Пензы.

    image


    1. sahsAGU Автор
      16.02.2018 12:21

      Иногда говорят «Каждый понимает все в меру своей испорченности». Никого не имею ввиду :), но такого подтекста уж точно не было.
      Небольшой подтекст есть о науке Анатомии. Она изучает строение организмов, внутренние органы и все такое. А мы пишем, что в статье ничего об этом не будет, будут только технические внутренности.


  1. StViga
    16.02.2018 12:46
    +1

    Отличное решение. Уверен, что такой робот во многом лучше 70% всех HR. Плюс нет человеческого фактора, который может быть на подобии того, что кто-то может нравится/не нравиться внешне девочке HR, например.