Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
Добро пожаловать в Кран-ресторан — казуальный симулятор, который превратит вас в настоящего мастера кулинарии! Управляйте краном, ловите нужные ингредиенты и готовьте блюда по рецептам, избегая ошибок, чтобы сохранить рейтинг и получить ценные награды.

Кран-Ресторан

Казуальные, Аркады, Шарики

Играть

Топ прошлой недели

  • AlexKud AlexKud 38 постов
  • SergeyKorsun SergeyKorsun 12 постов
  • SupportHuaport SupportHuaport 5 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

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

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня

IT + Кулинария

С этим тегом используют

Программирование IT юмор Программист Юмор Работа Картинка с текстом Разработка Рецепт Еда Видео рецепт Приготовление Вертикальное видео Выпечка Ингредиенты Все
3 поста сначала свежее
29
Timeweb.Cloud
Timeweb.Cloud
2 года назад
TECHNO BROTHER
Серия Своими руками

Генерируем рецепты блюд на JS и цепях Маркова⁠⁠

Автор: Iskorkin

Оригинальный материал

Генерируем рецепты блюд на JS и цепях Маркова Рецепт, Приготовление, Timeweb, Блюдо, Кулинария, Генерация, IT, Код, Длиннопост

Когда-то меня очень радовал один паблик в соцсети ВК. По заявлениям администрации нейросеть генерировала рецепты, которые и составляли 99% контента. Вероятно, действительно это была простенькая нейросеть вроде RNN или LSTM. К сожалению, последний пост в паблике датирован 2019 годом, а моя тяга к изысканным блюдам не угасла, поэтому было решено сделать генератор рецептов на JS и цепях Маркова. Почему не повторить эксперимент с более продвинутой доступной нейросетью вроде GPT-2? Потому что для ее обучения требуется достаточно много времени, ресурсов и данных.

Чтобы генерировать рецепты, мы будем использовать цепи Маркова — математическую модель, которая может предсказывать следующий элемент в последовательности на основе предыдущих. Для начала нам нужно собрать корпус данных — набор рецептов на определенную кухню. Затем мы обучим цепь Маркова на этом корпусе данных и будем генерировать новые рецепты на основе полученной модели. Да, про цепи Маркова было достаточно много статей и на Хабре, и вне его. Но меня восхищает простота реализации этого алгоритма, а результаты генерации веселят. Мы будем использовать простую реализацию, чтобы получить быстрый результат, а в конце статьи будут приведены лучшие из сгенерированных рецептов.

Готовим корпус

Когда-то у меня уже был собран датасет на 3000~ строк из кучи рецептов. Если мне не изменяет память, это результат парсинга одной из кулинарных групп в ВК. В txt файле все рецепты разделены пустыми строками.

Синхронно считаем данные, приведем к строке, и, разделим ее на массив абзацев по пустым строкам с помощью \n\n.

Генерируем рецепты блюд на JS и цепях Маркова Рецепт, Приготовление, Timeweb, Блюдо, Кулинария, Генерация, IT, Код, Длиннопост
Генерируем рецепты блюд на JS и цепях Маркова Рецепт, Приготовление, Timeweb, Блюдо, Кулинария, Генерация, IT, Код, Длиннопост

Корпус готов!

Разбираемся с Марковым

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

Для примера возьмем два заголовка, которые будут условным корпусом: “Тосты с сельдью и огурцом” и “Тосты с анчоусами и грецкими орехами”

Представим матрицу переходов для этих предложений:

Генерируем рецепты блюд на JS и цепях Маркова Рецепт, Приготовление, Timeweb, Блюдо, Кулинария, Генерация, IT, Код, Длиннопост
Генерируем рецепты блюд на JS и цепях Маркова Рецепт, Приготовление, Timeweb, Блюдо, Кулинария, Генерация, IT, Код, Длиннопост

Следуя этой матрице, после слова “Тосты” с вероятностью 100% будет идти “с”, а вот после “с” с вероятностью в 50% может идти либо “сельдью”, либо “анчоусами”. Очевидно, что чем больше корпус — тем больше вариантов и тем больше статистический разброс.

Реализация

Для начала соберем объект токенов в конструкторе класса генератора. Знаки препинания будут включаться в токены, а регистр букв останется оригинальным. Во-первых, это упростит токенизацию, во-вторых сделает абзацы более корректными.

Изначально tokens будет содержать ключ START для сбора стартовых слов. В процессе итеративно пройдем по всем элементам корпуса, разделив их по пробелу. Далее, работая с каждым словом по отдельности, будем добавлять их в качестве ключей в tokens, а следующее слово помещать в массив свойства этого ключа. Если же следующего слова нет, будет помещаться ключевое слово END, которое в дальнейшем будет сигнализировать генератору о том, что абзац сформирован.

Генерируем рецепты блюд на JS и цепях Маркова Рецепт, Приготовление, Timeweb, Блюдо, Кулинария, Генерация, IT, Код, Длиннопост

Если залогировать получившийся объект tokens, он будет иметь такой вид:

Генерируем рецепты блюд на JS и цепях Маркова Рецепт, Приготовление, Timeweb, Блюдо, Кулинария, Генерация, IT, Код, Длиннопост

Вы можете заметить, что токены могут повторяться. Мы их оставляем в таком виде, чтобы сохранить статистические вероятности. Например, после токена ‘муке’ с вероятностью в 75% будет идти ‘и’, а ‘(20’ или ‘(30’ с вероятностью в 7.5% соответственно.

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

Генерируем рецепты блюд на JS и цепях Маркова Рецепт, Приготовление, Timeweb, Блюдо, Кулинария, Генерация, IT, Код, Длиннопост

В конце концов, можно протестировать:

Генерируем рецепты блюд на JS и цепях Маркова Рецепт, Приготовление, Timeweb, Блюдо, Кулинария, Генерация, IT, Код, Длиннопост

Вместо заключения, отправляемся на кухню

Самые забавные на мой взгляд получившиеся результаты:

ИНГРЕДИЕНТЫ:
● оливковое масло — перемешиваем.
Для получения однородной массы.
Каждое печенье достать из черного перца
1 чайная ложка.
Готовим: Плавленый сырок нарезать и убрать форму.
В центр выложить яблоки в духовке минут на 30-40 минут до 180 градусов и разровнять в салатник.

Все мы будем добавлять муку, добавить мед — 0,5 чайной ложки соевого соуса. Даем остыть и добавляем муку.
Хорошенько перемешиваем курицу в предварительно добавить мед и я использовала замороженные ягоды, перед подачей на сметане без костей,
● лук,
● чеснок,
● оливковое масло и даем настояться 15-20 минут.
Замечательное кунжутное печенье на 15-20 минут на средней терке. Колбасу и 1 шт.
Кунжут — 3 шт, морковь натираем на пару часов или ужина. Особенно он превращается в разогретую до готовности.

💞 Салат «Венеция»
Ингредиенты:
● 350-400 г. оливок;
● 60 г. слабосоленой семги;
● 40-50 г. слабосоленой семги;
● 40-50 г. куриной тушки.

соль
ИНГРЕДИЕНТЫ:
● 1 ст. л.

Огонь нужно развести водой и потушить еще 65 минут. Подаем сырный суп с солью и морковь, покрывая весь салат.
Из яичного белка.
Приятного аппетита!

Ингредиенты:
1 банка (140 г.);
● майонез.
Приготовление:
Лук очистить от Светланы Гуаговой
Натереть рыбу сыром.
Нарезаем полукольцами луком, смазывать им гостей. Готовится торт что-то простое в духовке.
Выпекать булочки 25-30 мин до полного застывания.

Обжарить печень с картофелем, готов.
Приятного аппетита, радуйте своих близких, предлагаю попробовать приготовить и, не советую)

ИНГРЕДИЕНТЫ:
● Свежий (500г ) не суп!

Подпишись на наш блог, чтобы не пропустить новые интересные посты!

Показать полностью 9
[моё] Рецепт Приготовление Timeweb Блюдо Кулинария Генерация IT Код Длиннопост
4
nerd220
2 года назад

Кухарки и контейнеры⁠⁠

Жили-были две подружки кухарки - Маша и Даша. Маша с детства любила готовить и в целом у неё получались вкусные блюда. Она умела прислушаться к своим едокам и подстраивалась под них. Даша же окончила кулинарный техникум, но готовила не очень. Она умела готовить правильно, по инструкции, как готовят все. Поэтому едоки со своими потребностями шли лесом - они невежды.

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

Кухарки и контейнеры IT, Бюрократия, Программирование, Кулинария, Самообман, Длиннопост

Как-то раз Даша посмотрела японский Тик-Ток о том, как всё здорово можно обустроить на кухне и сразу же поделилась этим с Машей. Они решили подчистую переоборудовать кухню. Закупили множество красивых современных контейнеров, куда разложили лапшу, крупы и специи. Отдельные контейнеры для ножей и вилок, соусницы и бутылки для масла.

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

Да, теперь лапша красиво лежит и видно, сколько осталось перца. Но чтобы пополнить запасы нужно проделывать целый ряд операций. Не просто кинуть пакет с лапшой в кухонный шкаф, а вначале выкинуть остатки из банки, промыть её, просушить, положить лапшу, а затем уже остатки лапши, как и раньше, кинуть в шкаф. Масло теперь в специальной бутылке, но вытекает оно совсем не так, как привыкли кухарки.

Со временем эти дополнительные расходы на мнимое удобство начали превышать это самое "удобство". Теперь уже Маша дважды подумает, прежде чем готовить лазанью, ведь это не как раньше - сходил в магазин, разобрал пакет и готовь. Теперь нужно много мороки, чтобы было красиво.

...

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

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

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

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

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

Кухарки и контейнеры IT, Бюрократия, Программирование, Кулинария, Самообман, Длиннопост
Показать полностью 2
[моё] IT Бюрократия Программирование Кулинария Самообман Длиннопост
1
GlibMario
GlibMario
2 года назад
Кулинарная мастерская

Hello World! Post 2. /Cookie's post, Hello Pikabu!⁠⁠

Hello, World!

All programming languages starts teach u how to print on screen "Hello, World!"

It's a sing for all programmers, who starts hes road to lern a new language, that meens "You are Welcome!"

Now I start my post with this words "Hello, World!". I think it meens "You are Welcome!"

Some times I study how to start my post. I think that Words we can replays by "Hello, Pikabu!"

Ye Pikabu it's like a World. BIg Pikabu WorldIT, some times ShitIT.

Reddit did you see my cooked post for you? I press a button <allow to show/> my cookies for you.

Do you see this?

/cookies

Hello World! Post 2. /Cookie's post, Hello Pikabu! Пост, Пикабу, Ведьмак, Starcraft, Длиннопост, Печенье, Посты на Пикабу, Сообщества Пикабу, Кулинария, Мужская кулинария, IT, Программирование, Программист, Изучение языка, Cookie

Cookie's

Hello World! Post 2. /Cookie's post, Hello Pikabu! Пост, Пикабу, Ведьмак, Starcraft, Длиннопост, Печенье, Посты на Пикабу, Сообщества Пикабу, Кулинария, Мужская кулинария, IT, Программирование, Программист, Изучение языка, Cookie

Shmookie's

Hello World! Post 2. /Cookie's post, Hello Pikabu! Пост, Пикабу, Ведьмак, Starcraft, Длиннопост, Печенье, Посты на Пикабу, Сообщества Пикабу, Кулинария, Мужская кулинария, IT, Программирование, Программист, Изучение языка, Cookie

Ashbringer or Garen's Sword i think.

Hello World! Post 2. /Cookie's post, Hello Pikabu! Пост, Пикабу, Ведьмак, Starcraft, Длиннопост, Печенье, Посты на Пикабу, Сообщества Пикабу, Кулинария, Мужская кулинария, IT, Программирование, Программист, Изучение языка, Cookie

Witcher's Wolf Necklase

Hello World! Post 2. /Cookie's post, Hello Pikabu! Пост, Пикабу, Ведьмак, Starcraft, Длиннопост, Печенье, Посты на Пикабу, Сообщества Пикабу, Кулинария, Мужская кулинария, IT, Программирование, Программист, Изучение языка, Cookie

My Hydralisk from StarCraft 2

Показать полностью 5
[моё] Пост Пикабу Ведьмак Starcraft Длиннопост Печенье Посты на Пикабу Сообщества Пикабу Кулинария Мужская кулинария IT Программирование Программист Изучение языка Cookie
15
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии