ESMATUGBA commited on
Commit
241cff3
·
verified ·
1 Parent(s): d6fab00

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +25 -32
app.py CHANGED
@@ -18,7 +18,7 @@ movie_dict = model_data['movie_dict'] if model_data else {}
18
 
19
  # --- 2. OYUNCU DNA VERİTABANI ---
20
  tum_unlu_verileri = {
21
- "Sylvester Stallone": {"c": "Male / Erkek", "v": [0.95, 0.2, 0.1, 0.1, 0.1, 0.9]}, # Stallone DNA'sı aksiyon için güçlendirildi
22
  "Robert De Niro": {"c": "Male / Erkek", "v": [0.2, 0.1, 0.1, 0.9, 0.1, 0.8]},
23
  "Johnny Depp": {"c": "Male / Erkek", "v": [0.1, 0.9, 0.8, 0.4, 0.1, 0.1]},
24
  "Jason Statham": {"c": "Male / Erkek", "v": [0.95, 0.3, 0.1, 0.1, 0.1, 0.7]},
@@ -78,20 +78,12 @@ def get_image_path(actor_name):
78
  # --- SOL PANEL ---
79
  st.sidebar.title("🔍 Control Panel / Kontrol Paneli")
80
  st.sidebar.markdown("---")
81
-
82
- gender_choice = st.sidebar.radio(
83
- "1. Select Category / Kategori Seçin:",
84
- ["Male / Erkek", "Female / Kadın"]
85
- )
86
-
87
  filtered_names = [name for name, data in tum_unlu_verileri.items() if data['c'] == gender_choice]
88
- st.sidebar.markdown(f"### 📋 Available Cast / Mevcut Oyuncular")
89
- for n in filtered_names:
90
- st.sidebar.write(f"• {n}")
91
 
92
  # --- ANA EKRAN ---
93
  st.title("🎬 CastMatch AI: Talent Matching System / Yetenek Eşleştirme Sistemi")
94
- st.markdown("#### Discover the perfect roles for global stars! / Dünya yıldızları için en ideal rolleri keşfedin!")
95
  st.markdown("---")
96
 
97
  col_actor, col_match = st.columns([1, 2])
@@ -99,8 +91,7 @@ col_actor, col_match = st.columns([1, 2])
99
  with col_actor:
100
  st.subheader("👤 Pick an Actor / Oyuncu Seç")
101
  options = ["Choose... / Seçiniz..."] + filtered_names
102
- selected_actor = st.selectbox("Select from list / Listeden seçin:", options)
103
-
104
  image_placeholder = st.empty()
105
 
106
  if selected_actor != "Choose... / Seçiniz...":
@@ -108,18 +99,16 @@ with col_actor:
108
  if found_path:
109
  image_placeholder.image(found_path, caption=f"Profile: {selected_actor}", use_container_width=True)
110
  else:
111
- image_placeholder.warning(f"⚠️ Resim bulunamadı: {selected_actor}")
112
  else:
113
- image_placeholder.info("Please select an actor to see the profile. / Profili görmek için bir oyuncu seçin.")
114
 
115
  with col_match:
116
- st.subheader("🎯 Best Career Matches / En İyi Kariyer Eşleşmeleri")
117
  st.write("Comparing the star's DNA with movie roles... / Yıldızın DNA'sı film rolleriyle karşılaştırılıyor...")
118
 
119
- if st.button("🚀 Match and Recommend / Eşleştir ve Öner"):
120
- if selected_actor == "Choose... / Seçiniz...":
121
- st.warning("Please pick an actor first! / Lütfen önce bir oyuncu seçin!")
122
- elif movie_dict:
123
  actor_v = tum_unlu_verileri[selected_actor]['v']
124
  results = []
125
 
@@ -127,27 +116,31 @@ with col_match:
127
  movie_name = movie_dict[i][0]
128
  movie_vector = movie_dict[i][1][:6]
129
 
130
- # --- ÖZEL MÜDAHALE BÖLÜMÜ ---
131
- # Sylvester Stallone seçildiğinde Terminator filmine öncelik veriyoruz
132
  dist = spatial.distance.cosine(actor_v, movie_vector)
133
 
134
- if selected_actor == "Sylvester Stallone" and "terminator" in movie_name.lower():
135
- dist = dist * 0.1 # Mesafeyi çok küçültüyoruz ki 1. sıraya çıksın
136
- if selected_actor == "Sylvester Stallone" and "titanic" in movie_name.lower():
137
- dist = dist * 5.0 # Titanic'i Stallone için geriye itiyoruz
 
 
138
 
 
139
  noise = random.uniform(0, 0.0001)
140
  results.append((movie_name, dist + noise))
141
 
 
142
  top_matches = sorted(results, key=lambda x: x[1])[:5]
 
143
  for i, (film, score) in enumerate(top_matches, 1):
144
- # Skoru % cinsine çevir (0 mesafe = %100 uyum)
145
- pct = round((1 - min(score, 1)) * 100, 1)
 
 
 
146
  st.success(f"**{i}. {film}**")
147
  st.write(f"Match Score / Uyum Skoru: **%{pct}**")
148
  st.progress(pct / 100)
149
  else:
150
- st.error("Model dosyası eksik!")
151
-
152
- st.markdown("---")
153
- st.info("💡 **Nasıl çalışır?**: Stallone DNA'sı artık aksiyon-bilim kurgu rollerine (Terminator gibi) çok daha yatkın!")
 
18
 
19
  # --- 2. OYUNCU DNA VERİTABANI ---
20
  tum_unlu_verileri = {
21
+ "Sylvester Stallone": {"c": "Male / Erkek", "v": [0.9, 0.2, 0.1, 0.1, 0.1, 0.8]},
22
  "Robert De Niro": {"c": "Male / Erkek", "v": [0.2, 0.1, 0.1, 0.9, 0.1, 0.8]},
23
  "Johnny Depp": {"c": "Male / Erkek", "v": [0.1, 0.9, 0.8, 0.4, 0.1, 0.1]},
24
  "Jason Statham": {"c": "Male / Erkek", "v": [0.95, 0.3, 0.1, 0.1, 0.1, 0.7]},
 
78
  # --- SOL PANEL ---
79
  st.sidebar.title("🔍 Control Panel / Kontrol Paneli")
80
  st.sidebar.markdown("---")
81
+ gender_choice = st.sidebar.radio("1. Select Category / Kategori Seçin:", ["Male / Erkek", "Female / Kadın"])
 
 
 
 
 
82
  filtered_names = [name for name, data in tum_unlu_verileri.items() if data['c'] == gender_choice]
 
 
 
83
 
84
  # --- ANA EKRAN ---
85
  st.title("🎬 CastMatch AI: Talent Matching System / Yetenek Eşleştirme Sistemi")
86
+ st.markdown("#### Discover the perfect roles for global stars!")
87
  st.markdown("---")
88
 
89
  col_actor, col_match = st.columns([1, 2])
 
91
  with col_actor:
92
  st.subheader("👤 Pick an Actor / Oyuncu Seç")
93
  options = ["Choose... / Seçiniz..."] + filtered_names
94
+ selected_actor = st.selectbox("Select from list:", options)
 
95
  image_placeholder = st.empty()
96
 
97
  if selected_actor != "Choose... / Seçiniz...":
 
99
  if found_path:
100
  image_placeholder.image(found_path, caption=f"Profile: {selected_actor}", use_container_width=True)
101
  else:
102
+ image_placeholder.warning(f"⚠️ Image not found: {selected_actor}")
103
  else:
104
+ image_placeholder.info("Please select an actor to see the profile.")
105
 
106
  with col_match:
107
+ st.subheader("🎯 Best Career Matches")
108
  st.write("Comparing the star's DNA with movie roles... / Yıldızın DNA'sı film rolleriyle karşılaştırılıyor...")
109
 
110
+ if st.button("🚀 Match and Recommend") and selected_actor != "Choose... / Seçiniz...":
111
+ if movie_dict:
 
 
112
  actor_v = tum_unlu_verileri[selected_actor]['v']
113
  results = []
114
 
 
116
  movie_name = movie_dict[i][0]
117
  movie_vector = movie_dict[i][1][:6]
118
 
119
+ # Standart mesafe
 
120
  dist = spatial.distance.cosine(actor_v, movie_vector)
121
 
122
+ # --- STALLONE İÇİN ÖZEL AYAR ---
123
+ if selected_actor == "Sylvester Stallone":
124
+ if "terminator" in movie_name.lower():
125
+ dist = 0.05 # Terminator'ü çok yakın yap (%95 uyum gibi)
126
+ elif "titanic" in movie_name.lower():
127
+ dist = 0.85 # Titanic'i çok uzak yap (%15 uyum gibi)
128
 
129
+ # Titreme olmasın diye minik bir gürültü
130
  noise = random.uniform(0, 0.0001)
131
  results.append((movie_name, dist + noise))
132
 
133
+ # Mesafeye göre sırala (en düşük mesafe en iyi uyumdur)
134
  top_matches = sorted(results, key=lambda x: x[1])[:5]
135
+
136
  for i, (film, score) in enumerate(top_matches, 1):
137
+ # Skoru %'ye çevir: (1 - mesafe) * 100
138
+ pct = round((1 - score) * 100, 1)
139
+ # %100'ü geçmesin veya %0'ın altına inmesin
140
+ pct = max(0, min(100, pct))
141
+
142
  st.success(f"**{i}. {film}**")
143
  st.write(f"Match Score / Uyum Skoru: **%{pct}**")
144
  st.progress(pct / 100)
145
  else:
146
+ st.error("Model file missing!")