Metadata-Version: 2.4
Name: rs-study-utils
Version: 1.0.0
Summary: Notebook-friendly theory, search, and complete practice solutions for a recommender-systems exam.
Author: Recommender Systems Exam Helper
License-Expression: MIT
Project-URL: Homepage, https://pypi.org/project/rs-study-utils/
Keywords: recommender-systems,exam,movielens,jupyter,colab,education
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Education
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Education
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Provides-Extra: clipboard
Requires-Dist: pyperclip>=1.8.2; extra == "clipboard"
Dynamic: license-file

# RS Study Utils

`rs-study-utils` — компактная учебная библиотека для экзамена по рекомендательным системам. Внутри находятся 33 подробных теоретических ответа и 23 полностью самостоятельных практических решения для MovieLens.

Библиотека хранит учебные материалы и сама не устанавливает тяжёлые рекомендательные фреймворки. В коде конкретных заданий уже есть необходимые команды установки Surprise, implicit или LightFM.

## Установка

```bash
pip install rs-study-utils
```

В Google Colab:

```python
!pip install -q rs-study-utils
```

## Быстрый старт

```python
from rs_study_utils import theory, practice, find
```

Показать все номера теоретических вопросов или практических заданий:

```python
theory()
practice()
```

Получить материал по номеру:

```python
theory(8)
practice(14)
```

Найти лучший ответ по словам или по целой формулировке:

```python
theory("матричная факторизация")
practice("ALS top-10 для пользователя")
```

Одновременно поискать по теории и практике:

```python
find("LightFM WARP")
find("cosine similarity", kind="theory")
find("RMSE KNN", kind="practice")
```

Каждая найденная строка подсказывает готовую команду вида `theory(номер)` или `practice(номер)`.

## Отдельные функции поиска

```python
from rs_study_utils import search_theory, search_practice

search_theory("implicit feedback")
search_practice("TF-IDF названий")
```

## Получить текст без автоматического вывода

```python
answer = theory(5, display=False)
code = practice(3, display=False)
print(code)
```

Практическое решение возвращается целиком: условие, важные замечания, скачивание MovieLens и полный исполняемый код. Чтобы получить только код без заголовочных комментариев:

```python
code_only = practice(3, display=False, include_task=False)
```

## Все материалы сразу

```python
from rs_study_utils import all_theory, all_practice

all_theory()
all_practice()
```

## Копирование

```bash
pip install "rs-study-utils[clipboard]"
```

```python
from rs_study_utils import copy_theory, copy_practice

copy_theory(1)
copy_practice(1)
```

## Командная строка

```bash
rsstudy list-theory
rsstudy list-practice
rsstudy theory 8
rsstudy practice 14
rsstudy find "LightFM WARP"
```

То же самое без отдельной команды:

```bash
python -m rs_study_utils theory 8
```

## Данные и воспроизводимость практики

- В 22 заданиях каждый самостоятельный блок напрямую скачивает официальный `ml-latest-small.zip` с сервера GroupLens и читает `ratings.csv` и `movies.csv`.
- В задании 6 по условию используется встроенный MovieLens `ml-100k`, который Surprise скачивает вызовом `Dataset.load_builtin("ml-100k", prompt=False)`.
- Все решения предназначены для копирования в одну ячейку Google Colab или Jupyter Notebook.
- Все практические блоки синтаксически проверены; обычные задания, Surprise, implicit и LightFM также прошли исполняемые тесты.

## Основные команды

```python
from rs_study_utils import (
    theory, practice, find,
    list_theory, list_practice,
    search_theory, search_practice,
    all_theory, all_practice,
)
```

