HakshaySundar commited on
Commit
57c0869
1 Parent(s): 19f84a0

Upload 2 files

Browse files
Files changed (2) hide show
  1. app.py +28 -14
  2. text_converter.py +23 -22
app.py CHANGED
@@ -22,16 +22,6 @@ with gr.Blocks(css='styles.css') as app:
22
  gr.Markdown(APP_DESCRIPTION)
23
 
24
  with gr.Tab("FRE"):
25
- """with gr.Row():
26
- readability_model = gr.Radio(choices=model_types, label="Readability Model", value = model_types[0], interactive=True, scale = 2)
27
- readability_model_btn = gr.Button("Set Readability Model", scale = 1)
28
-
29
- readability_model_btn.click(
30
- fn=set_reading_levels,
31
- inputs=[readability_model],
32
- outputs=[readability_model]
33
- )"""
34
-
35
  with gr.Row():
36
  input_text = gr.Textbox(label="Input Text", placeholder="Type here...", lines=4, scale = 2)
37
  fetch_score_and_lvl_btn = gr.Button("Fetch Score and Level", scale = 1)
@@ -45,10 +35,7 @@ with gr.Blocks(css='styles.css') as app:
45
  outputs=[output_input_reading_score, output_input_reading_level]
46
  )
47
 
48
-
49
  grade_level_fre = gr.Radio(choices=list(fre_levels.keys()), label="Target Reading Level", interactive=True)
50
- #grade_level_sbert = gr.Radio(choices=list(sbert_levels.keys()), label="Target Reading Level", interactive=True, visible=(readability_model == model_types[1]))
51
- #grade_level = gr.Radio(choices=list(fre_levels.keys()) if readability_model == model_types[0] else list(sbert_levels.keys()), label="Target Reading Level", interactive=True)
52
 
53
  output_reading_level = gr.Textbox(label="Output Reading Level", placeholder="Output Reading Level...", lines=1)
54
  output_similarity = gr.Textbox(label="Similarity", placeholder="Similarity Score...", lines=1)
@@ -63,8 +50,35 @@ with gr.Blocks(css='styles.css') as app:
63
  inputs=[input_text, grade_level_fre, output_input_reading_score],
64
  outputs=[output_converted_text, output_similarity, output_reading_level, output_message]
65
  )
66
- #with gr.Tab("SBERT"):
 
 
 
 
 
 
67
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
68
 
69
  if __name__ == '__main__':
70
  app.launch()
 
22
  gr.Markdown(APP_DESCRIPTION)
23
 
24
  with gr.Tab("FRE"):
 
 
 
 
 
 
 
 
 
 
25
  with gr.Row():
26
  input_text = gr.Textbox(label="Input Text", placeholder="Type here...", lines=4, scale = 2)
27
  fetch_score_and_lvl_btn = gr.Button("Fetch Score and Level", scale = 1)
 
35
  outputs=[output_input_reading_score, output_input_reading_level]
36
  )
37
 
 
38
  grade_level_fre = gr.Radio(choices=list(fre_levels.keys()), label="Target Reading Level", interactive=True)
 
 
39
 
40
  output_reading_level = gr.Textbox(label="Output Reading Level", placeholder="Output Reading Level...", lines=1)
41
  output_similarity = gr.Textbox(label="Similarity", placeholder="Similarity Score...", lines=1)
 
50
  inputs=[input_text, grade_level_fre, output_input_reading_score],
51
  outputs=[output_converted_text, output_similarity, output_reading_level, output_message]
52
  )
53
+ with gr.Tab("SBERT"):
54
+ with gr.Row():
55
+ input_text = gr.Textbox(label="Input Text", placeholder="Type here...", lines=4, scale = 2)
56
+ fetch_score_and_lvl_btn = gr.Button("Fetch Score and Level", scale = 1)
57
+
58
+ output_input_reading_score = gr.Textbox(label="Input Text Reading Score", placeholder="Input Text Reading Score...", lines=1, interactive=False)
59
+ output_input_reading_level = gr.Textbox(label="Input Text Reading Level", placeholder="Input Text Reading Level...", lines=1, interactive=False)
60
 
61
+ fetch_score_and_lvl_btn.click(
62
+ fn=fetch_readability_score_sbert,
63
+ inputs=[input_text],
64
+ outputs=[output_input_reading_score, output_input_reading_level]
65
+ )
66
+
67
+ grade_level_sbert = gr.Radio(choices=list(sbert_levels.keys()), label="Target Reading Level", interactive=True)
68
+
69
+ output_reading_level = gr.Textbox(label="Output Reading Level", placeholder="Output Reading Level...", lines=1)
70
+ output_similarity = gr.Textbox(label="Similarity", placeholder="Similarity Score...", lines=1)
71
+ output_converted_text = gr.Textbox(label="Converted Text", placeholder="Results will appear here...", lines=4)
72
+
73
+ output_message = gr.Textbox(label="Message", placeholder="System Message...", lines=2)
74
+
75
+ convert_button = gr.Button("Convert Text")
76
+
77
+ convert_button.click(
78
+ fn=convert_text_sbert,
79
+ inputs=[input_text, grade_level_fre, output_input_reading_score],
80
+ outputs=[output_converted_text, output_similarity, output_reading_level, output_message]
81
+ )
82
 
83
  if __name__ == '__main__':
84
  app.launch()
text_converter.py CHANGED
@@ -1,7 +1,6 @@
1
  from bert_similarity import get_similarity
2
  from text_generator import get_gpt_response
3
  from arte_score import ping_api
4
- from textstat import flesch_reading_ease
5
 
6
  def generate_user_prompt(prompt_type, base_text):
7
  prompts = {
@@ -25,7 +24,7 @@ def generate_user_prompt(prompt_type, base_text):
25
 
26
  return prompts[prompt_type].format(base_text=base_text)
27
 
28
- model_types = ["FRE", "SBERT"]
29
 
30
  fre_levels = {
31
  "5th Grade (90-100)": (90, 100),
@@ -46,32 +45,34 @@ sbert_levels = {
46
  "Easy (> -0.04)": (-0.04, 100)
47
  }
48
 
49
- # Setting SBert to be default to avoid any issues.
50
- reading_levels = sbert_levels
51
 
52
- inverse_reading_levels = {v: k for k, v in reading_levels.items()}
53
 
54
- def set_reading_levels(level_type):
55
- global reading_levels
56
- global inverse_reading_levels
57
  if level_type == "FRE":
58
- reading_levels = fre_levels
59
  elif level_type == "SBERT":
60
- reading_levels = sbert_levels
61
- inverse_reading_levels = {v: k for k, v in reading_levels.items()}
62
  return level_type
63
 
64
  def fetch_readability_score_fre(input_text):
65
- return user_input_readability_level(input_text, True)
 
66
 
67
  def fetch_readability_score_sbert(input_text):
68
- return user_input_readability_level(input_text, False)
 
69
 
70
- def user_input_readability_level(input_text, is_fre):
71
- current_score = ping_api(input_text, model_types[0] if is_fre else model_types[1])
72
- print(f'Reading score for user input is: {current_score} for model type: {model_types[0] if is_fre else model_types[1]}')
73
  current_level = ''
74
- for (min, max), level in inverse_reading_levels.items():
75
  if min <= current_score <= max:
76
  print(f'Reading level for user input is: {level}')
77
  current_level = level
@@ -79,12 +80,12 @@ def user_input_readability_level(input_text, is_fre):
79
  return current_score, current_level
80
 
81
  def generate_sim_fre(input_text, min_reading_level, max_reading_level, min_entailment, system_prompt, max_iter, curr_reading_level):
82
- return generate_similar_sentence(input_text, min_reading_level, max_reading_level, min_entailment, system_prompt, max_iter, curr_reading_level, True)
83
 
84
  def generate_sim_sbert(input_text, min_reading_level, max_reading_level, min_entailment, system_prompt, max_iter, curr_reading_level):
85
- return generate_similar_sentence(input_text, min_reading_level, max_reading_level, min_entailment, system_prompt, max_iter, curr_reading_level, False)
86
 
87
- def generate_similar_sentence(input_text, min_reading_level, max_reading_level, min_entailment, system_prompt, max_iter, curr_reading_level, is_fre):
88
  i = 0
89
  completed = False
90
  user_prompt = ""
@@ -121,7 +122,7 @@ def generate_similar_sentence(input_text, min_reading_level, max_reading_level,
121
  generated_texts.append(response)
122
 
123
  similarity = get_similarity(response, input_text)
124
- reading_level = ping_api(response, model_types[0] if is_fre else model_types[1]) #flesch_reading_ease(response)
125
 
126
  # We add the generated text's reading level to the list.
127
  generated_text_scores.append((similarity, reading_level))
@@ -144,7 +145,7 @@ def generate_similar_sentence(input_text, min_reading_level, max_reading_level,
144
  i += 1
145
 
146
  # Printing all generated texts to the console.
147
- print(f"=============== Model Type: {model_types[0] if is_fre else model_types[1]} ===============\n")
148
  for index, text in enumerate(generated_texts):
149
  print(f"=============== Iteration {index} ===============")
150
  print(f"Generated text: {text}\nSimilarity: {generated_text_scores[index][0]}\nReadability Score: {generated_text_scores[index][1]}\n")
 
1
  from bert_similarity import get_similarity
2
  from text_generator import get_gpt_response
3
  from arte_score import ping_api
 
4
 
5
  def generate_user_prompt(prompt_type, base_text):
6
  prompts = {
 
24
 
25
  return prompts[prompt_type].format(base_text=base_text)
26
 
27
+ __model_types = ["FRE", "SBERT"]
28
 
29
  fre_levels = {
30
  "5th Grade (90-100)": (90, 100),
 
45
  "Easy (> -0.04)": (-0.04, 100)
46
  }
47
 
48
+ # Setting FRE to be default.
49
+ __reading_levels = fre_levels
50
 
51
+ __inverse_reading_levels = {v: k for k, v in __reading_levels.items()}
52
 
53
+ def __set_reading_levels(level_type):
54
+ global __reading_levels
55
+ global __inverse_reading_levels
56
  if level_type == "FRE":
57
+ __reading_levels = fre_levels
58
  elif level_type == "SBERT":
59
+ __reading_levels = sbert_levels
60
+ __inverse_reading_levels = {v: k for k, v in __reading_levels.items()}
61
  return level_type
62
 
63
  def fetch_readability_score_fre(input_text):
64
+ __set_reading_levels(__model_types[0])
65
+ return __user_input_readability_level(input_text, True)
66
 
67
  def fetch_readability_score_sbert(input_text):
68
+ __set_reading_levels(__model_types[1])
69
+ return __user_input_readability_level(input_text, False)
70
 
71
+ def __user_input_readability_level(input_text, is_fre):
72
+ current_score = ping_api(input_text, __model_types[0] if is_fre else __model_types[1])
73
+ print(f'Reading score for user input is: {current_score} for model type: {__model_types[0] if is_fre else __model_types[1]}')
74
  current_level = ''
75
+ for (min, max), level in __inverse_reading_levels.items():
76
  if min <= current_score <= max:
77
  print(f'Reading level for user input is: {level}')
78
  current_level = level
 
80
  return current_score, current_level
81
 
82
  def generate_sim_fre(input_text, min_reading_level, max_reading_level, min_entailment, system_prompt, max_iter, curr_reading_level):
83
+ return __generate_similar_sentence(input_text, min_reading_level, max_reading_level, min_entailment, system_prompt, max_iter, curr_reading_level, True)
84
 
85
  def generate_sim_sbert(input_text, min_reading_level, max_reading_level, min_entailment, system_prompt, max_iter, curr_reading_level):
86
+ return __generate_similar_sentence(input_text, min_reading_level, max_reading_level, min_entailment, system_prompt, max_iter, curr_reading_level, False)
87
 
88
+ def __generate_similar_sentence(input_text, min_reading_level, max_reading_level, min_entailment, system_prompt, max_iter, curr_reading_level, is_fre):
89
  i = 0
90
  completed = False
91
  user_prompt = ""
 
122
  generated_texts.append(response)
123
 
124
  similarity = get_similarity(response, input_text)
125
+ reading_level = ping_api(response, __model_types[0] if is_fre else __model_types[1])
126
 
127
  # We add the generated text's reading level to the list.
128
  generated_text_scores.append((similarity, reading_level))
 
145
  i += 1
146
 
147
  # Printing all generated texts to the console.
148
+ print(f"=============== Model Type: {__model_types[0] if is_fre else __model_types[1]} ===============\n")
149
  for index, text in enumerate(generated_texts):
150
  print(f"=============== Iteration {index} ===============")
151
  print(f"Generated text: {text}\nSimilarity: {generated_text_scores[index][0]}\nReadability Score: {generated_text_scores[index][1]}\n")