Hellisotherpeople commited on
Commit
ef797fb
β€’
1 Parent(s): 07d2559

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +34 -5
app.py CHANGED
@@ -11,6 +11,7 @@ from transformers import (AutoModelForCausalLM, AutoModelForQuestionAnswering,
11
  pipeline, top_k_top_p_filtering)
12
 
13
 
 
14
  st.set_page_config(page_title="Gadsby")
15
  st.title("Gadsby - Constrained Text Generation with Transformers")
16
  st.caption("By Allen Roush")
@@ -25,7 +26,7 @@ form.header("Main Settings")
25
 
26
  model_name = form.text_area("Enter the name of the pre-trained model from transformers that we are using for Text Generation", value = "gpt2")
27
  form.caption("This will download a new model, so it may take awhile or even break if the model is too large")
28
- mode = form.selectbox("What kind of constrained generation are we doing?", ["lipogram", "reverse_lipogram", "e-prime", "rhopalism", "length_constrained", "greater_than_length"])
29
  form.caption("Lipograms mean that a letter (or substring) is not allowed in the generated string, reverse lipograms force a letter to be in the generated string")
30
 
31
  if mode == "lipogram":
@@ -42,12 +43,17 @@ elif mode == "reverse_lipogram":
42
  elif mode == "rhopalism":
43
  length_constraint = form.number_input("Enter the length that the Rhopalism shoud start with", value = 1)
44
  st.caption("Rhopalisms are usually reliable but sometimes you need to try generating two or three times for a perfect one")
 
 
 
 
 
45
  else:
46
  length_constraint = form.number_input("Enter the length should each word be restricted to (or greater/less than)", value = 5) + 1
47
 
48
 
49
  length = form.number_input("Select how long you want the generated text to be", value = 100)
50
- number_of_tokens_to_sample = form.number_input("Select how many tokens we want to search through when we do the filtering", value = 1000)
51
  form.caption("Settings this to higher numbers will improve the experience but will cause generating to slow. Low numbers may cause lots of blank or failed generations")
52
  temperature = form.number_input("How spicy/interesting do we want our models output to be", value = 1.05, min_value = 0.0)
53
  form.caption("Setting this higher decreases the likelihood of high probability words and increases the likelihood of low probability (and presumably more interesting) words")
@@ -68,9 +74,13 @@ def isPalindrome(s):
68
  return s == s[::-1]
69
 
70
 
71
- if mode == "rhopalism":
72
  rhopalism_len = length_constraint
73
- alphabet_string = string.ascii_lowercase
 
 
 
 
74
 
75
 
76
  def get_next_word_without_e(input_sequence):
@@ -110,19 +120,38 @@ def get_next_word_without_e(input_sequence):
110
  ##Mostly works
111
  if len(resulting_string) == rhopalism_len:
112
  return resulting_string
 
 
 
 
 
 
 
 
 
 
113
  return " "
114
 
115
 
116
 
 
 
117
  i = length
118
  while i > 0:
 
119
  new_word = get_next_word_without_e(input_sequence= sequence)
120
  sequence = sequence + new_word
121
- if mode == "rhopalism":
122
  rhopalism_len += 1
123
  i = i-1
 
 
 
 
 
124
 
125
  st.write("GENERATED SEQUENCE: ")
126
  st.write(sequence)
 
127
 
128
 
 
11
  pipeline, top_k_top_p_filtering)
12
 
13
 
14
+
15
  st.set_page_config(page_title="Gadsby")
16
  st.title("Gadsby - Constrained Text Generation with Transformers")
17
  st.caption("By Allen Roush")
 
26
 
27
  model_name = form.text_area("Enter the name of the pre-trained model from transformers that we are using for Text Generation", value = "gpt2")
28
  form.caption("This will download a new model, so it may take awhile or even break if the model is too large")
29
+ mode = form.selectbox("What kind of constrained generation are we doing?", ["lipogram", "reverse_lipogram", "e-prime", "rhopalism", "length_constrained", "greater_than_length", "Pangram", "rhopalism-lipogram"])
30
  form.caption("Lipograms mean that a letter (or substring) is not allowed in the generated string, reverse lipograms force a letter to be in the generated string")
31
 
32
  if mode == "lipogram":
 
43
  elif mode == "rhopalism":
44
  length_constraint = form.number_input("Enter the length that the Rhopalism shoud start with", value = 1)
45
  st.caption("Rhopalisms are usually reliable but sometimes you need to try generating two or three times for a perfect one")
46
+ elif mode == "rhopalism-lipogram":
47
+ naughty_strings_list = st.text_area("Enter the list of strings that you don't want in each word seperated by a space", value = "E e")
48
+ naughty_strings = naughty_strings_list.split(" ")
49
+ length_constraint = form.number_input("Enter the length that the Rhopalism shoud start with", value = 1)
50
+ st.caption("Rhopalisms are usually reliable but sometimes you need to try generating two or three times for a perfect one")
51
  else:
52
  length_constraint = form.number_input("Enter the length should each word be restricted to (or greater/less than)", value = 5) + 1
53
 
54
 
55
  length = form.number_input("Select how long you want the generated text to be", value = 100)
56
+ number_of_tokens_to_sample = form.number_input("Select how many tokens we want to search through when we do the filtering", value = 25000)
57
  form.caption("Settings this to higher numbers will improve the experience but will cause generating to slow. Low numbers may cause lots of blank or failed generations")
58
  temperature = form.number_input("How spicy/interesting do we want our models output to be", value = 1.05, min_value = 0.0)
59
  form.caption("Setting this higher decreases the likelihood of high probability words and increases the likelihood of low probability (and presumably more interesting) words")
 
74
  return s == s[::-1]
75
 
76
 
77
+ if mode == "rhopalism" or mode == "rhopalism-lipogram":
78
  rhopalism_len = length_constraint
79
+
80
+
81
+
82
+ nice_strings_pangram = list(string.ascii_lowercase)
83
+
84
 
85
 
86
  def get_next_word_without_e(input_sequence):
 
120
  ##Mostly works
121
  if len(resulting_string) == rhopalism_len:
122
  return resulting_string
123
+ elif mode == "Pangram":
124
+ if any(c in nice_strings_pangram for c in resulting_string):
125
+ return resulting_string
126
+ elif mode == "rhopalism-lipogram":
127
+ if len(resulting_string) == rhopalism_len:
128
+ if all(nauty_string not in resulting_string for nauty_string in naughty_strings):
129
+ return resulting_string
130
+
131
+
132
+
133
  return " "
134
 
135
 
136
 
137
+
138
+ j = 0
139
  i = length
140
  while i > 0:
141
+ current_digit = int(digits_of_pi[j])
142
  new_word = get_next_word_without_e(input_sequence= sequence)
143
  sequence = sequence + new_word
144
+ if mode == "rhopalism" or mode == "rhopalism-lipogram":
145
  rhopalism_len += 1
146
  i = i-1
147
+ if mode == "Pangram":
148
+ for character in sequence:
149
+ if character in nice_strings_pangram:
150
+ nice_strings_pangram.remove(character)
151
+ j += 1
152
 
153
  st.write("GENERATED SEQUENCE: ")
154
  st.write(sequence)
155
+ #st.write(nice_strings_pangram)
156
 
157