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



Маленькое отступление:

Меня всегда ставит в тупик то, что на Хабре с некоторых пор разделено «Управление» и «Разработка». А если статья о разработке системы управления? Честно говоря, в раздел «Управление» я никогда ничего еще не писал, но логика подсказывает, что нынешний материал скорее подходит сюда — он все-таки больше не про программирование, а про опыт в сфере управления проектами.

Но, простите за отклонение от темы повествования, вернемся.

Этап 1. Начало


Началось все с малого. В нашей компании традиционно были проблемы с распределением задач и контролем результата… Точнее, пока работало 1.5 человека их не было. А когда штат резко вырос до 8, они начались — блокнот и мессенджер резко стали неэффективным средством организации работы. Тогда мы попробовали использовать Trello и Asana, и, до определенной степени, это решило проблему. Но в один прекрасный день нас посетила “великая” идея приделать голосовой интерфейс и посмотреть, что получится. Дело казалось небольшим — “всего навсего” нужно ведь чтобы голосом или через чат можно было создать задачу и узнать какие задачи надо делать.

На момент начала воплощения этой идеи в жизнь аналогов не было (Cortana в Microsoft Dynamics понимала только английские команды).

На сборку прототипа ушло пару недель. Изначально машинным обучением решили не заморачиваться и сделать распознавание смысла команд по шаблонам. Исходя из того, что шаблонами можно сделать очень много, и полагая, что основной набор команд будет небольшой, и все очень быстро их запомнят. Для распознавания голоса просто подключили API от Google (опыт показал, что он работает лучше всего).

Выглядел первый результат примерно так, как на картинке сверху. Окно, строка ввода, и чат.

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

Этап 2. Этим пользоваться невозможно!


Эту фразу сказали абсолютно все, вовлеченные в тестирование. Измерив же время, нужное для выполнения типовых операций, мы обнаружили, что оно замедлилось. Например, для создания задачи теперь требовалось более минуты (в “контрольной группе” 27 — 40 сек). Для замера времени поначалу использовали секундомер.

Причин оказалось много. Во-первых, распознавание речи работает “лучше чем человеческое” только в теории (и, вероятно, только для английского языка). Даже простое “выполняет Дмитрий Иванович” легко превращается в “воняет Дмитрий Иван ВИЧ”. А сказать сколько-нибудь длинную фразу без ошибок и вовсе сложно. Поэтому все поголовно писали команды текстом. Ругаясь при этом нецензурно, что еще более осложняло работу программы.

Запомнить команды оказалось тоже делом не простым. Кто-то запомнил, а кто-то продолжал писать как приходит в голову. Обнаружилось, что тонкая разница между “какие есть задачи” и “какие у меня есть задачи” не всегда улавливается человеком. А если при создании задачи вся нужная информация не поместилась в одну, то дальше нужно долго колебаться: “задаче поместить кнопку на сайт назначить срок выполнения до 15 сентября”

Наконец, то, что в графическом интерфейсе решается перетаскиванием за пять секунд, у чат-бота превращается в “задачу исправить ошибку в программе, которая не работает перенести из раздела разное в раздел исправление ошибок”. Короче, командная строка с голосовым управлением никак не заменяет GUI

Этап 3. Работа над ошибками


По хорошему, на этапе 2, возможно, стоило бы остановится. Но осел человек — существо упрямое. Мы проанализировали ситуацию, задав себе вопрос, почему объяснить другому человеку голосом быстрее, а чат-боту нет. Основные выводы были такие:

  1. Люди опираются на контекст и понимание задачи собеседником. Т.е. “Возьми эту хрень там и приделай к ней такую фигню” — гораздо короче;
  2. Люди пользуются бумагой и ручкой, чтобы объяснить что-то;
  3. Люди понимают недосказанные инструкции. Смысл одной и той же фразы меняется исходя из контекста;
  4. Люди пользуются короткими именами и иногда кличками.

Исходя из этого были реализовали новые функции:

  1. Возможность использования в командах контекста — одной или нескольких последних созданных или упомянутых задач.
  2. Возможность упоминать обрывки названия задачи, похожие названия и т.п.
  3. Список сотрудников и поиск наиболее похожих имен в списке.
  4. Минимальный графический интерфейс для отображения задач
  5. Расширили список вариантов в шаблонах и добавили несколько десятоков новых команд.
  6. Функция регистрации жалоб на систему

Кроме того, усовершенствовали методику замера времени. Время теперь измерялось по набору из 4 типовых случаев использования (поставить новую задачу, узнать что делать, отметить что задача сделана, посмотреть результаты работы). В каждый случай добавили 5 примеров и вычисляли среднее время. Новые тесты показали примерное равенство эффективности чат-бота и обычной системы. Количество жалоб субъективно несколько сократилось (люди привыкли?), но все же недовольства осталось много.

Также удалось найти небольшие (субъективные) плюсы чат-бота:

  1. Некоторые люди утверждали, что окно чата меньше “нагружает мозг”, потому что в нем меньше кнопок и надписей
  2. При работе с телефона, набор команд текстом (а мы помним, что большинство все еще не пользуется голосовым вводом) стал гораздо проще, после того как клавиатура выучила типичные команды. Утверждалось, что это быстрее, чем нажимать кнопки интерфейса.

Как видим, плюсы пока очень шаткие. Анализ же жалоб показал, что:

  1. На стационарных компьютерах все же очень не хватает кнопок для выполнения частых задач
  2. Команд стало очень много, запомнить их тяжело, писать долго
  3. Не хватает привычного функционала

Этап 4. Функционал, интеллект, интерфейс


В реальности, человек-программист никогда не спросит начальника “какие у меня есть задачи”, не будет ждать перечисления всех задач, чтобы потом сказать “сейчас я буду делать задачу такую-то” (да, смешно. А многие на чат-боты так и работают в реальности).

Подумав над проблемой, мы сократили набор команд исполнителя до “дай задачу”, “задача готова”, “есть проблема”, “дай другую”.

Хотя, это легко сказать. На практике, “дай задачу” стало сложной интеллектуальной командой, которая анализирует приоритеты задач, сроки, сложность, загруженность исполнителей, и выбирает следующую задачу автоматически.

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

А мы поняли важный момент смысл интерфейса на естественном языке — не в том, чтобы понимать длинные сложно завернутые предложения. На самом деле чат-бот эффективен только если за ним стоит интеллект, понимающий предметную область. Когда человек обращается к программе, понимающей его речь, он подсознательно ждет, что система будет умной и сможет решать какие-то его проблемы. Объяснит что ему делать, как минимум. А может быть еще сама назначит исполнителя, распределит задачи заболевшего сотрудника. А в реальности чат-бот обладает в лучшем случае интеллектом собаки — «стоять, лежать, сидеть». Поэтому, попробовав вариант, когда у программы «больше прав решать, что делать», мы получили интересный результат.

На самом деле не все так просто. Было много опасений, что такая система с автовыбором не справится с реальными ситуациями. Плюс, создается большая нагрузка на руководителя, который должен снабдить систему нужной информацией и правильно расставить приоритеты ( в нашем варианте система все-таки сама не решает, что и как, а скорее старается выполнить поставленный план). Практика действительно внесла определенные коррективы, но в целом, на удивление, новая методика оказалась проще и эффективнее.

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

Вторым важным нововведением стал модуль самообучения для понимания команд. Мы оставили пока опознавание команд по шаблону, но добавили возможность автоматического создания новых шаблонов на основе анализа обращений. В результате быстро создалось много шаблонов, учлись все варианты произношения (вроде “воняет”), и голосовые команды стало возможно нормально использовать (и адаптировать под конкретного человека).

Наконец, появился выигрыш в производительности — работа с системой стала быстрее (по тестовому набору типовых задач) в среднем на 45% по сравнению с “контролем”.

Кроме того, я заметил некоторые субъективные плюсы:

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

Желания вернуться к «традиционным» системам у меня не возникает. Наоборот, идея о том, что придется вводить задачи клавиатурой и мышкой вызывает ужас. Хотя, в офисе, где много народу, диктовать что-то программе бывает психологически некомфортно.

Программе мы еще дорастили и интерфейс. Вот так он стал выглядеть:

Функционал приблизился к тому, что есть во всякой другой системе управления проектами. Сроки, зависимости между задачами, разделы и подразделы, уведомления, отчеты.

Заключение


В итоге, мы добились повышения эффективности. Хотя получилась в каком-то смысле, каша из топора — к “топору” (чат-боту) пришлось добавить много функционала, без которого он был бесполезен. Имея уже достаточно значительный опыт в создании систем обработки языка, мы наступили на грабли много раз и потратили более 6 месяцев до момента когда система стала приносить нам реальную пользу.

Ну и, конечно, то, что удалось рассказать в статье, это только верхушка айсберга — самые основные моменты с которыми мы столкнулись.

PS

можно посмотреть небольшое видео как выглядит общение с программой


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


  1. AndreySu
    28.09.2017 14:10

    В офисе теперь так и слышно:
    «Дай задачу»… «Задача выполнена»… «Дай задачу»… «Задача выполнена»…


    1. Durham Автор
      28.09.2017 14:15

      Фактически, голосовой интерфейс в основном используется чтобы поставить задачу или сообщить о проблеме. А эти четыре функции, как я написал, прекрасно работают через кнопки


  1. skiedr
    28.09.2017 16:53
    +1

    Когда задачи сводятся к 10 словам или меньше, все просто. А вот когда нужно несколько страниц текста написать, голос сразу же проигрывает клавиатуре.


    1. Durham Автор
      28.09.2017 17:00
      -1

      Как раз наоборот. Голосовой набор примерно в 3 раза быстрее (12 знаков в секунду), чем может печатать человек. Поэтому если задача короткая, клавиатура и мышь хорошо справляется. А когда задач много и к ним длинные описания, клавиатура вообще не стоит рядом.


      1. VolCh
        28.09.2017 20:34

        Как сейчас у голосового набора с грамматикой? Как с двуязычными текстами типа «отрефакторить TAppDebugConsole, вынеся все зависимости в конструктор и сеттеры»? Особенно, когда произношение, мягко говоря, не идеально?


        1. Durham Автор
          28.09.2017 20:55

          TAppDebugConsole — никак. Слова по-проще понимает. Если какие-то термины часто встречаются, их опознавание можно настроить. API от Google запятые не ставит, но если нужно для этого есть решения. Мне обычно не нужно, до тех пор пока смысл того, что надо сделать понятен.


          1. Mendel
            29.09.2017 11:53

            Не подскажете какие решения по запятым?


            1. Durham Автор
              29.09.2017 12:57
              +1

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


      1. skiedr
        28.09.2017 21:18

        Ну да, и голосом поменять порядок пунктов с списке тоже быстрее. Заменить слова в предложении, опять же мультиязычность не забываем. Не все задачи сводятся к «купить бумагу» и «позвонить олегу».


        1. Durham Автор
          28.09.2017 21:54
          +1

          Поменять порядок. Да. я выделяю пункты пальцем (штук 6) и говорю «установить порядок». И они ставятся в нужном порядке. Это гибридный интерфейс, и да так быстрее, особенно если экран маленький (телефон). Потому, что какие-то вещи лучше голосом, а какие-то кнопками. И смысл найти правильную комбинацию.

          Мы несколько месяцев так работаем, изучили все очень тщательно и написали как есть.


  1. maxzh83
    28.09.2017 17:01
    +2

    Если честно, то из статьи понял, что графический интерфейс лучше. Просто надо было добавить в него простых кнопок типа «Дай задачу» и т.д.


    1. Durham Автор
      28.09.2017 17:03

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


      1. Zenitchik
        28.09.2017 20:43
        -1

        "Начальство думает по ночам"? Ну-ну.


        1. Durham Автор
          28.09.2017 21:01
          +1

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


  1. Zenitchik
    28.09.2017 17:39

    «Управление» и «Разработка»

    "Управление" — это бывший "Мегамозг". Вообще не про разработку никаким боком. Всё хоть как-то касающееся технической стороны вопроса — к "Разработке".