Anime Recommendation System - это система для поиска похожих аниме. Она включает анализ смысла описаний аниме и нахождение семантически похожих тайтлов. Можно искать как по описанию аниме, так и по его названию. Поиск аниме "по названию" подразумевает себя внутри поиск тоже по описанию. Название ищется у микросервиса в его базе.
- Использование эмбеддинга (библиотека sentence_transformer) для кодирования текста.
- Использование FAISS для поиска похожих аниме.
- Модуль с аниме рекомендатором (с использованием FAISS)
- Микросервис для выдачи рекомендаций (FastApi)
- Веб-приложение на Flet
- Данные для системы были взяты с сайта kaggle: Anime Database - july 2025.
- Для обработки этих данных использовал библиотеку pandas.
- Датасет содержит 28 фичей и около 29 тысяч объектов. После обработки данных число аниме сократилось до 25 тысяч, т.к в убранных объектах не было описания.
- Из всех признаков оставил, на мой взгляд, только 10 полезных.
- В колонках жанры, темы, форматы аниме были пропуски. Их я заменял обычным текстом "none" (заменять их модой или чем-нибудь еще было нелогично).
Первые два порекомендованных аниме:
1. Магия и мускулы (Темы: Магия, академия магов, сражения)
2. Непутёвый ученик в школе магии (Темы: Магия, школа магии, сражения)
AnimeRecommendation/
├── backend/
│ ├── data_structure.py # Pydantic Model
│ └── service.py # FastAPI приложение
├── config/
│ └── config_file.py
├── data/
│ └── anime_dataset.csv # Необработанный датасет
├── faiss/
│ ├── data.parquet # Отобранные и обработанные данные
│ └── index.faiss # Faiss индексы
├── frontend/
│ ├── assets/
│ ├── app.py # Веб-приложение
│ ├── grid_view.py # Контейнер для аниме тайтлов
│ └── main_page.py # Главная страница
├── ml_core/
│ └── anime_recommender.py # Рекомендатор
├── notebooks/
│ ├── EDA.ipynb
│ └── Recommender.ipynb
└── README.md
Поиск по названию:
- Введите название аниме в поле "Название аниме"
- Нажмите "Найти рекомендации"
- Система найдет семантически похожие тайтлы
Поиск по описанию:
- Опишите сюжет в поле "Описание аниме"
- Нажмите "Найти рекомендации"
- Получите релевантные рекомендации на основе описания
Пример запроса:
# Поиск по названию
{
"title": "Mashle",
"synopsis": "",
"k": 16
}Изначально рекомендер смотрит на "title" из запроса и выводит рекомендации по названию. Если название аниме пусто, то рекомендер смотрит на "synopsis" и выдает рекомендации по описанию. Если и описания и названия нет - снизу вылезет уведомление об ошибке.



