File size: 4,859 Bytes
f4650c9
 
 
 
 
 
 
 
 
 
 
09c26e9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c96062c
09c26e9
 
 
7a0ab5c
 
 
 
 
 
 
 
 
 
09c26e9
7a0ab5c
09c26e9
 
7a0ab5c
 
09c26e9
 
7a0ab5c
 
 
 
 
09c26e9
 
 
c96062c
 
 
 
 
 
 
 
09c26e9
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
---
title: Recommendations
emoji: 😻
colorFrom: purple
colorTo: indigo
sdk: streamlit
sdk_version: 1.40.2
app_file: app.py
pinned: false
---

## Описание проекта

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

## Язык описаний
Описания сериалов собирались на русском языке

## Требования

Чтобы запустить сервис, необходимо установить следующие зависимости:
- streamlit
- sentence-transformers
- faiss-cpu
- pandas
- numpy
- requests
- pillow

Чтобы установить все зависимости, необходимо выполнить команду:
**pip install -r requirements.txt**


## Сбор данных и обработка

Для начала работы было необходимо собрать данные с описаниями сериалов. Для этого использовали парсинг [сайта](https://myshows.me/), было собрано около 10 000 описаний к разным сериалам. Важной частью являлась обработка текста, например, удаление скрытых символов и фраз по типу "ПОЖАЛУЙСТА, ОБРАТИТЕ ВНИМАНИЕ" и т.п.

## Модель

Для получения эмбеддингов использовалась языковая модель - [cointegrated/rubert-tiny2](https://huggingface.co/cointegrated/rubert-tiny2)
 
## Использование и запуск сервиса

Чтобы запустить сервис, выполните команду:
```streamlit run app.py```

Далее откройте браузер и перейдите по адресу, указанному в терминале.

## Структура сервиса

  #### Страницы:
  - первая страница реализовывает асимметричный семантический поиск
  - вторая страница - симметричный семантический поиск
  
  #### Метрики
  - косинусное сходство
  - евклидово расстояние

## Ввод запроса

1. Введите ваш запрос в текстовое поле "Введите описание сериала"
2. Установите ползунок в диапазоне от 1 до 10 для рекомендации необходимого количества сериалов
3. Введите название фильма в текстовом поле для генерации краткого содержания с помощью SberGigachat
4. Введите название фильма в текстовом поле для генерации краткого содержания с помощью Википедии с выбором языка генерации (русский, английский)

## Результаты поиска

1. Сервис вернёт список сериалов, отсортированных по метрике, к вашему запросу
2. Сервис сгенерирует краткое содержание с помощью SberGigachat
3. Сервис сгенерирует краткое содержание с помощью Википедии с выбором языка генерации (русский, английский)


## Структура репозитория

- ```app.py``` — главный файл приложения
- ```clean_series_data.csv``` — файл с описаниями сериалов
- ```embeddings.npy``` - полученные эмбеддинги
- ```requirements.txt``` — файл с перечнем зависимостей
- ```README.md``` — этот файл с описанием проекта и инструкцией по запуску
- ```pages``` - страницы сервиса:
  - ```model_w_clustering.py``` - страница с симметричным поиском
  - ```wiki``` - страница с парсингом википедии в райнтайме