Необходимо создать рекомендательную модель для рецептов на основе их чистого текста.
В ней должно учитываться уровень здоровости рецептов
Есть готовое приложение с активной пользовательской аудиторией и датасет с рецептами.
Идея в том, чтобы повысить вовлеченность пользователей и облегчить поиск по приложению, добавив к нему рекомендательную модель.
Также эта модель должна учитывать уровень здоровости, качество и количество потребляемых нутриентов.
В БД есть только данные о рецептах в чистом текстовом виде, также имеется уже собранная БД о витаминах и нутриентах товаров, присутствующих на рынке. Их нужно соединить.
Далее нужно оценить уровень семантической и нутриентной близости рецептов, составив из них графовую модель по уровню близости
Основная информация для кластеризации:
Название рецепта - количество порций - список ингредиентов - рецепт
Далее из них считаются калории и нутриенты.
Привязка количественных показателей каждого ингредиента (в том числе типу обработки ингредиента при готовке);
Обработка таблицы нутриентов (выделение способа приготовления и объема продукта, к которому относятся данные по нутриентам).
Тут самое интересное - это соотнесение способа приготовления с определенным ингредиентом из текста.
Выделяем глаголы, смотрим какой из них ближе всего, привязываем к ингредиенту, сравниваем с вариантами из таблицы, плюс итеративная проверка по степени похожести по difflib.
Наиболее сложное тут - контекстное распознавание случаев по типу "нарежьте 5 первых. ингредиентов из списка", это уже модели контекстного распознавания и глубокий NLP-анализ.
Это сейчас развивающаяся сфера, требовался дополнительный анализ.
Как текущий обход - хардкодим "возьмите N первых ингредиентов". Требуется дополнительно отследить насколько это частое явление в датасете.
Итог - таблица использованных ингредиентов в рецепте с учетом способа их приготовления по каждому рецепту.
Распределяем полученные во втором шаге по порциям, проводим дополнительные проверки на корректность.
Калькулятор здоровости определяет категории по принципам:
Распределяем уникальные наборы ингредиентов и методов их приготовления по айди, обучаем модель типа k-NN на основе меток калькулятора и набора ингредиентов.
Так получаем рекомендательную модель, которая будет подсказывать наиболее близкие варианты к уже использованным рецептам.
Поиск скрытых дублей: Смотрим по обученной модели степени близости между рецептами, выявляем аномальные показатели, отсматриваем их, помечаем, плюс дополнительная проверка на близость по уникальным ингредиентам и айди их набора.
Таким образом убираем задваивания из датасета.
Сборка - делаем модульную архитектуру для прогона, вставляем обновленные нутриентные и графовые датасеты в общий флоу.
По всем вопросам можно обращаться в Телеграм.