Это может быть слишком просто, чтобы нуждаться в рекомендациях.Если у каждого курса есть набор связанных материалов, то, очевидно, что прохождение курса c1 означает, что они должны иметь соответствующие материалы для курса.Возможно, рейтинг среди всех материалов по популярности.Это может быть очень легко и выполнить большую часть того, что вам нужно.
Если вы хотите смоделировать это как CF, вы можете;Я не знаю, сколько у вас данных.Если у вас всего несколько пользователей и курсов, их будет слишком мало, чтобы давать полезные ответы.
Ваши пользователи имеют отношение к двум вещам: курсам и материалам.Вы не хотите рекомендовать курсы, а скорее материалы.Я бы построил две модели данных: одну с информацией о курсе пользователя, а другую с информацией о покупке материала пользователя.Используйте данные пользовательского курса в качестве основы для реализации пользовательского сходства, которая определяет сходство пользователя и пользователя.Затем соедините это вместе с NearestNUserNeighborhood, GenericUserBasedRecommender, но с использованием другой модели данных пользовательского материала.
Вы будете использовать сходство пользователя и пользователя на основе курсов, чтобы давать рекомендации из материалов.