
Цель:
Цель этого проекта — создать систему рекомендаций фильмов, используя функции, похожие на разные фильмы, например. жанр и др.
Этот проект будет разделен на 3 раздела
- Загрузка набора данных
- Очистка и предварительная обработка данных
- Создание системы рекомендаций
NB: все коды и ресурсы можно найти на моем GitHub
Загрузка набора данных
Набор данных содержит словари, поэтому мы импортируем библиотеку json, популярную для работы со словарными объектами, и панд, которые используются для загрузки наборов данных.


Очистка данных и предварительная обработка
Просто взглянув на набор данных, мы можем сразу увидеть, что столбцы, которые, вероятно, будут использоваться для наблюдения сходства между фильмами, будут столбцами жанра и ключевых слов. Все остальные столбцы на данном этапе кажутся избыточными, поэтому они будут удалены.

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

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

Построение рекомендательной системы
Прежде чем строить рекомендательную систему, мы должны импортировать косинусное сходство из sklearn, что поможет нам получить сходство между последовательностями векторов. Баллы показывают, насколько серия векторов похожа на вектор, где 1 — это сам вектор.

График поможет нам увидеть сходство между векторами в выбранном нами индексе и другими векторами.

Чтобы получить наиболее похожие векторы на наш выбранный вектор, нам нужно отсортировать оценки. используется функция argsort(). Важно отметить, что (а) функция argsort() сортирует в порядке возрастания и (б) она возвращает индекс значений вместо самих значений. Чтобы смягчить проблему (а), мы решили использовать функцию argsort() для противоположного направления векторов, а для (б) мы получили значение, индексируя сами оценки. График теперь показывает значения в порядке возрастания.

NB: индекс argsort() совпадает с индексом фрейма данных, с которым мы работаем. Таким образом, мы можем получить названия фильмов из фрейма данных, используя индекс, возвращаемый функцией argsort(). Ниже представлены фильмы, наиболее похожие на фильм с индексом «0». Индекс 0 был опущен, потому что это сам фильм.

Следующим шагом является создание функции, которая выполняет всю эту задачу за нас на ходу.

Запускаем рекомендательную систему

Ресурсы:
Все ресурсы проекта можно найти на моем GitHub, перейдя по этой ссылке. Также подпишитесь, если вам интересно НЛП. Буду публиковаться каждую неделю. Увидимся на другой стороне :).