Как разработать алгоритм, который предлагает возможные рецепты приготовления?


15

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

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

Какие методы можно использовать для разработки алгоритма, который (случайным образом) предлагает выполнимые рецепты (без использования базы данных фиксированных рецептов)?

Зачем мне искать алгоритм приготовления? Что ж, это был очень хороший пример применения базовых концепций в реальном мире, и такой алгоритм мог бы быть полезен в различных условиях, которые ближе к реальному миру.


1
Возможно, стоит взглянуть на различные типы эволюционных алгоритмов
Генри,

7
... или для облегчения, это из xkcd
Генри

2
@ Генри: А какую функцию вы бы использовали для фитнеса? Это главный вопрос!
Рафаэль

1
Может ли человек, проголосовавший за закрытие, объяснить причину своего голосования? Голосование за закрытие без объяснения причин не помогает ОП улучшить свой вопрос.
Алекс тен Бринк

1
Комментарии кажутся более экзотичными, чем сам вопрос.
Oeufcoque Penteano

Ответы:


4

Хм, используя теорему Байеса, чтобы сделать новые рецепты из старых рецептов. Я полагаю, вы сначала захотите, чтобы алгоритм разделил ингредиенты в понятную ему форму (не уверен, что для этого мы используем НЛП или если вы вручную вводите данные, это ни здесь, ни там). Оттуда ... ,

Я представляю что-то вроде этого.

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

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

Надеюсь, это немного поможет.


3

Широкий набор данных для США, содержащий почти 2000 рецептов, вы можете найти в Службе рецептов Вооруженных сил . Это не ответит на ваш вопрос, но предоставит вам реальные данные обучения.

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

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


«Это не ответит на ваш вопрос» - именно так и должен быть комментарий. Я вижу, что вы не можете комментировать еще; Я пометил для преобразования.
Рафаэль

@ Рафаэль: не преобразовывать это, потому что это слишком долго и - хотя это, возможно, не идеальный ответ - в целом это действительно пытается решить проблему. Если вы считаете, что это бесполезно, пожалуйста, проголосуйте. Пекка, хотя это, возможно, и не самый продуктивный источник нового кулинарного искусства, но это интересная и сопутствующая проблема ... Если бы вы могли расширить свой ответ, чтобы обсудить особенности разработки такого алгоритма, он мог бы быть более приемлемым.
Shog9

3

Генерация рецептов обычно используется в качестве примера приложения для систем обоснования. Это даже используется в качестве примера на странице Википедии . Поиск в Google "рецептов рассуждений по делу" дает множество результатов.


1

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

Основной подход состоит в том, чтобы представлять рецепты как ограниченный пакет компонентов (вектор логических значений с не более чем k ненулевыми значениями) и использовать LinUCB для выбора набора компонентов. Тогда обратная связь будет «нравится» или «не нравится». Конечно, если вы байесовец, вы можете предпочесть использовать Trueskill (используя вариант Adpredictor).

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.