Как отклассифицировать ингредиенты в списке ингредиентов кулинарного рецепта?
Добрый день!
Студент. Специальность - программист. Знаком с Python 3.0. Практики работы с нейросетью не имею. Остался без руководителя, но с утверждений темой проекта. Нужна схема методической части, которую реально мог бы осуществить.
Идея. Ингредиенты кулинарного рецепта делятся на группы: Содержащие преимущественно (i) углеводы - картофель, мука; (ii) белки - мясо, творог; ( iii) жиры - масло сливочное, подсолнечное. Задача. Научить сеть надежно определять в рецепте (в списке ингредиентов кулинарного рецепта) ингредиент с преимущественным содержанием углеводов, белков и пр. Входные данные. Поскольку работа по кафедре обработки естественного языка, на входе индивидуальные ингредиенты в виде текста (название ингредиента), на выходе группа, к которой относится ингредиент - углеводистая, белковая, жировая. Названия нужно перевести в вектора и оттренировать нейросеть на определение типа ингредиента. Спасайте. Буду рад любой подсказке.
Ну тут нейруха вряд ли сможет угадать, куда отнести авокадо, потому что установить связь между буквами в названии продукта и бжу нельзя. Можно сделать справочник, и по нему выдавать, к какой группе относится тот или иной ингредиент, но це не нейруха.
Спасибо большое за комментарий.
Но я, видимо, должен был указать, что база данных должна состоять из рецептов (списков ингредиентов) и также изначально иметь информацию о принадлежности каждого рецепта к той или иной группе (высокобелковая, высокоуглеводная, высокожировая). Обработав введённые данные, нейросеть определяет вероятность связи каждого ингредиента (например, муки) с каждой группой (например, высокоуглеводистая). После 'обучения' нейросеть должна сдать 'тест' на умение осуществлять 'правильную' классификацию того или иного рецепта на основании входящих в него ингредиентов.
Ещё раз спасибо за ваш ответ. Надеюсь, что я, наконец, правильно объяснил задачу, и она (такая задача) может быть решена с помощью нейросети. Хотелось бы узнать Ваше мнение.
Novobrom, окей, тогда на вход подается рецепт из с n чисел, которые представляют собой номера ингредиентов. А на выходе одно число, которое означает категорию рецепта. Вы ее учите, то есть подаете рецепты и их классификацию, а потом проверяете в бою. Так? Тогда нужно копать в сторону tensorflow и посмотреть видео этого чувака.
Спасибо большое за совет и ссылки. Большое облегчение. Сейчас буду смотреть. Ещё раз спасибо. Как вы считаете возможно ли все ингредиенты в базе рецептов представить в виде векторов и уже векторы использовать в качестве ввода в нейросеть? И уже к вектору привязывать индекс группы?
Насчет векторов не знаю, скорее всего тренировочные данные, как я уже сказал — n чисел на вход, одно число на выход, и так для каждого рецепта. Типа рецепт — вектор могу представить, а вот ингредиент — вектор не могу.
С помощью TensorFlow и NLTK научил нейросеть классифицировать кулинарные рецепты. Сам составил Toy Dataset для обучения и тестирования нейросети из рецептов двух стран. Текстовый файл с рецептами каждой страны имеет свою метку. Нейросеть на этой игрушечной базе рецептов классифицирует рецепты с точностью 0.8. Каждый рецепт представлен вектором с размерностью соответствующей общему количеству ингредиентов в базе - 254. Если ингредиент есть в рецепте - это 1, если нет - 0.
Дальше не знаю как использовать свою нейросеть для того, чтобы отклассифицировать сторонний рецепт на принадлежность к той или другой стране. Понятно, что этот сторонний рецепт должен быть тем же способом переведен в вектор той же размерности. Но как запустить его в нейросеть разобраться не могу. Буду благодарен за любую наводку.