Spaces:
Sleeping
Sleeping
Kosuke-Yamada
commited on
Commit
•
14fb0e4
1
Parent(s):
0b93aab
change file
Browse files
app.py
CHANGED
@@ -30,23 +30,23 @@ def generate_image(text):
|
|
30 |
return image_path
|
31 |
|
32 |
|
33 |
-
def
|
|
|
|
|
|
|
|
|
34 |
if ori_text != text:
|
35 |
-
|
36 |
-
|
|
|
37 |
score = cos_sim(response.data[0].embedding, response.data[1].embedding)
|
38 |
score = int(round(score, 2) * 100)
|
39 |
-
if score == 100
|
40 |
-
score = 99
|
41 |
else:
|
42 |
score = 100
|
43 |
return score
|
44 |
|
45 |
|
46 |
-
def cos_sim(v1, v2):
|
47 |
-
return np.dot(v1, v2) / (np.linalg.norm(v1) * np.linalg.norm(v2))
|
48 |
-
|
49 |
-
|
50 |
def tokenize_text(text):
|
51 |
mecab = MeCab.Tagger(f"-Ochasen {ipadic.MECAB_ARGS}")
|
52 |
return [t.split()[0] for t in mecab.parse(text).splitlines()[:-1]]
|
@@ -66,7 +66,7 @@ def create_hint_text(ori_text, text):
|
|
66 |
if r[:2] == "- ":
|
67 |
continue
|
68 |
elif r[:2] == "+ ":
|
69 |
-
output += "
|
70 |
else:
|
71 |
output += r.strip()
|
72 |
return output
|
@@ -80,7 +80,7 @@ def update_question(option):
|
|
80 |
def main(text, option):
|
81 |
ori_text = os.getenv(option)
|
82 |
image_path = generate_image(text)
|
83 |
-
score =
|
84 |
|
85 |
if score < 80:
|
86 |
match_words = create_match_words(ori_text, text)
|
@@ -92,6 +92,13 @@ def main(text, option):
|
|
92 |
return image_path, f"{score}点", hint_text
|
93 |
|
94 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
95 |
questions = ["Q1", "Q2", "Q3"]
|
96 |
for q in questions:
|
97 |
image_path = generate_image(os.getenv(q))
|
@@ -100,7 +107,7 @@ with gr.Blocks() as demo:
|
|
100 |
with gr.Row():
|
101 |
with gr.Column():
|
102 |
gr.Markdown(
|
103 |
-
"# プロンプトを当てるゲーム \n これは表示されている画像のプロンプトを当てるゲームです。プロンプトを入力するとそれに対応した画像とスコアとヒントが表示されます。スコア100点を目指して頑張ってください! \n\nヒントは80
|
104 |
)
|
105 |
option = gr.components.Radio(
|
106 |
["Q1", "Q2", "Q3"], label="問題を選んでください!"
|
@@ -113,7 +120,8 @@ with gr.Blocks() as demo:
|
|
113 |
input_text = gr.components.Textbox(
|
114 |
lines=1, label="画像にマッチするテキストを入力して!"
|
115 |
)
|
116 |
-
submit_button = gr.Button("Submit")
|
|
|
117 |
with gr.Column():
|
118 |
output_image = gr.components.Image(type="filepath", label="生成画像")
|
119 |
output_score = gr.components.Textbox(lines=1, label="スコア")
|
|
|
30 |
return image_path
|
31 |
|
32 |
|
33 |
+
def cos_sim(v1, v2):
|
34 |
+
return np.dot(v1, v2) / (np.linalg.norm(v1) * np.linalg.norm(v2))
|
35 |
+
|
36 |
+
|
37 |
+
def calculate_similarity_score(ori_text, text):
|
38 |
if ori_text != text:
|
39 |
+
response = client.embeddings.create(
|
40 |
+
input=[ori_text, text], model="text-embedding-3-small"
|
41 |
+
)
|
42 |
score = cos_sim(response.data[0].embedding, response.data[1].embedding)
|
43 |
score = int(round(score, 2) * 100)
|
44 |
+
score = 99 if score == 100 else score
|
|
|
45 |
else:
|
46 |
score = 100
|
47 |
return score
|
48 |
|
49 |
|
|
|
|
|
|
|
|
|
50 |
def tokenize_text(text):
|
51 |
mecab = MeCab.Tagger(f"-Ochasen {ipadic.MECAB_ARGS}")
|
52 |
return [t.split()[0] for t in mecab.parse(text).splitlines()[:-1]]
|
|
|
66 |
if r[:2] == "- ":
|
67 |
continue
|
68 |
elif r[:2] == "+ ":
|
69 |
+
output += "X"
|
70 |
else:
|
71 |
output += r.strip()
|
72 |
return output
|
|
|
80 |
def main(text, option):
|
81 |
ori_text = os.getenv(option)
|
82 |
image_path = generate_image(text)
|
83 |
+
score = calculate_similarity_score(ori_text, text)
|
84 |
|
85 |
if score < 80:
|
86 |
match_words = create_match_words(ori_text, text)
|
|
|
92 |
return image_path, f"{score}点", hint_text
|
93 |
|
94 |
|
95 |
+
def auth(user_name, password):
|
96 |
+
if user_name == os.getenv("USER_NAME") and password == os.getenv("PASSWORD"):
|
97 |
+
return True
|
98 |
+
else:
|
99 |
+
return False
|
100 |
+
|
101 |
+
|
102 |
questions = ["Q1", "Q2", "Q3"]
|
103 |
for q in questions:
|
104 |
image_path = generate_image(os.getenv(q))
|
|
|
107 |
with gr.Row():
|
108 |
with gr.Column():
|
109 |
gr.Markdown(
|
110 |
+
"# プロンプトを当てるゲーム \n これは表示されている画像のプロンプトを当てるゲームです。プロンプトを入力するとそれに対応した画像とスコアとヒントが表示されます。スコア100点を目指して頑張ってください! \n\nヒントは80点未満の場合は当たっている単語(順番は合っているとは限らない)、80点以上の場合は足りない文字を「X」で示した文字列を表示しています。",
|
111 |
)
|
112 |
option = gr.components.Radio(
|
113 |
["Q1", "Q2", "Q3"], label="問題を選んでください!"
|
|
|
120 |
input_text = gr.components.Textbox(
|
121 |
lines=1, label="画像にマッチするテキストを入力して!"
|
122 |
)
|
123 |
+
submit_button = gr.Button("Submit!")
|
124 |
+
|
125 |
with gr.Column():
|
126 |
output_image = gr.components.Image(type="filepath", label="生成画像")
|
127 |
output_score = gr.components.Textbox(lines=1, label="スコア")
|