Кто придумывает навыки Алисы?

Создатели популярных приложений рассказывают об особенностях работы с голосовым интерфейсом и муках творчества

Кто придумывает навыки Алисы?

Разработка

Каждый день голосовой помощник Алиса учится новому, и в этом ей помогают не только разработчики Яндекса. Создавать навыки может кто угодно. Энтузиасты разрабатывают как полезные приложения (например, чтобы голосом открывать шлагбаум в своем дворе), так и увлекательные игры и обучающие программы. Разработчиков лучших навыков каждый месяц награждают «Премией Алисы». Мы поговорили с несколькими победителями премии об особенностях работы с голосовым интерфейсом и муках творчества.

Word Coach — Тренер слов

Дмитрий Финогеев, ученик 11 класса, выпускник Яндекс.Лицея

Первый свой навык для Алисы я сделал прошлой весной на выпускном Яндекс.Лицея. Для лучших выпускников в Москве устроили хакатон, на котором рассказали, как работать с навыками, и дали возможность попробовать. Потом я свой навык «Завалинка» дорабатывал — нужно было как следует привести его в порядок. Это был мой первый подобный опыт, и для этого потребовалось гораздо больше времени и сил, чем я предполагал. Но на самом деле я бы считал его не более чем «пробой пера», потому как реализованные позже модули мне нравятся гораздо больше.

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

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

Cамое сложное — именно поиск идеи, большая часть времени уходит на нее 

В определенный момент я понял, что навыков по простому и удобному изучению английского языка с достойными отзывами пользователей просто-напросто не найти, и решил попробовать. Я создал свой навык с использованием API Яндекс.Переводчика, который позволял бы проводить различные операции с пользовательским словарем. Можно и переводить, и учить слова. Слова, которые можно учить с помощью навыка, разбиты на тематические подборки разных уровней — от базовых глаголов до специфических терминов. Судя по отзывам, многим понравилось. Кто-то даже заметил спрятанную отсылку к «Игре престолов»: в самом начале навык спрашивает ваше имя и один из предложенных вариантов «У человека нет имени».

Я и сам учил слова с помощью этого навыка, но сейчас на это не хватает времени. Скоро выпускные экзамены, а еще мы с ребятами из Лицея и нашим преподавателем выступаем с мастер-классом по созданию навыков Алисы.

Повелитель стихов

Григорий Французов и Денис Пешехонов, разработчики-фрилансеры

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

Игрок становится магом, который творит волшебство с помощью рифм, стихов и слов, путешествуя по разным локациям, встречая монстров и разбойников. Людям понравилось. Сейчас у нас порядка семи тысяч пользователей, и, если смотреть на наших знакомых, которые играют в квест, то это те люди, которые любят вечером на выходных поиграть в крокодила или в Alias. Проще говоря, любят словесные игры.

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

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

Вместо того, чтобы «наколдовать» себе стихами серебряный меч, он решил просто откупиться от монстра:

Чтобы ты оделся и помылся, о страшный волосатый зверь,
Я серебра тебе отсыплю, оно хорошее, поверь.

Периодически игроки используют чужие строки из классиков, из известных песен или строчки реперов, в которых есть заданное слово. И алгоритм высоко оценивает такие двустишия. Ругаются довольно мало, хотя рифмы в стиле «брюки-***юки» встречаются — понятно, это первым делом приходит в голову — но мы с этим боремся и такие рифмы оцениваем низко.

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

В основном, конечно, пишут плохие, но хорошие мы отдельно себе выписываем и постим в специальный телеграм-канал.

Поэзия нам очень близка, хотя не то чтобы кто-то из нас занимался ей профессионально. Это почти как математика — есть определенный набор правил, они четко формализованы. Благодаря четкой системе стихотворных размеров можно рассматривать поэзию как алгоритм, работающий по определенным правилам. Нам стало интересно, как с поэзией работает Natural Language Processing (Обработка естественного языка). Мы начали копаться в разных статьях, в том числе нашли на Хабре разбор нейросети, которая умела сама писать стихи. Но чтобы хорошо писать, нужно знать правила, а значит по тем же принципам можно научить алгоритм и проверять сочиненное пользователем. Чем мы и занялись.

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

Чемпионат по программированию

Короткий путь в Яндекс

Страна ребусов

Рустам Таиров, фронтэндер

Я узнал про конкурс для разработчиков, как только он запустился, осенью 2018-го года, изучил вопрос, посмотрел документацию и решил поучаствовать. Я занимаюсь программированием на JavaScript и мне показалось интересной задачей создать навык для голосового интерфейса.

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

Всего я написал два навыка, каждый из которых занял призовое место. Первый — это была игра «Угадай персонажа». Пользователь загадывает какого-то персонажа, а Алиса задает наводящие вопросы и в итоге угадывает, кто это. С каждым ответом пользователя круг сужается пока в итоге не остается один персонаж. Систему я взял готовую, с помощью API, и приладил ее к голосовому интерфейсу. 

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

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

Сейчас хочу добавить в навык больше ребусов или даже сделать несколько уровней сложности. Но пока руки никак не дойдут.

Больше по теме

Разработка

13 советов, как сделать код на JavaScript качественнее и быстрее

Способы оптимизации кода: от простых до роскошных

Разработка

«Больше не участвую. Сотрудникам нельзя»

Интервью с Андреем Вавиловым — призёром соревнований Яндекса по программированию

Разработка

«Ребята опаздывали на занятия по фронтенду, потому что у них сенокос»

Интервью с основателями образовательного проекта «Кружок»

Разработка

Не только первое сентября

Студенты и выпускники вспоминают начало учёбы в школах Яндекса

Разработка

Меньше — лучше. Нетипичные приёмы верстки сайтов

Руководителей разработки интерфейсов Яндекса, об одном из неочевидных способов снизить вес страницы

Разработка

Буткемп в Яндексе, или как разработчику выбрать себе команду

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

Разработка

Исследовательские задачи, много кода и бэкенд вместо хореографии

Истории стажёров Яндекса