Skip to content

Learn word embedding and service deployment by playing the Hat Game

License

Notifications You must be signed in to change notification settings

production-ml/the-hat-game

Repository files navigation

Игра в шляпу

Вам предлагается поучаствовать в игре на загадывание и отгадывание слов. Один из игроков пытается объяснить вытянутое из шляпы слово с помощью набора неоднокоренных слов, которые называются по очереди. После каждого нового сказанного слова другие игроки предлагают несколько вариантов отгадок. Чем раньше игрок угадает вытянутое из шляпы слово, тем больше очков он получит. Чем больше игроков угадают вытянутое из шляпы слово и чем раньше они это сделают, тем больше очков получит объясняющий игрок.

Начать за 10 минут

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

  1. Кликните на кнопку "Deploy to heroku", чтобы задеплоить вашего первого игрока.

    Deploy

  2. Зарегистрируйтесь для участия в Шляпе, и ждите вашего первого раунда! На лидерборде вы можете посмотреть на ваши очки и логи игры с вашим ботом.

Здесь вы найдете более подробное объяснение того, как устроен код игры, как написать своего первого игрока и как продолжить работать над ним.

Механика игры

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

Игра проходит следующим образом:

  • Ведущий вытягивает из шляпы слово WORD для команды i и отправляет его сервису команды с помощью REST API.
  • Сервис команды i составляет для ведущего список из N_EXPLAINING_WORDS слов, которые ведущий будет сообщать другим участникам по одному.
  • Отгадывание проходит N_EXPLAINING_WORDS итераций:
    • каждую итерацию j ведущий добавляет новую подсказку - новое слово и отправляет сервисам команд все сказанные на данный момент слова;
    • сервисы других игроков пытаются отгадать загаданное слово WORD, сообщая N_GUESSING_WORDS слов;
    • Как только загаданное слово оказывается в сообщенных ведущему словах, команда получает очки (чем раньше угадала - тем больше, например N_EXPLAINING_WORDS - j);
    • Загадывающая команда получает очки за каждую отгадавшую команду (например, столько же очков).
Механика игры на картинке Game mechanics

Диаграмма Дмитрия Лабазкина

Правила игры

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

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

Мы прекрасно понимаем, что правила игры не математически чётки, и что иногда их можно трактовать их по-разному. Поэтому если вы сомневаетесь в чем-то, заводите issue в репозитории с вопросом - мы постараемся помочь вам разобраться. Итак, правила:

Нельзя использовать

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

Это относится как к самостоятельному использованию (скачиваете словари и используете их сами), так и к использованию библиотек, которые под капотом делают это.

Можно использовать

  1. списки стоп-слов
  2. стемминг, лемматизацию
  3. pos-tagging
  4. токенизацию (например, в spicy)

Если pos-tagging/лемматизация/токенизация используют внутри себя какие-то предобученные модели - это ок, но использовать эти же предобученные модели для других целей нельзя. Например, нельзя использовать их, чтобы находить похожие слова на этапе предобработки текстов или при отгадывании/загадывании. Ещё пример - нельзя использовать их, чтобы обогащать тексты синонимами / антонимами.

Как это связано с реальной жизнью

В индустриальном машинном обучении высоко ценятся широта навыков (насколько ты близко к Fullstack) и умение быстро итерироваться в работе над задачей. Эти вещи взаимосвязаны, поскольку задержки часто возникают там, где закончивается зона ответственности одного человека и начинается зона ответственности другого. Fullstack-специалисты способны выполнять весь цикл работы над задачей - от постановки до внедрения в продакшн. Часто наиболее сложной частью работы является как раз выкатка в прод и дальнейшее развитие созданного решения, поэтому среди прочих Fullstack навыков для DS особенно ценны навыки Software Engineer.

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

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

Ну и помимо того, что это важно и нужно на работе, просто круто уметь создавать ML-решения целиком от начала до конца :)

В рамках нашего соревнования мы предлагаем вам воспользоваться Python, Flask и Docker и множеством других фреймворков и решений, чтобы реализовать игрока в шляпу, научить его отвечать на HTTP запросы и, наконец, задеплоить его на удаленном сервере, откуда он будет доступен другим людям.

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

About

Learn word embedding and service deployment by playing the Hat Game

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published