Update app.py
Browse files
app.py
CHANGED
|
@@ -193,7 +193,7 @@ all_stars = sorted(list(star_popularity.keys()), key=lambda s: star_popularity[s
|
|
| 193 |
# --- YENİ EKLENTİ SONU ---
|
| 194 |
|
| 195 |
def get_movie_recommendations(selected_tags, selected_directors, selected_stars, min_imdb_rating_slider, num_recommendations_slider, search_text=""):
|
| 196 |
-
|
| 197 |
print(f"\n--- Öneri İsteği ---")
|
| 198 |
print(f"Seçilen Türler: {selected_tags}")
|
| 199 |
print(f"Seçilen Yönetmenler: {selected_directors}")
|
|
@@ -209,29 +209,29 @@ def get_movie_recommendations(selected_tags, selected_directors, selected_stars,
|
|
| 209 |
recommendations_df = df_filtered.copy()
|
| 210 |
|
| 211 |
recommendations_df = recommendations_df[recommendations_df['IMDb Rating'] >= min_imdb_rating_slider]
|
| 212 |
-
|
| 213 |
if selected_tags_list:
|
| 214 |
recommendations_df = recommendations_df[
|
| 215 |
recommendations_df['Tags_cleaned'].apply(lambda x: any(tag in x for tag in selected_tags_list))
|
| 216 |
]
|
| 217 |
-
|
| 218 |
if selected_directors_list:
|
| 219 |
recommendations_df = recommendations_df[
|
| 220 |
recommendations_df['Director_cleaned'].apply(lambda x: any(director in x for director in selected_directors_list))
|
| 221 |
]
|
| 222 |
-
|
| 223 |
if selected_stars_list:
|
| 224 |
recommendations_df = recommendations_df[
|
| 225 |
recommendations_df['Stars_cleaned'].apply(lambda x: any(star in x for star in selected_stars_list))
|
| 226 |
]
|
| 227 |
-
|
| 228 |
if search_text and len(recommendations_df) > 0 and sentence_model is not None:
|
| 229 |
try:
|
| 230 |
query_embedding = sentence_model.encode(search_text, convert_to_tensor=True)
|
| 231 |
except Exception as e:
|
| 232 |
print(f"HATA: Arama metni embedding'i oluşturulurken hata oluştu: {e}")
|
| 233 |
return "Arama metni işlenirken bir hata oluştu. Lütfen tekrar deneyin."
|
| 234 |
-
|
| 235 |
filtered_indices = recommendations_df.index.tolist()
|
| 236 |
if not filtered_indices or len(film_embeddings) == 0:
|
| 237 |
return "Filtreleme sonrası film bulunamadı."
|
|
@@ -242,10 +242,10 @@ def get_movie_recommendations(selected_tags, selected_directors, selected_stars,
|
|
| 242 |
|
| 243 |
current_film_embeddings = film_embeddings[filtered_indices]
|
| 244 |
cosine_scores = util.cos_sim(query_embedding, current_film_embeddings)[0]
|
| 245 |
-
recommendations_df['Similarity_Score'] = cosine_scores.cpu().numpy()
|
| 246 |
recommendations_df = recommendations_df.sort_values(
|
| 247 |
-
by=['Similarity_Score', 'IMDb Rating', 'Votes_numeric'],
|
| 248 |
-
ascending=[False, False, False]
|
| 249 |
).reset_index(drop=True)
|
| 250 |
except Exception as e:
|
| 251 |
print(f"HATA: NLP benzerlik hesaplanırken hata oluştu: {e}")
|
|
@@ -255,12 +255,12 @@ def get_movie_recommendations(selected_tags, selected_directors, selected_stars,
|
|
| 255 |
|
| 256 |
if not search_text or sentence_model is None:
|
| 257 |
recommendations_df = recommendations_df.sort_values(
|
| 258 |
-
by=['IMDb Rating', 'Votes_numeric'],
|
| 259 |
ascending=[False, False]
|
| 260 |
).reset_index(drop=True)
|
| 261 |
-
|
| 262 |
top_recommendations = recommendations_df.head(num_recommendations_slider)
|
| 263 |
-
|
| 264 |
if top_recommendations.empty:
|
| 265 |
return """
|
| 266 |
<div class="no-results-card">
|
|
@@ -369,7 +369,7 @@ custom_theme = gr.themes.Base(
|
|
| 369 |
# Dropdown, Slider, Textbox
|
| 370 |
input_background_fill="hsl(220, 10%, 20%)", # Koyu gri
|
| 371 |
input_border_color="hsl(220, 10%, 30%)",
|
| 372 |
-
input_text_color="white",
|
| 373 |
slider_color="hsl(24, 88%, 50%)", # Slider dolgu rengi
|
| 374 |
# Genel Gradio panelleri
|
| 375 |
block_background_fill="hsl(220, 10%, 15%)", # Daha koyu panel arka planı
|
|
|
|
| 193 |
# --- YENİ EKLENTİ SONU ---
|
| 194 |
|
| 195 |
def get_movie_recommendations(selected_tags, selected_directors, selected_stars, min_imdb_rating_slider, num_recommendations_slider, search_text=""):
|
| 196 |
+
|
| 197 |
print(f"\n--- Öneri İsteği ---")
|
| 198 |
print(f"Seçilen Türler: {selected_tags}")
|
| 199 |
print(f"Seçilen Yönetmenler: {selected_directors}")
|
|
|
|
| 209 |
recommendations_df = df_filtered.copy()
|
| 210 |
|
| 211 |
recommendations_df = recommendations_df[recommendations_df['IMDb Rating'] >= min_imdb_rating_slider]
|
| 212 |
+
|
| 213 |
if selected_tags_list:
|
| 214 |
recommendations_df = recommendations_df[
|
| 215 |
recommendations_df['Tags_cleaned'].apply(lambda x: any(tag in x for tag in selected_tags_list))
|
| 216 |
]
|
| 217 |
+
|
| 218 |
if selected_directors_list:
|
| 219 |
recommendations_df = recommendations_df[
|
| 220 |
recommendations_df['Director_cleaned'].apply(lambda x: any(director in x for director in selected_directors_list))
|
| 221 |
]
|
| 222 |
+
|
| 223 |
if selected_stars_list:
|
| 224 |
recommendations_df = recommendations_df[
|
| 225 |
recommendations_df['Stars_cleaned'].apply(lambda x: any(star in x for star in selected_stars_list))
|
| 226 |
]
|
| 227 |
+
|
| 228 |
if search_text and len(recommendations_df) > 0 and sentence_model is not None:
|
| 229 |
try:
|
| 230 |
query_embedding = sentence_model.encode(search_text, convert_to_tensor=True)
|
| 231 |
except Exception as e:
|
| 232 |
print(f"HATA: Arama metni embedding'i oluşturulurken hata oluştu: {e}")
|
| 233 |
return "Arama metni işlenirken bir hata oluştu. Lütfen tekrar deneyin."
|
| 234 |
+
|
| 235 |
filtered_indices = recommendations_df.index.tolist()
|
| 236 |
if not filtered_indices or len(film_embeddings) == 0:
|
| 237 |
return "Filtreleme sonrası film bulunamadı."
|
|
|
|
| 242 |
|
| 243 |
current_film_embeddings = film_embeddings[filtered_indices]
|
| 244 |
cosine_scores = util.cos_sim(query_embedding, current_film_embeddings)[0]
|
| 245 |
+
recommendations_df['Similarity_Score'] = cosine_scores.cpu().numpy()
|
| 246 |
recommendations_df = recommendations_df.sort_values(
|
| 247 |
+
by=['Similarity_Score', 'IMDb Rating', 'Votes_numeric'],
|
| 248 |
+
ascending=[False, False, False]
|
| 249 |
).reset_index(drop=True)
|
| 250 |
except Exception as e:
|
| 251 |
print(f"HATA: NLP benzerlik hesaplanırken hata oluştu: {e}")
|
|
|
|
| 255 |
|
| 256 |
if not search_text or sentence_model is None:
|
| 257 |
recommendations_df = recommendations_df.sort_values(
|
| 258 |
+
by=['IMDb Rating', 'Votes_numeric'],
|
| 259 |
ascending=[False, False]
|
| 260 |
).reset_index(drop=True)
|
| 261 |
+
|
| 262 |
top_recommendations = recommendations_df.head(num_recommendations_slider)
|
| 263 |
+
|
| 264 |
if top_recommendations.empty:
|
| 265 |
return """
|
| 266 |
<div class="no-results-card">
|
|
|
|
| 369 |
# Dropdown, Slider, Textbox
|
| 370 |
input_background_fill="hsl(220, 10%, 20%)", # Koyu gri
|
| 371 |
input_border_color="hsl(220, 10%, 30%)",
|
| 372 |
+
# input_text_color="white", # BU SATIR KALDIRILDI!
|
| 373 |
slider_color="hsl(24, 88%, 50%)", # Slider dolgu rengi
|
| 374 |
# Genel Gradio panelleri
|
| 375 |
block_background_fill="hsl(220, 10%, 15%)", # Daha koyu panel arka planı
|