Spaces:
Sleeping
Sleeping
HaggiVaggi
commited on
Commit
·
6696b4f
1
Parent(s):
be3d993
Update pages/1 Подбор фильмов по описанию✏️🔍.py
Browse files
pages/1 Подбор фильмов по описанию✏️🔍.py
CHANGED
@@ -20,9 +20,6 @@ def embedding_and_index():
|
|
20 |
def load_model():
|
21 |
model = AutoModel.from_pretrained("DeepPavlov/rubert-base-cased-sentence")
|
22 |
return model
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
|
27 |
|
28 |
st.header("Подбор фильмов по описанию ✏️🔍")
|
@@ -35,39 +32,7 @@ model = load_model()
|
|
35 |
|
36 |
# Пользовательский ввод
|
37 |
user_input = st.text_input("Введите описание фильма:", value="", help="Чем подробнее будет ваше описание, тем точнее мы сможем подобрать для вас фильм 🤗'")
|
38 |
-
|
39 |
-
genre_list = ['анимация',
|
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 |
user_select_genre = st.multiselect('Выберите жанр', genre_list)
|
73 |
|
@@ -79,6 +44,7 @@ if st.button("Искать🔍🎦"):
|
|
79 |
outputs = model(**tokens)
|
80 |
embeddings = outputs.last_hidden_state.mean(dim=1)
|
81 |
return embeddings.cpu().numpy().astype('float32')
|
|
|
82 |
# Векторизация введенного запроса с использованием переданных tokenizer и model
|
83 |
input_embedding = encode_description(user_input, tokenizer, model)
|
84 |
|
@@ -96,36 +62,34 @@ if st.button("Искать🔍🎦"):
|
|
96 |
genre_mask_i = df['genre'].str.contains(genres_selected.iloc[i])
|
97 |
genre_mask = genre_mask & genre_mask_i
|
98 |
recs = recs[genre_mask]
|
99 |
-
|
100 |
-
if recs.empty:
|
101 |
-
st.subheader("Подходящих фильмов не найдено, ослабьте фильтры 😔:")
|
102 |
-
else:
|
103 |
-
|
104 |
|
105 |
-
|
|
|
106 |
st.subheader("Рекомендованные фильмы 🎉:")
|
107 |
-
for i in range(5):
|
108 |
st.markdown(f"<span style='font-size:{20}px; color:purple'>{recs['movie_title'].iloc[i]}</span>", unsafe_allow_html=True)
|
109 |
-
|
110 |
col1, col2 = st.columns([2, 1])
|
111 |
-
|
112 |
-
|
113 |
col1.info(recs['description'].iloc[i])
|
114 |
col1.markdown(f"**В ролях:** {recs['actors'].iloc[i]}")
|
115 |
col1.markdown(f"**Фильм можно посмотреть [здесь]({recs['page_url'].iloc[i]})**")
|
116 |
-
|
117 |
-
|
118 |
col2.image(recs['image_url'].iloc[i], caption=recs['movie_title'].iloc[i], width=200)
|
|
|
119 |
with st.sidebar:
|
120 |
st.info("""
|
121 |
-
|
122 |
-
|
123 |
feedback = st.text_input('Поделитесь с нами вашим мнением')
|
124 |
|
125 |
feedback_button = st.button("Отправить отзыв", key="feedback_button")
|
126 |
|
127 |
if feedback_button and feedback:
|
128 |
-
|
129 |
elif feedback_button:
|
130 |
-
|
131 |
-
|
|
|
|
20 |
def load_model():
|
21 |
model = AutoModel.from_pretrained("DeepPavlov/rubert-base-cased-sentence")
|
22 |
return model
|
|
|
|
|
|
|
23 |
|
24 |
|
25 |
st.header("Подбор фильмов по описанию ✏️🔍")
|
|
|
32 |
|
33 |
# Пользовательский ввод
|
34 |
user_input = st.text_input("Введите описание фильма:", value="", help="Чем подробнее будет ваше описание, тем точнее мы сможем подобрать для вас фильм 🤗'")
|
35 |
+
genre_list = ['анимация', 'аниме', 'балет', 'биография', 'боевик', 'вестерн', 'военный', 'детектив', 'детский', 'документальный', 'драма', 'исторический', 'катастрофа', 'комедия', 'концерт', 'короткометражный', 'криминал', 'мелодрама', 'мистика', 'музыка', 'мюзикл', 'нуар', 'приключения', 'сборник', 'семейный', 'сказка', 'спорт', 'триллер', 'ужасы', 'фантастика', 'фэнтези', 'эротика']
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
36 |
|
37 |
user_select_genre = st.multiselect('Выберите жанр', genre_list)
|
38 |
|
|
|
44 |
outputs = model(**tokens)
|
45 |
embeddings = outputs.last_hidden_state.mean(dim=1)
|
46 |
return embeddings.cpu().numpy().astype('float32')
|
47 |
+
|
48 |
# Векторизация введенного запроса с использованием переданных tokenizer и model
|
49 |
input_embedding = encode_description(user_input, tokenizer, model)
|
50 |
|
|
|
62 |
genre_mask_i = df['genre'].str.contains(genres_selected.iloc[i])
|
63 |
genre_mask = genre_mask & genre_mask_i
|
64 |
recs = recs[genre_mask]
|
|
|
|
|
|
|
|
|
|
|
65 |
|
66 |
+
if not recs.empty:
|
67 |
+
# Вывод рекомендованных фильмов с изображениями
|
68 |
st.subheader("Рекомендованные фильмы 🎉:")
|
69 |
+
for i in range(min(5, len(recs))):
|
70 |
st.markdown(f"<span style='font-size:{20}px; color:purple'>{recs['movie_title'].iloc[i]}</span>", unsafe_allow_html=True)
|
71 |
+
# Создаем две колонки: одну для текста, другую для изображения
|
72 |
col1, col2 = st.columns([2, 1])
|
73 |
+
|
74 |
+
# В колонке отображаем название фильма, описание, роли и ссылку
|
75 |
col1.info(recs['description'].iloc[i])
|
76 |
col1.markdown(f"**В ролях:** {recs['actors'].iloc[i]}")
|
77 |
col1.markdown(f"**Фильм можно посмотреть [здесь]({recs['page_url'].iloc[i]})**")
|
78 |
+
|
79 |
+
# В колонке отображаем изображение
|
80 |
col2.image(recs['image_url'].iloc[i], caption=recs['movie_title'].iloc[i], width=200)
|
81 |
+
|
82 |
with st.sidebar:
|
83 |
st.info("""
|
84 |
+
#### Мы смогли помочь вам с выбором?
|
85 |
+
""")
|
86 |
feedback = st.text_input('Поделитесь с нами вашим мнением')
|
87 |
|
88 |
feedback_button = st.button("Отправить отзыв", key="feedback_button")
|
89 |
|
90 |
if feedback_button and feedback:
|
91 |
+
st.success("Спасибо, каждый день мы стараемся быть лучше для вас 💟")
|
92 |
elif feedback_button:
|
93 |
+
st.warning("Пожалуйста, введите отзыв перед отправкой.")
|
94 |
+
else:
|
95 |
+
st.subheader("Подходящих фильмов не найдено, ослабьте фильтры 😔:")
|