Spaces:
Build error
Build error
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("Подходящих фильмов не найдено, ослабьте фильтры 😔:")
|