Привет, Хабр! Меня зовут Денис, и я занимаюсь интеграциями систем ЦОД и учетом оборудования клиентов. Сегодня я хочу рассказать, как мы автоматизировали выдачу пропусков в наши ЦОДы с помощью нейронных сетей. Расскажу немного о самой системе, из чего она состоит и как работает, а также о том, какую выгоду получили наши клиенты. Для начала немного предыстории, почему для нас было важно решить эту задачку.  Дано: 3 дата-центра в общей сумме на 1000 стойко-мест Все они практически полностью укомплектованы, работа с запросами клиентов кипит 365 дней в году. Большое количество разных обращений, из которых примерно 30% - заявки на посещение ЦОД клиентом. Все обращения обрабатываются дежурным инженером ЦОД в почте, и на каждый запрос уходит 10-15 минут. Из-за того что изначально вся работа с обращениями клиентов велась в почте, а дежурные инженеры сильно нагружены, происходили случаи «Потеряшек» (прим. «Потеряшки» - это такие письма, содержащие обращение от клиента о работах в ЦОД, которые потерялись/были пропущены и т.д. из-за человеческого фактора). Например, могли теряться заявки на пропуска в ЦОД, что оставляло негативные впечатления. Клиенты ожидали у входа в здание, пока дежурный инженер найдет их заявку и закажет пропуск, который прошлая смена «просмотрела». Мы подумали, а что если автоматизировать этот процесс? В итоге мы решились разработать нейронную сеть, которая будет делать все сама от обработки обращения до заказа самого пропуска. Тем самым мы хотели исключить человеческий фактор с нашей стороны и увеличить «полезное» время работы наших инженеров (а это, кстати, 10-15% от рабочего времени смены, около 2-2.5 часов в день). В ходе разработки мы сталкивались с различными трудностями и проблемами, начиная от поиска подрядчика, заканчивая переобучением системы перед ее релизом. Последняя откатила старт продукта еще на несколько месяцев. Но это все оказалось мелочами. И вот мы начинаем заново обучать систему, заново собирать письма за прошедший год с обращениями на посещение ЦОДа (2,5 – 3 тысячи писем, с которыми нам помогли наши доблестные воины из HelpDesk, воскрешая мертвых путем божественного вмешательства и темной некромантии), как перед нами встает новая задача – ВЛОЖЕНИЯ! Клиенты начали использовать шаблонные формы в различных форматах (Word, PDF, Exel, картинки), что несомненно отразилось на работе системы, которая на данный момент умеет работать только с текстом. Честно признаемся, что новую задачку мы еще не решили (пока стараемся довести нейросеть до уровня бога при работе с текстом), но обязуемся не останавливаться на полпути и довести дело до конца!  Хотите узнать из чего состоит система? Так выглядит регистрация всех обращений, ID - ссылка на форму с данными клиента, почта автора, время, статус и решение по нему (заказан пропуск или нет).  Сама система состоит из следующих компонентов: Модуль обработки писем Веб-интерфейс для доступа к данным Классификатор Сервисы извлечения данных: NER-модель для извлечения данных заявки на пропуск NER-модель для извлечения данных о подписи в письме NER-модель для морфологической разметки текста Модуль обработки писем представляет собой приложение на базе фреймворка Django. И есть некоторые особенности его работы: Модуль обработки писем запускается по расписанию раз в минуту, Принимает почту с корпоративного почтового сервера, Обрабатывает содержимое письма с помощью вызова классификатора и сервисов извлечения данных Формирует заявку на пропуск в виде JSON Отправляет заявку на пропуск в нашу систему заказа пропусков Веб-интерфейс для доступа к данным представляет собой Django-приложение предназначенное для: Управления данным Представителей Управления данными Организаций Просмотра Заявок на пропуск P.S. Организация - компания клиента; Представитель - представитель организации; Автор - человек/рассылка, с адреса которого поступило обращение.  Классификатор представляет собой веб-приложение, основанное на фреймворке Deeppavlov, использующее модель машинного обучения на базе нейросети для классификации писем на являющиеся заявками на пропуск, запущенное на порту локального сетевого интерфейса. Пример запроса к Классификатору: curl -d '{"x":["Добрый день! Закажите мне пропуск на 28 января. С уважением, Сергей"]}' -H "Content-Type: application/json" -X POST http://localhost:5002/model Пример ответа Классификатора:  где 1 означает, что письмо является заявкой на пропуск, а 0 - что не является. NER-модели, как и классификатор, являются веб-приложениями, основанными на фреймворке Deeppavlov. С их помощью система понимает кто к нам обратился, есть ли у автора обращения полномочия на заказ пропуска, на какую дату, на кого (включая автомобиль) и куда требуется заказать пропуска. При поступлении обращения в почту, система узнает из письма все данные с помощью NER-моделей и создает объект в админке (Django). Далее система старается найти представителя по email, если же такого пользователя нет, то система берет почтовый домен и ищет организацию по нему. После того, как мы узнали, кто к нам обращается, куда и на кого нужны пропуска - система создает страничку-форму для заполнения информации о посетителях. Пример формы: Затем отправляет заявку на подтверждение уполномоченным лицам из этой организации. Из минусов можно отметить то, что для этой системы на данный момент требуется отдельная БД с данными о клиентах, т.к. наш “справочник” еще не дошел до эталонной стадии. Но к середине-концу лета мы уже планируем интеграцию нейросети, что существенно упросит ее обслуживание, т.к. сейчас все контакты и полномочия изменяются в ручном режиме.  Система справляется со своей задачей отлично и регистрирует все запросы, но пока не все еще научились с ней работать. Для клиента, использующего почту как основной вид связи с нашим ЦОД, польза заключается в быстром заказе пропуска без участия ДИ. т.е. на скорость процесса оформления пропуска будет влиять только ваша медь или оптоволокно). Если хочешь к нам в ЦОД на экскурсию - можешь писать нам на портал, наша нейросеть свяжется с тобой и оформит тебе пропуск!* *Если ты уже клиент нашего ЦОД