Меня всегда забавляло, когда люди злятся, когда другие «отвечают всем» в электронных письмах, когда они не должны этого делать, или когда кто-то пишет сообщение Slack на канале, которому оно не принадлежит.

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

Итак, давайте создадим бота, также известного как настоящий Бессервиссер (всезнайка), который будет делать это автоматически 😈.

В Peltarion, где я работаю, у нас есть МНОГО разных каналов Slack для самых разных целей. У нас есть свои «официальные» каналы, а также множество других, более мелких. Некоторые довольно непонятные для самых разных интересов людей. У нас есть #general (для официальных объявлений), #random (то, что не подходит для общего), #climbing, #music, #boardgames, # squash… Вы называете это сами.

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

Чтобы дать нашей модели хорошие шансы, нам нужно иметь приличное количество сообщений на канал. Кажется, что большинство проблем возникает, когда сообщение публикуется в #general, тогда как на самом деле оно должно быть размещено в #random. Итак, я решил начать использовать эти два канала. Используя Slack's Python API client, было очень легко получить сообщения из этих двух каналов, а затем загрузить их на Peltarion Platform (облачную платформу глубокого обучения).

Построение модели

Следующий шаг: построение модели. Эта часть может оказаться сложной, особенно если у вас нет большого опыта в создании моделей искусственного интеллекта / глубокого обучения. Но, честно говоря, это была, вероятно, самая легкая часть всего проекта из-за предварительно обученного блока BERT, который я мог просто вставить в свою модель. Я опробовал несколько разных гиперпараметров и смог начать обучение в течение двух минут - обычно мне требуется больше времени, чтобы выбрать имя для репозитория GitHub 🤔.

На сборку, настройку и развертывание у меня ушло около 30 минут. Я провел несколько разных экспериментов (3–4) и выбрал один с наилучшей точностью (72%; не очень хорошо, но достаточно хорошо для этого маленького игрушечного проекта). Затем обучение длилось от получаса до часа.

Теперь посмотрим, как модель вела себя в дикой природе!

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

… И вот как вы можете настроить Besserwisser для других реальных случаев использования

Для меня создание этого BERT-приложения было просто забавным способом поиграть с предварительно обученной моделью и развернуть ее где-нибудь в моей повседневной жизни. Если бы я потратил на это больше времени, я бы продолжил его настройку еще немного, чтобы получить более высокую точность. Также было бы интересно использовать данные из более чем двух каналов Slack, чтобы получить более полезный Slackbot, дающий больше предложений о том, где должны быть сообщения.

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

Эту же модель можно применить и к другим областям, возможно, к более «реальным» вариантам использования. Предположим, вы работаете в компании, и вам приходится выполнять множество задач по поддержке клиентов. День за днем ​​продолжают поступать сообщения от клиентов, которые хотят получить быстрые ответы (желательно как можно скорее). В зависимости от проблемы, на эти сообщения должны отвечать разные люди в организации. Создание и развертывание аналогичной модели, которая используется в моем приложении Slackbot, может позволить классифицировать все сообщения в зависимости от темы / того, кому они должны быть перенаправлены. Таким образом, билеты попадут к нужному человеку и будут обработаны быстрее.

Если вам понравился значок Slack от Besserwisser, зайдите на сайт buttsss.com Пабло Стэнли (у него также есть много других замечательных вещей).