Как заменить HR-a роботом? Техническая часть

Мы уже рассказывали вам о проекте Робот Вера (об идее и об обучении робота). Сегодня мы поговорим с Владимиром Свешниковым, сооснователем и генеральным директором компании. Владимир — человек, который создал технологическую часть Робота Веры. Узнаем побольше как раз про технологии робота. Присоединяйтесь к просмотру. Ну, а если больше любите читать — под катом текстовая версия интервью.

Цикл статей «Digital Transformation»


Технологические статьи:

1. Начало.
2. Блокчейн в банке.
3. Учим машину разбираться в генах человека.
4. Машинное обучение и шоколадные конфеты.
5. Loading…

Серия интервью с Дмитрием Завалишиным на канале DZ Online:

1. Александр Ложечкин из Microsoft: Нужны ли разработчики в будущем?
2. Алексей Костарев из «Робот Вера»: Как заменить HR-a роботом?
3. Федор Овчинников из Додо Пицца: Как заменить директора ресторана роботом?
4. Андрей Голуб из ELSE Corp Srl: Как перестать тратить кучу времени на походы по магазинам?
5. Владимир Свешников из «Робот Вера»: Как заменить HR-a роботом? Техническая часть.


С кем интервью?


plsmlu_xg1fonp_uzuoxmzcrpwo.jpegДмитрий Завалишин — российский программист, автор концепции ОС Фантом, организатор и член программного комитета конференции OS Day, основатель группы компаний DZ Systems. В 1990—2000 годах принимал активное участие в создании Российских сегментов сети Интернет (Релком) и Фидонет, в частности, обеспечил прозрачное взаимодействие этих сетей. В 2000—2004 годах отвечал за проектирование, разработку и развитие портала компании Яндекс, создал службу Яндекс.Гуру (в дальнейшем — Яндекс.Маркет). Подробнее можно почитать на Wiki.

_mb46kccgqgga3vt5otdqxm1y7u.pngВладимир Свешников — Приехал в Санкт-Петербург в 2006 г. с Дальнего Востока. Получил диплом юриста в Финансово-экономическом университете. В 2009 г. они организовал компанию «Ферст стрит», которая занималась оформлением неквалифицированного персонала из СНГ. Позже занялся аутсорсингом персонала, и к 2012 г. у них с другом было два крупных клиента — сеть магазинов «Здоровый малыш» и «Дикси». Годовой оборот «Ферст стрит» составил 30 млн руб., а в 2013 г. — 50 млн. Но вскоре Владимир понял, что не видит себя в аутсорсинге и хочет сделать технологический стартап.

Интервью


Здравствуйте! В эфире DZ Online технологии, и наш первый гость Владимир Свешников сооснователь и генеральный директор компании Робот Вера, которая занимается подбором персонала с помощью искусственного интеллекта. Это один из первых, наверное, стартапов, которые реально допускают искусственный интеллект до людей. Мы уже с вами встречались, обсуждая бизнес-задачи этого направления, и узнали о том для чего он нужен и почему он хорош. А сегодня Владимир расскажет нам немножко про то, как все это устроено, какие проблемы возникали на пути к тому идеальному…во всяком случае, действующему решению, которое есть сейчас. Владимир, здравствуйте!

Да, здравствуйте! Да, я с удовольствием расскажу о том, как мы начинали. Дело в том, что нас было всего трое в команде, это было всего год назад. Сейчас у нас в компании уже больше 50-и человек в совокупности работает. Но когда мы были втроем, я полностью отвечал за всю техническую часть. Изначально мы начинали делать такие простые вещи. То есть, мы просто взяли и начали повторять процесс рекрутера. Мы за него искали резюме, за него звонили кандидатам, за него отправляли e-mail с описанием вакансии. И так как у меня есть определенный технический background.

Я хоть по образованию юрист, но потом перепрофилировался в программисты. И я понял, что вот эти процессы они очень рутинные, очень монотонные, их можно автоматизировать. И первое, что мы сделали… это, я помню, был день, когда мы искали резюме. Это занимало где-то полдня: полдня поиск резюме, полдня, соответственное, звонки. Потом я полез… мы это делали на сайтах SuperJob, Работа, Зарплата.ру. Потом полез на их ip посмотрел, понял, что можно вот то, что мы делали полдня, сделать за одну минуту. И мы с партнером делали это вдвоем. Он, в общем, искал резюме как-то в один день, а я пошел за одну минуту это все сделал, пошел пить чай. Приходит, говорит: «А ты чего чай пьешь?», я говорю: «Я уже выполнил свой норматив».

Норму свою сделал.

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

То есть, вот человек синтезировал речь и распознавал речь? Вот в этом смысле вы же в этот момент осознали его, как деталь вот этой самой машины по коммуникации с… До этого момента все было просто. Забрать через ip список вакансий, выбрать их по какому-то ключевому слову. Хотя, есть тонкости по большому счету. Но Бог с ним. Наверное, к ним позже вернемся. В некоторый момент вы начали заниматься именно голосом: синтезировать речь и распознавать речь. Синтезировать — тоже все понятно: были скрипты, они более менее фиксированы, наверное, для определенного подбора. А распознавание — это… Ведь вы начали с очень простых сначала вопросов и ответов?

Да.

Это упиралось именно в то, что распознавание плохо работало?

Да, безусловно. Там несколько моментов. Там, если смотреть на то… В первую очередь мы очень долго искали подход, как людям сделать так, чтобы они понимали то, что они разговаривают с роботом, как они строили диалог. То есть, сперва у людей шок, они не понимают, что говорить, что отвечать (особенно, когда мы звоним в регионы). Москва, Петербург еще как-то нормально, но в регионах люди прям удивляются: что такое робот? (Там всякую различную лексику можно услышать в этот момент).

И тогда мы стали… мы сделали так, что она стала представляться и потом она задает определенный стандартный формат общения. То есть, она говорит: «Я умею распознавать ответы «да» или «нет». Отвечайте на мои вопросы «да» или «нет». Тогда люди начинают понимать, что вот, если они скажут «да», то… ну, то есть, как им общаться они понимают. Потому что до этого у них возникает диссонанс. То есть, вроде робот, роботов, вроде, еще нет. Что такое? Звонок из будущего? Ну, в общем, вот это вот все. Соответственно, да, скорее всего, тут именно распознавание речи. Оно сейчас работает настолько, что оно может разные слова абсолютно распознавать. То есть, у нас сейчас есть скрипты, где они выбирают вакансии, где они задают вопросы. То есть, мы это все хорошо распознаем. А вот именно «да» или «нет» — это было для того, чтобы люди поняли, как общаться с роботом. То есть, вот это был момент основной.

То есть, вы могли больше делать и сразу?

Да.

Или все-таки нет? Потому что дальше ведь начинается семантика.

Да, ну, семантику мы уже добавили потом. То есть, это мы добавили вот несколько месяцев назад именно ответы на вопросы. Вот именно распознать то, что он сказал — мы могли давно. У нас даже был там в этом скрипте такой пункт: если он говорит нет, вакансия ему неинтересна, то мы спрашиваем «Почему неинтересна?». И вот там он отвечает почему неинтересна.

vbq3ug4yn5jsq2d2jybccwwllqc.jpeg

Но это запись? Вы просто записываете ответ не пытаясь проанализировать?

Мы распознаем его.

Распознаете?

Да и показываем в личном кабинете именно как ответ.

В виде текста?

Да.

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

Тут есть проблемы конечно, безусловно. Основная проблема была, наверное, вот если говорить про технологический аспект, в том, что у нас был достаточно такой сложный продукт. Если мы говорим только про звонки, только про распознавание, только про синтез речи — это отдельная история. Она очень большая, сложная. Там тоже, например, мы делали так, что есть там… мы используем внешний speech cognition. Мы используем гугловый, яндексовский. Во-первых, какого-то такого бенчмарка особо нет. То есть, нужно смотреть под свои задачи, как именно твой текст, как твои аудиозаписи они распознают. То есть, первое, что мы сделали — это мы сделали вот такой анализ. Посмотрели соответственно, какая лучше работает. Потом мы поняли, что несмотря на то, что одна из кампаний работает лучше и показывает лучшие результаты, все-равно скорость ответа у нее в какие-то моменты может быть длиннее. То есть, она может больше отвечать. И тогда мы стали отправлять запись в несколько систем распознавания речи. В том числе и в Microsoft, Google у нас был Amazon, Яндекс. То есть, сразу в четыре мы отправляли и получали какой-то максимально быстрый ответ.

Сейчас мы используем две-три системы максимум. То есть, в часы пик. А так основная сложность была в том, что у нас была помимо…нам нужно было запускать сперва поиск резюме, потом… она же робот, она все сама делает. Она и сами ищет, потом после того, как нашла, она сама звонит, потом после этого она, соответственно, рассылает email тем, кто не ответил «да» еще.

Не приглядываете за роботом?

Ну, приглядываем. Система мониторинга. То есть, вот это все мы проходили. И сперва там, так как я все это делал один. Я это делал не совсем правильно, делал это быстро, на скорую руку. И в общем у меня там был один Docker контейнер, в нем была и база… То есть, я все это на микро сервисы не разбивал, как сейчас принято и как сейчас мы сделали. Это все был один контейнер, один образ, в котором все работало на одной виртуалке. И собственно говоря, там мы под нового клиента каждого делали новую виртуалку, новый образ. И бывало часто, что там при нагрузках, так как не было никакой системы мониторинга, у нас там падало все. Одна из историй была, когда к нам один крупный клиент пришел. Мы с ним проводили пилоты два или три дня и потом на какой-то момент он решил по своим стоп-листам позвонить, там несколько тысяч кандидатов он загрузил. Конечно у меня случилась утечка памяти и все это накрылось, так как это был один контейнер, никакого образа сохраненного не было. Я там через телефонию, через все это восстанавливал почти всю ночь эту историю, чтобы они не потеряли свои звонки. В общем, да, проблемы такие были, но тут, наверное, если говорить о…

Ну это такие типичные проблемы, на самом деле. Достаточно банальные. Они тоже не очень связанны именно с хай-теком и распознаванием. Это, в общем-то, наверное, случилось бы в любом стартапе, в котором… да в любом, потому что все стартапы, наверное, поначалу делают силами первого человека, который идеолог технологический. А именно с самим качеством распознавания?

Вот с качеством распознавания, безусловно, тут проблемы есть. Они решаются по-разному. То есть, например, если мы адрес распознаем, подавать в систему распознавания, что это адрес. Тогда она качество лучше дает. Если мы распознаем какой-то вопрос, то мы помечаем, что это именно вопрос. Но, в целом, сейчас достаточно хорошее качество, если у нас нормальные аудиозаписи, если у нас нет каких-то посторонних шумов, если у нас нет каких-то…ну, человек говорит нормальной речью, нет никаких дефектов.

Это, кстати, интересный момент. Вы знаете, я вот общался с город Мос.ру, городские службы Московские. Они тоже занимаются активно похожими технологиями, и тоже там понятные задачи достаточно массовые. Там совершенно смешная задача — сбор информации о счетчиках воды. Можно позвонить по телефону и голосом назвать, робот распознает. И они наоборот говорят, что именно неидеальная речь или речь с акцентами, с сильными акцентами, как раз наоборот достаточно хорошо покрывается именно алгоритмом и покрывается даже лучше, чем живыми людьми. У вас обратная ситуация, если я правильно вас слышу?

Ну, у нас вот прям такой проблемы, что там было много людей с акцентами, если честно, нет. То есть, у нас, в основном, все как-то стандартно говорят. Это, наверное, еще зависит от того, что… как задать. То есть, если мы просим выбрать вариант ответа, например, вакансию, она ее проговаривает: выберете «менеджер по продажам», «грузчик» или «кладовщик».

Стараетесь так немножко их свести к узкому спектру?

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

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

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

Вручную верифицируют точечно? То есть, это такая более менее обычная, выборочная верификация качества?

Да. То есть, когда мы просто выбирали какую систему распознавания взять за основную, мы брали порядка, чуть меньше 1000 аудиозаписей, которые у нас были и каждую вот эту аудиозапись… мы там распознавали текст, проверяли распознанный текст с аудиозаписью. Вот нас несколько человек сидело и это делало.

Но это выбор именно системы? То есть, есть n система, у вас есть корпус уже известных текстов, про который известен правильный ответ. Вы их прогоняете, сравниваете. Тут очевидный механизм. А, кстати, кто в итоге то лучше из всех этих четырех распознавал?

Ну, там есть у них у каждого свои… ну, безусловно, сейчас считается на рынке, что Google лучший. Ну, у нас там, например, Microsoft нам быстрее отдавал запись. Тут, наверное, по-разному можно смотреть. Нельзя выделить одну систему, которую мы за основу берем. Но мы используем всегда 2–3 сейчас.

Яндекс получается в аутсайдерах? Он и распознает хуже и медленнее отвечает?

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

Но это, наверное, просто потому, что у них подложена хорошая база адресов?

Да, да, Яндекс.Навигатор. Безусловно, там Яндекс.Такси. То есть, у них очень много сэмплов голоса, когда там водитель в такси называет адрес. То есть, у них это очень хорошо проработано. Там даже не пытаемся какие-то другие… ну, пробовали конечно в рамках общего анализа, но Яндекс намного лучше.

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

Да. Если начать сейчас говорить про то, что мы сейчас делаем… ну, вот, если автоматически как-то их мерить, есть безусловно бенчмарки, мы смотрим международные. Там недавно Mozilla сделала open source свой, распознавание речи, который показал критерий качества, то есть, accuracy по качеству примерно, как Google.

Включая русский язык?

Нет, они только на английском пока. До русского они могут обучить. Но мы сейчас еще на международный рынок смотрим, поэтому, для нас как-бы… У нас сейчас первый партнер в Дубае появился и для нас вот, как раз.

А в Дубае это английский язык все-таки?

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

Возвращаясь к проблемам. Если я правильно понимаю, я тут глянул ваши статьи на Хабр, что у вас там происходит, то дальше у вас появилась семантика.

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

От робота?

Да. Они идут по скрипту работодателя. Работодатель решил задать три вопроса, кандидат эти три вопроса услышал, на них ответил, а вот кандидат свои вопросы задать не может. Это получается такая однобокая система. То есть, она такая мы B2B-бизнес, но при этом у нас есть большая B2C часть. То есть, у нас очень много именно кандидатов, которым мы сделали уже более полутора миллиона интервью и, соответственно, это полтора миллиона человек, которые пообщались с роботом, которые потенциально хотели бы задать свои вопросы, услышать какие-то ответы. Вот и мы стали решать эту задачу. И мы поняли, что, например, вопрос простой про зарплату может звучать по-разному. То есть, его запрограммировать на уровне простого хардкорного списка слов не получится. Ну, например, там вопрос по зарплате может звучать «че по деньгам?», а может звучать «какова финансовая составляющая?» То есть, у нас и тот и тот кейс есть.

И, соответственно, мы не на тот вопрос не ответили, не на тот не ответили, потому что мы закладывали: доход, зарплата. Тогда мы стали искать какие-то варианты, наткнулись на машину… машинное обучение я давно изучаю, у нас есть в команде люди, которые занимаются этим активно. И мы вспомнили, что есть такая история, как есть библиотека Word2vec, она основана на нейронных сетях. Google выдает по ней страницы. То есть, например, если мы в запросе пишем… там же ведь запросы в Google они примерно такие же, как у нас вопросы по вакансии. И, соответственно, Google решает именно с помощью этой библиотеки эту проблему. То есть, какой лучше показать. То есть, он берет там текста и соответственно показывает, какой лучше документ, выше. Ранжирование документов. По сути, как это работает? В общем, все слова превращаются в виде вектора, в векторном пространстве выражаются.

Сколько N-мерно?

Сейчас точно не скажу. Но эти параметры выстраиваются. То есть, их можно менять. И от них зависит качество модели. Мы брали стандартную модель Word2vec -ую, обучали ее на корпусе из… ну, там порядка 150 Кб корпус. Это миллионы книг. Туда входит корпус Википедии, все статьи русской Википедии, они все переводятся в текст и на этом тексте она обучается. Как она обучается? То есть, она бежит по этому тексту и смотрит. Например есть предложение «я позвонил по телефону» и, например, есть предложение «я позвонил по мобильному». Так как, «я позвонил» и в том и в том случае — это одинаковый контекст, она «телефон» и «мобильный» …

Предполагает, что они близки.

Да. Там она просто сближает, она их рандомно сперва расставляет, потом сближает это расстояние в точках. И таким образом мы получаем такое определенное какое-то отображение наших слов в векторном пространстве.

Метрика семантической близости слов.

Да. И потом мы считаем косинусное расстояние или мы считаем эвклидовою дистанцию. Там мы тоже немножко ковырялись, потому что мы сперва считали косинусное расстояние, но получилось, что эвклидово нам дало 10% плюс к качеству. Потому что косинусное оно больше, когда много текста, то есть, большой текст, если нам документ нужно сравнить. А так как у нас вопросы они примерно все одинаковые, короткие все, то тут проще эвклидовую метрику использовать. Ну и, собственно, мы решили все это внедрять. Качество у нас тут конечно порядка 70% получилось. То есть, достаточно низкое.

70% что?

Правильные ответы.

Отвечающие ожиданиям спрашивающего?

Да. То есть, мы тут, на самом деле, сделали такой Data Set, в котором был вопрос-ответ, вопрос-ответ. То есть, это вопрос и категория, к которой мы относим. У нас есть несколько категорий: зарплата, адрес, компания. Есть категория «не поняла вопрос». Туда падет все, что не попало в другие категории. Есть категория еще «о вакансии», «должностные обязанности». То есть, ряд таких категорий. Соответственно, в каждой категории мы пишем какие-то вопросы. 5–10 вопросов обычно. И происходит как? Мы получаем вопрос кандидата, бежим циклом по всем этим категориям, считаем дистанцию до всех вопросов (вопросов одинаковое количество в каждой категории), потом ближайшую категорию мы ему отдаем. Если там степень близости меньше определенной, то тогда мы говорим, что не поняли, перефразируйте, пожалуйста, вопрос.

И, собственно, здесь мы, как раз, эту задачу пытаемся максимально хорошо решить. То есть, мы там брали сперва вот этот Word2vec, потом есть такая компания OpenAI в штатах. Они занимаются изучением искусственного интеллекта не в коммерческих целях. Там у них Илон Маск, Эсен Альтман инвесторы. И они достаточно такие, наверное, одни…в авангарде этих технологий стоят. Недавно они выпустили свой research по поводу сентементного анализа. Они там обучили модель на 80 миллионах отзывов Amazon о товарах. И основная задача была — это обучить модель генерить эти отзывы. Она отзывы генерит. Но помимо этого она научилась хорошо делать сентементный анализ. То есть, она научилась хорошо отличать хороший отзыв от плохого. Это мы тоже используем сейчас.

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

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

Потом вы смотрите на какие-то ключевые точки позитивные и негативные и смотрите насколько близки ответы уже к точкам, которые оценивают это в плане позитива, негатива? Правильно понимаю?

Да.

А можете пример какого-то неправильного ответа на вопрос дать? Вот ответила она неправильно. Не поняла вопрос. И в какую сторону получается ошибка?

Много было. Вот я говорю, процентов 30. После первого такого теста у нас было 30%. Мы себе подбирали протект-менеджеров.

То есть вы тестировали на себе?

На живой продакшн мы пошли. Ну, мы знали, что будет 70%, но отправили. Кстати, нас даже на тестах было 70, а в живом было 56. То есть, было даже ниже. Мы поняли, что надо там еще дорабатывать.

50 это очень конечно…

Фактически это похоже на статистическую ошибку. Просто там 50 на 50. А в итоге мы уже к 80 приблизились. Это были самые первые такие тесты.

Что происходило? Вот как вы двигались?

Вот, например, мы Word2vec заменили сейчас сентиментный нейрон, который показывает качество на 5% лучше. Сразу же добавил 5%, там на наших тестах мы его еще подкрутили, и там еще качество выросло. Потом мы заменили косинусную дистанцию на эвклидову. Это еще дало порядка 10% в качестве. Ну, а дальше мы просто увеличили количество вопросов. У нас было в каждой категории по 5 вопросов примерно, и мы сделали по 15. В три раза увеличили и, в целом, благодаря вот этим трем операциям у нас получилось так, что сейчас около 80.

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

То есть, сейчас как будет? Как мы эту штуку позиционируем? Что это такой искусственный интеллект, который такой чат-бот, который просто помогает рекрутеру на все эти вопросы отвечать. Тут все вопросы, когда она не попала, они показываются рекрутеру. Рекрутер может в любой момент создать в любой момент новую категорию. Единственное, если он теперь создает категорию… Почему изначально 5 вопросов? Потому что в каждой категории должны быть вопросы примерно одинаковой длины и их должно быть одинаковое количество. Иначе вот это эвклидово расстояние будет считаться плохо. Поэтому, мы сперва хотели сами сделать. Потом мы поняли, что вопросы у всех разные. Например, у какой-нибудь компании, которая телефоны сотовые продает в магазинах, у них может быть вопрос «а сколько вы вычитаете за брак, если я разобью телефон IPhone X?» То есть, вот этого вопроса его нет, например, у программистов или у кладовщиков.

Хотя некоторым хотелось бы.

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

Собирается такой корпус вопросов типичных, который может использоваться?

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

А ответ на вопрос фиксированный?

Ответ на вопрос тоже рекрутер задает.

По сути дела, он в этом месте вообще может двигаться от ответов? Сначала отобрать, интересующие его ответы.

А так и работает. У нас, смотрите, есть вакансия на входе, к вакансии есть описание. То есть, мы ответы формируем автоматом. Вот это вообще очень плохо работает. Половину мы, наверное, вопросов… даже половину вопросов заполнять медленно, долго. То есть, половину мы подтягиваем автоматически, и это позволяет рекрутёру уже понять… Мы берем Job description, разбиваем его на предложения. И каждое предложение считаем расстояние до категории. И к каждой категории мы берем самое нормальное предложение. Ну, если там должностные обязанности и требования, то это там обычно выделено, мы это умеем из текста вытаскивать сразу же. Там какие-то вопросы, например, про обеденный перерыв, про то, нужно ли мне образование, высшее образование или что-то такое. Мы вытягиваем это просто из общего текста.

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

Ну, у меня тут подход такой. Я считаю, что вот эта история с текстом и с распознаванием естественного языка, она сейчас только начинает развиваться, и областей применения огромное количество. И то, что люди делают там… Если у кого-то что-то получится, кто-то сделает что-то подобное, я буду только рад, мы используем их опыт. То есть, у меня тут такая больше open source история. Это ближе к ресёрчу.

Но сегодня же вы уникальны? А в мире есть у вас конкуренты?

Нет.

Вот просто реально уникальная компания на всем пространстве земного шара?

Ну на самом деле.

Никто вот так вот не делает?

Есть похожие продукты. Тут технологии очень сильно развиваются. Безусловно где-то кто-то в чем-то лучше. Например, в штатах есть чат-бот Миа, может она в тексте общается лучше, чем мы сейчас? Мы тут не исключаем.

Вы закрываете очень четкую задачу.

Если говорить про голос такого нет. Мы штатах смотрели аналоги. Там есть одна компания, которая… если у нас можно скрипт в кабинете сделать, то там нужно звонить и записывать broadcast. Вот номер телефона, позвоните, запишите, что вы хотите сказать абонентам. Ты это записываешь и они эту аудиозапись потом прокручивают твоего же голоса. То есть, как-то немножко не так.

Казалось бы вы по-технологичнее будете.

Казалось бы эта штука вся простая. Но я тут считаю, что… касательного того, чтобы заменить, как-то скопировать и так далее, тут в первую очередь, вот мы, например, этот сантиментный нейрон обучали больше двух месяцев. Чисто обучение шло. То есть, Amazon, OpenAI.

Но это же вопрос процессорной мощности, правда же?

Да.

Это можно сделать за 3 дня, если просто купить больше виртуальных машин?

Нет. Это мы уже купили.

Вы уже все купили, все уже кончилось.

Да. Ну, у нас так как, мы с Microsoft в партнерстве, у нас неограниченные практически ресурсы по этим мощностям. Поэтому, мы берем большие машины, используем самое лучшее, наверное, что сейчас есть на рынке. Ну, не знаю, по качеству там от IWS ничем не отличается. И, собственно, мы на них и обучаем. И даже OpenAI имея свои ресурсы, обучала эту модель месяц. То есть, поэтому, тут задачи такие достаточно сложные. Во-первых, это еще часть обучить просто месяц, а вторая задача, которая еще сложнее — это данные найти. То есть, вопрос же в том, что нужно еще получить…нам же нужны не просто текста.

4j7os6io5-jzz28l7ix-llykhjq.jpeg

Вы же брали корпус текста в какой-то более менее банальной? Википедия — это ж вообще общее место, ее ж всем хватает.

Его одного недостаточно. Ну, если мы хотим добавить еще какого-то… Мы сделали как, мы брали не просто этот корпус, мы еще… у нас, в общем, около, наверное, несколько сотен тысяч вакансий уже на сервисе опубликовано. То есть, мы брали вот эти текста, 2 миллиона резюме.

Тут у вас конкуренты есть, у которых вакансии то есть.

Да, безусловно. Брали резюме. То есть, это около 2 миллионов резюме у нас. Мы брали, в общем, еще такие вакансии, то есть, мы просто через ip работных сайтов собирали вакансии. То есть, мы где-то, наверное, 10–15 Гб именно текстов, связанных с HR-тематикой — это резюме, вакансии. Вот это все мы взяли. То есть, наверное, без этого там небольшое бы было изменение. Мы примерно сравнивали модель, которая только на русском корпусе и на русском корпусе с нашими текстами. Там разница в 2–3% примерно. То есть, небольшая, но она есть все равно. И, как бы, почему бы это не сделать?

А влияют 3%? Вот смотрите, на самом деле, когда мы разговаривали с вашим коллегой, в этот момент еще робот, по-моему, только «да» и «нет» принимал. Уровень был такой. И уже на этом уровне было очень четко понятно, что… Я вот сейчас вспоминал, была хорошая история про то, как ТЭС взломали алгоритм шифровки. Она была великолепна в том, что сделали хардверный фарм, который умеет отличать точно плохой ключ от неизвестного. Не плохой от хорошего, а плохой от неизвестного.

Но на этом получилось снять два порядка объема, очистить это дело, а остальные ключики прогнать просто обычным подбором. И вы же сделали то же самое? То есть, вы, на самом деле, сделали некоторый инструмент, который позволяет отличить точно плохого кандидата от неизвестного. И тем самым, тоже вы сняли какое-то существенное количество работы, такой бессмысленной, тупой работы с рекрутера и подняли эффективность порядка на 2, наверное? Где-то такого уровня? И это является существенным драйвером. Все остальное, что вы делаете — ценно, интересно, очень любопытно, но мне кажется, с точки зрения бизнеса, такого скачка не приносит. Или я ошибаюсь?

Ну, тут мы… безусловно 2–3% вот в этой задаче, они конечно…

Погоды не делают?

Особо погоды не делают, но мы тут, как бы, боремся за такое… мы идем к этой цифре 80 качества. Поэтому, мы считаем таким, наверное, для нас base line после которого можно прям в продакшн на всех клиентов раскатывать и говорить, что мы это сделали.

А сейчас вы это экспериментально с клиентом договариваетесь?

Да, несколько клиентов, которые тестируют.

Готовы рисковать…

Да, используют эту технологию. Ну, и мы ее, как бы, пока так в закрытом виде немножко держим. То есть, мы не рассказываем по мере.

Только что рассказали.

Да. И, соответственно, тут каждое вот это какое-то небольшое дополнение. То есть, мы здесь поменяли метрику с косинусной на эвклидовую, здесь мы модель поменяли. Потом мы эту модель немножко тоже подкрутили, метод классификации другой поставили, и она уже чуть получше стала. Тоже 2–3%. И так вот из всего мы к этим 80-и и идем. То есть, тут такой процесс. Каждая составляющая как-то влияет на это все.

С другой стороны, сейчас ваши конкуренты от вас отстают на два порядка, да? И закрыть эти 2 порядка им несложно. Ну, то есть, это в общем некоторая довольно банальная система с довольно банальным распознавателем слов «да» или «нет». И как, собственно, и вы, если я правильно помню, за три месяца вы все это сделали? Ну, может…

Чуть больше. Это такие были месяцы. То есть, там без сна…

Ну, вы еще не знали, что это возможно. Они то уже знают. То есть, в принципе, сейчас сидящим за камерой людям, где-то там за экраном от нас, наверное, в

© Habrahabr.ru