Kosuke-Yamada commited on
Commit
14fb0e4
1 Parent(s): 0b93aab

change file

Browse files
Files changed (1) hide show
  1. app.py +21 -13
app.py CHANGED
@@ -30,23 +30,23 @@ def generate_image(text):
30
  return image_path
31
 
32
 
33
- def calulate_similarity_score(ori_text, text):
 
 
 
 
34
  if ori_text != text:
35
- model_name = "text-embedding-3-small"
36
- response = client.embeddings.create(input=[ori_text, text], model=model_name)
 
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 = calulate_similarity_score(ori_text, text)
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点未満の場合は当たっている単語、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="スコア")