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'

Количество сериалов, \ предоставляемых сервисом {len(df)}

', 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'

Всего подобранных \ рекомендаций {len(top_dict)}

', 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( "
", unsafe_allow_html=True ) # streamlit run shows.py