Изначально мы обучили модель на курсах и определили главные кластеры. Каждый кластер имеет свою центроиду. Чтобы не подтягивать модель для определения кластера каждого курса, мы заранее определили центроиды и записали их в файл data\cluster_courses.json
в следующем формате:
{
№_cluster: {
"center_coords": [float, float],
"courses": [
{
title: str,
author: str,
score: float,
num_students: int,
url: str
}
]
}
Дополнительно к каждому кластеру мы приложили 50 рандомных курсов.
Замечание: вместо рандомных курсов, можно в будущем выбирать самые популярные курсы.
Теперь пользуясь центроидами, можно векторизировать название (для которого нам нужно вычислить центроиду, чтобы сделать рекомендации), найти ближайший кластер и рекомендовать из этого кластера курсы! За это все отвечает файл recommend.py
. Он содержит следующие функции:
Модуль для подготовки названия. Токенизация, разделения, векторизация и применение UMAP модели - все это находится именно здесь в каждой функции. Чтобы получить просто обработанное и векторизованное название, воспользуйтесь функцией get_vector(), чтобы обработать UMAP моделью этот вектор, воспользуйтесь umap_emb(). Именно эти функции импортируются из этого модуля в recommend.py для рекомендаций. Более подробная документация каждой функции изложена в самом файле.