Wootang01's picture
Update app.py
c83e710
import streamlit as st
from happytransformer import HappyTextToText, TTSettings
from annotated_text import annotated_text
import difflib
from bokeh.models.widgets import Button
from bokeh.models import CustomJS
from streamlit_bokeh_events import streamlit_bokeh_events
checkpoint = "team-writing-assistant/t5-base-c4jfleg"
def diff_strings(a, b):
result = []
diff = difflib.Differ().compare(a.split(), b.split())
replacement = ""
for line in diff:
if line.startswith(" "):
if len(replacement) == 0:
result.append(" ")
result.append(line[2:])
else:
result.append(" ")
result.append(("", replacement, "#ffd"))
replacement = ""
result.append(line[2:])
elif line.startswith("- "):
if len(replacement) == 0:
replacement = line[2:]
else:
result.append(" ")
result.append(("", replacement, "#fdd"))
replacement = ""
elif line.startswith("+ "):
if len(replacement) == 0:
result.append((line[2:], "", "#dfd"))
else:
result.append(" ")
result.append((line[2:], replacement, "#ddf"))
replacement = ""
return result
@st.cache(suppress_st_warning=True, allow_output_mutation=True)
def get_happy_text(model_name):
return HappyTextToText("T5", model_name)
happy_tt = get_happy_text(checkpoint)
args = TTSettings(num_beams=5, min_length=1)
st.title("Grammar Corrector Two")
st.markdown("Paste or type text. Submit. The machine will attempt to correct your text's grammar and highlight its corrections.")
st.subheader("Example text: ")
col1, col2, col3 = st.columns([1, 2, 1])
with col1:
example_1 = st.button("Intrailly, the costumers was mad about why they will not but Fast Fashion again as they")
with col2:
example_2 = st.button("Firstly,why i think this policy should be changed is because sometime the customer may buy wrong size,if our company’s no-exchange policy,customers have threatened no never buy from Fast Fashion again.")
with col3:
example_3 = st.button("I try my best but still nervous. I hope I can get a good result.")
input_text = st.text_area('Paste or type text')
button = st.button('Submit')
def output(text):
with st.spinner('Correcting'):
text = "grammar: " + text
result = happy_tt.generate_text(text, args=args)
diff = diff_strings(text[9:], result.text)
annotated_text(*diff)
copy_button = Button(label="Copy the Result")
copy_button.js_on_event("button_click", CustomJS(args=dict(result=result.text), code="""
navigator.clipboard.writeText(result);
"""))
streamlit_bokeh_events(
copy_button,
events="GET_TEXT",
key="get_text",
refresh_on_update=True,
override_height=75,
debounce_time=0)
if example_1:
output("Intrailly, the costumers was mad about why they will not but Fast Fashion again as they")
elif example_2:
output("Firstly,why i think this policy should be changed is because sometime the customer may buy wrong size,if our company’s no-exchange policy,customers have threatened no never buy from Fast Fashion again.")
elif example_3:
output("I try my best but still nervous. I hope I can get a good result.")
elif input_text:
output(input_text)