File size: 1,842 Bytes
62a72a7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import streamlit as st
import gensim.downloader as api
import numpy as np
import string
import re

# 🔹 AI ipucu önerici
def oner_ipucu(hedefler, yasaklar, model, aday_kelimeler=None):
    filtre = set(hedefler + yasaklar)
    if aday_kelimeler is None:
        aday_kelimeler = list(model.key_to_index.keys())

    en_iyi_ipucu = None
    en_iyi_skor = -float("inf")

    for kelime in aday_kelimeler:
        if kelime in filtre:
            continue
        try:
            hedef_skor = np.mean([model.similarity(kelime, h) for h in hedefler if h in model])
            yasak_skor = np.mean([model.similarity(kelime, y) for y in yasaklar if y in model])
            toplam_skor = hedef_skor - yasak_skor
            if toplam_skor > en_iyi_skor:
                en_iyi_skor = toplam_skor
                en_iyi_ipucu = kelime
        except KeyError:
            continue

    return en_iyi_ipucu

# 🧠 Word2Vec modeli yükle (ilk seferde indirir)
@st.cache_resource
def load_model():
    return api.load("word2vec-google-news-300")

model = load_model()

# 🎯 Uygulama Başlığı
st.title("🧠 Codenames AI Assistant")
st.subheader("💡 Yapay Zeka ile Stratejik İpucu Önerici")

# 🎯 Girdiler
hedef_input = st.text_input("🎯 Hedef kelimeler (virgülle ayırın)", "dog, cat, fish")
yasak_input = st.text_input("⛔ Yasaklı kelimeler (virgülle ayırın)", "bomb, knife, gun")

# Buton
if st.button("🔍 En iyi ipucuyu öner"):
    hedefler = [w.strip().lower() for w in hedef_input.split(",")]
    yasaklar = [w.strip().lower() for w in yasak_input.split(",")]

    ipucu = oner_ipucu(hedefler, yasaklar, model)
    if ipucu:
        st.success(f"🎯 Önerilen İpucu: **{ipucu}**")
    else:
        st.error("Uygun ipucu bulunamadı. Kelimeleri kontrol edin.")