Spaces:
Build error
Build error
danseith
commited on
Commit
·
a95bc58
1
Parent(s):
e9178dd
Reduced suggested edits and max edits for faster testing. Changed s
Browse files
app.py
CHANGED
|
@@ -18,17 +18,24 @@ ex_str3 = "The graphite plane is composed of a two-dimensional hexagonal lattice
|
|
| 18 |
"length and a width parallel to the graphite plane and a thickness orthogonal to the graphite plane with at " \
|
| 19 |
"least one of the length, width, and thickness values being 100 nanometers or smaller. "
|
| 20 |
|
| 21 |
-
|
| 22 |
-
|
| 23 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 24 |
|
| 25 |
|
| 26 |
def add_mask(text, size=1):
|
| 27 |
split_text = text.split()
|
| 28 |
|
| 29 |
# If the user supplies a mask, don't add more
|
| 30 |
-
if '
|
| 31 |
-
|
|
|
|
|
|
|
| 32 |
idx = np.random.randint(len(split_text), size=size)
|
| 33 |
masked_strings = []
|
| 34 |
for i in idx:
|
|
@@ -146,6 +153,14 @@ def sample_output(out, sampling):
|
|
| 146 |
return score_to_str[score]
|
| 147 |
|
| 148 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 149 |
def unmask(text, temp, rounds):
|
| 150 |
sampling = 'multi'
|
| 151 |
for _ in range(rounds):
|
|
@@ -161,7 +176,7 @@ def unmask(text, temp, rounds):
|
|
| 161 |
if unsuccessful_iters > 5:
|
| 162 |
break
|
| 163 |
print('skipped', new_token)
|
| 164 |
-
new_token = sample_output(out, sampling=
|
| 165 |
unsuccessful_iters += 1
|
| 166 |
if new_token == masked[0]:
|
| 167 |
split_text[mask_pos] = new_token
|
|
@@ -173,18 +188,43 @@ def unmask(text, temp, rounds):
|
|
| 173 |
text[0] = text[0].upper()
|
| 174 |
return ''.join(text)
|
| 175 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 176 |
|
| 177 |
-
|
| 178 |
-
output_textbox = gr.Textbox(placeholder="Output will appear here", lines=4)
|
| 179 |
-
temp_slider = gr.Slider(1.0, 3.0, value=1.0, label='Creativity')
|
| 180 |
-
edit_slider = gr.Slider(1, 20, step=5, value=1.0, label='Number of edits')
|
| 181 |
-
|
| 182 |
-
demo = gr.Interface(
|
| 183 |
fn=unmask,
|
| 184 |
-
inputs=[
|
| 185 |
-
outputs=[
|
| 186 |
-
examples=
|
| 187 |
-
allow_flagging='never'
|
|
|
|
|
|
|
| 188 |
)
|
| 189 |
|
| 190 |
-
|
|
|
|
|
|
|
|
|
| 18 |
"length and a width parallel to the graphite plane and a thickness orthogonal to the graphite plane with at " \
|
| 19 |
"least one of the length, width, and thickness values being 100 nanometers or smaller. "
|
| 20 |
|
| 21 |
+
tab_two_examples = [[ex_str1, 1.2, 1],
|
| 22 |
+
[ex_str2, 1.5, 10],
|
| 23 |
+
[ex_str3, 1.4, 5]]
|
| 24 |
+
|
| 25 |
+
tab_one_examples = [['A crustless _ made from two slices of baked bread.'],
|
| 26 |
+
['The present disclosure provides a DNA-targeting RNA that comprises a targeting _.'],
|
| 27 |
+
['The _ plane is composed of a two-dimensional hexagonal lattice of carbon atoms.']
|
| 28 |
+
]
|
| 29 |
|
| 30 |
|
| 31 |
def add_mask(text, size=1):
|
| 32 |
split_text = text.split()
|
| 33 |
|
| 34 |
# If the user supplies a mask, don't add more
|
| 35 |
+
if '_' in split_text:
|
| 36 |
+
u_pos = [i for i, s in enumerate(split_text) if '_' in s][0]
|
| 37 |
+
split_text[u_pos] = '[MASK]'
|
| 38 |
+
return ' '.join(split_text), '[MASK]'
|
| 39 |
idx = np.random.randint(len(split_text), size=size)
|
| 40 |
masked_strings = []
|
| 41 |
for i in idx:
|
|
|
|
| 153 |
return score_to_str[score]
|
| 154 |
|
| 155 |
|
| 156 |
+
def unmask_single(text, temp=1):
|
| 157 |
+
tp = add_mask(text, size=1)
|
| 158 |
+
masked_text, masked = tp[0], tp[1]
|
| 159 |
+
res = scrambler(masked_text, temp=temp, top_k=10)
|
| 160 |
+
out = {item["token_str"]: item["score"] for item in res}
|
| 161 |
+
return out
|
| 162 |
+
|
| 163 |
+
|
| 164 |
def unmask(text, temp, rounds):
|
| 165 |
sampling = 'multi'
|
| 166 |
for _ in range(rounds):
|
|
|
|
| 176 |
if unsuccessful_iters > 5:
|
| 177 |
break
|
| 178 |
print('skipped', new_token)
|
| 179 |
+
new_token = sample_output(out, sampling=sampling)
|
| 180 |
unsuccessful_iters += 1
|
| 181 |
if new_token == masked[0]:
|
| 182 |
split_text[mask_pos] = new_token
|
|
|
|
| 188 |
text[0] = text[0].upper()
|
| 189 |
return ''.join(text)
|
| 190 |
|
| 191 |
+
textbox1 = gr.Textbox(label="Input Sentence", lines=5)
|
| 192 |
+
output_textbox1 = gr.Textbox(placeholder="Output will appear here", lines=4)
|
| 193 |
+
|
| 194 |
+
textbox2 = gr.Textbox(label="Input Sentences", lines=5)
|
| 195 |
+
output_textbox2 = gr.Textbox(placeholder="Output will appear here", lines=4)
|
| 196 |
+
temp_slider2 = gr.Slider(1.0, 3.0, value=1.0, label='Creativity')
|
| 197 |
+
edit_slider2 = gr.Slider(1, 20, step=1, value=1.0, label='Number of edits')
|
| 198 |
+
|
| 199 |
+
title1 = "Patent-BERT Sentence Remix-er: Single Edit"
|
| 200 |
+
description1 = """<p>Try inserting a '_' where you want the model to generate a list of likely words.
|
| 201 |
+
<br/>
|
| 202 |
+
<p/>"""
|
| 203 |
+
title2 = "Patent-BERT Sentence Remix-er: Multiple Edits"
|
| 204 |
+
description2 = """<p>Try typing in a sentence for the model to remix. Adjust the 'creativity' scale bar to change the
|
| 205 |
+
the model's confidence in its likely substitutions and the 'number of edits' for the number of edits you want
|
| 206 |
+
the model to attempt to make. <br/> <p/> """
|
| 207 |
+
|
| 208 |
+
demo1 = gr.Interface(
|
| 209 |
+
fn=unmask_single,
|
| 210 |
+
inputs=[textbox1],
|
| 211 |
+
outputs='label',
|
| 212 |
+
examples=tab_one_examples,
|
| 213 |
+
allow_flagging='never',
|
| 214 |
+
title=title1,
|
| 215 |
+
description=description1
|
| 216 |
+
)
|
| 217 |
|
| 218 |
+
demo2 = gr.Interface(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 219 |
fn=unmask,
|
| 220 |
+
inputs=[textbox2, temp_slider2, edit_slider2],
|
| 221 |
+
outputs=[output_textbox2],
|
| 222 |
+
examples=tab_two_examples,
|
| 223 |
+
allow_flagging='never',
|
| 224 |
+
title=title2,
|
| 225 |
+
description=description2
|
| 226 |
)
|
| 227 |
|
| 228 |
+
gr.TabbedInterface(
|
| 229 |
+
[demo1, demo2], ["Single edit", "Multiple Edits"]
|
| 230 |
+
).launch()
|