Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| import pandas as pd | |
| import numpy as np | |
| import ast | |
| from func import filter_by_ganre, recommendation | |
| """ | |
| # Умный поиск сериалов | |
| """ | |
| df = pd.read_csv('dataset.csv') | |
| embeddings = np.loadtxt('embeddings.txt') | |
| df['ganres'] = df['ganres'].apply(lambda x: ast.literal_eval(x)) | |
| st.write(f'<p style="font-family: Arial, sans-serif; font-size: 24px; ">Количество сериалов, \ | |
| предоставляемых сервисом {len(df)}</p>', unsafe_allow_html=True) | |
| ganres_lst = sorted(['драма', 'документальный', 'биография', 'комедия', 'фэнтези', 'приключения', 'для детей', 'мультсериалы', | |
| 'мелодрама', 'боевик', 'детектив', 'фантастика', 'триллер', 'семейный', 'криминал', 'исторический', 'музыкальные', | |
| 'мистика', 'аниме', 'ужасы', 'спорт', 'скетч-шоу', 'военный', 'для взрослых', 'вестерн']) | |
| st.sidebar.header('Панель инструментов :gear:') | |
| choice_g = st.sidebar.multiselect("Выберите жанры", options=ganres_lst) | |
| n = st.sidebar.selectbox("Количество отображаемых элементов на странице", options=[5, 10, 15]) | |
| # col3, col4 = st.columns([5,2]) | |
| # with col3: | |
| text = st.text_input('Введите описание для рекомендации') | |
| # with col4: | |
| button = st.button('Отправить запрос', type="primary") | |
| if text and button: | |
| if len(choice_g) == 0: | |
| choice_g = ganres_lst | |
| filt_ind = filter_by_ganre(df, choice_g) | |
| top_dict = recommendation(filt_ind, embeddings, text, n) | |
| st.write(f'<p style="font-family: Arial, sans-serif; font-size: 18px; text-align: center;"><strong>Всего подобранных \ | |
| рекомендаций {len(top_dict)}</strong></p>', unsafe_allow_html=True) | |
| st.write('\n') | |
| # Отображение изображений и названий | |
| for ind, sim in top_dict.items(): | |
| col1, col2 = st.columns([3, 4]) | |
| with col1: | |
| st.image(df['poster'][ind], width=300) | |
| with col2: | |
| st.write(f"***Название:*** {df['title'][ind]}") | |
| st.write(f"***Жанр:*** {', '.join(df['ganres'][ind])}") | |
| st.write(f"***Описание:*** {df['description'][ind]}") | |
| similarity = round(sim, 4) | |
| st.write(f"***Cosine Similarity : {similarity}***") | |
| st.write(f"***Ссылка на фильм : {df['url'][ind]}***") | |
| st.markdown( | |
| "<hr style='border: 2px solid #000; margin-top: 10px; margin-bottom: 10px;'>", | |
| unsafe_allow_html=True | |
| ) | |
| # streamlit run shows.py |