Coder Social home page Coder Social logo

olegpolivin / the-hat-game Goto Github PK

View Code? Open in Web Editor NEW

This project forked from production-ml/the-hat-game

0.0 1.0 0.0 42.7 MB

Learn word embedding and service deployment by playing the Hat Game

License: MIT License

Dockerfile 1.51% Jupyter Notebook 47.69% Python 49.79% HTML 1.01%

the-hat-game's Introduction

Игра в шляпу

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

Если вы готовы начать, откройте пошаговый туториал по деплою вашего первого игрока в Шляпу или просто кликните на кнопку "Deploy to heroku".

Deploy

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

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

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

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

Правила игры

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

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

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

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

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

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

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

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

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

Пример игры

Начнем с примера проведения игры. Для этого откроем ноутбук GameRun_Demo.ipynb и выполним его целиком. Для примера можно взять данные датасета 20 news groups - их можно загрузить с помощью модуля sklearn.datasets. Они также доступны на kaggle. В качестве примера также подойдет любой достаточно длинный файл с текстом (приблизительно 1 миллиона строк должно быть достаточно).

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

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

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

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

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

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

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

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

the-hat-game's People

Contributors

aguschin avatar gleberof avatar olegpolivin avatar dependabot[bot] avatar naidenovaleksei avatar vitaliibelov avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.