File size: 3,567 Bytes
0ca4cb9 083d7ab b2c16a8 1cb85d9 1355484 9efa9f9 23a7611 083d7ab b22b7fe 083d7ab 1cb85d9 1355484 9efa9f9 30db748 9efa9f9 1355484 6e00639 1355484 083d7ab 1bdad80 2c2d4de 73ac073 6e00639 2c2d4de 53b8890 605bb66 6d01831 53b8890 1e3ffae 8255586 21b7bc1 8255586 33717c9 11cb5d4 083d7ab |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
import streamlit as st
from transformers import T5ForConditionalGeneration, T5TokenizerFast, T5Config
if 'textbox' not in st.session_state:
st.session_state['textbox'] = "Vi bruker ikke tegnsetting eller store bokstaver når vi prater. Vi slår også sammen ord, og i praksis er dermed heller ikke mellomrom meningsbærende. Prøv å fjerne tegnsetting, store bokstaver og mellomrom fra dette avsnittet. Se om den nye North-T5-modellen greier å sette sammen til et nytt meningsbærende avsnitt."
@st.cache(allow_output_mutation=True, suppress_st_warning=True)
def load_model():
model_name = "north/demo-deuncaser-base"
config = T5Config.from_pretrained(model_name)
model = T5ForConditionalGeneration.from_pretrained(model_name,config=config)
tokenizer = T5TokenizerFast.from_pretrained(model_name)
return (model, tokenizer)
def deuncase(model, tokenizer, text):
encoded_txt = tokenizer(text, return_tensors="pt")
generated_tokens = model.generate(
**encoded_txt
)
return tokenizer.batch_decode(generated_tokens, skip_special_tokens=True)
def uncase():
st.session_state['textbox'] = st.session_state['textbox'].lower()
def unpunct():
trans_chars = "'\",.:;-_*?/\n"
trans_table = st.session_state['textbox'].maketrans("", "", trans_chars)
st.session_state['textbox'] = st.session_state['textbox'].translate(trans_table)
def unspace():
st.session_state['textbox'] = st.session_state['textbox'].replace(" ","")
def sidebar_callback():
st.session_state['textbox'] = st.session_state['prefilled']
st.title("DeUnCaser")
st.sidebar.write("This web app adds spaces, punctation and capitalisation back into the text.")
st.sidebar.write("You can use the examples below, but too really test the effect of the model: Write or copy text from the Internet, and then manually remove spaces, puctation, cases etc. Try to restore the text.")
option = st.sidebar.selectbox(
"Examples:",
("Vi bruker ikke tegnsetting eller store bokstaver når vi prater. Vi slår også sammen ord, og i praksis er dermed heller ikke mellomrom meningsbærende. Prøv å fjerne tegnsetting, store bokstaver og mellomrom fra dette avsnittet. Se om den nye North-T5-modellen greier å sette sammen til et nytt meningsbærende avsnitt.","tirsdag var travel for ukrainas president volodymyr zelenskyj på morgenen tok han imot polens statsminister mateusz morawiecki","tirsdagvartravelforukrainaspresidentvolodymyrzelenskyjpåkveldentokhanimotpolensstatsministermateuszmorawiecki","deterikkelettåholderedepåstoreogsmåbokstavermanmåforeksempelhuskestorforbokstavnårmanskriveromkrimhalvøyamenkunbrukelitenforbokstavnårmanhenvisertilenkrimroman","detteerenlitendemosomerlagetavperegilkummervoldhanerenforskersomtidligerejobbetvednasjonalbiblioteketimoirana", "sentpå60talletvardetfaktisknoensomkalteungensinperegilkummervoldidagerdetikkelengersåvanligåbrukedobbeltnavninorgehvasynesduomdet"),key='prefilled',on_change=sidebar_callback)
placeholder = st.empty()
st.sidebar.write("\nText Tools:")
st.sidebar.button('Remove Punctation', on_click=unpunct)
st.sidebar.button('Remove Casing', on_click=uncase)
st.sidebar.button('Remove Spaces', on_click=unspace)
with placeholder:
text = st.text_area(f"Input text",max_chars=1000,height=140,key="textbox")
run = st.button('Run DeUnCaser')
if run:
model, tokenizer = load_model()
translated_text = deuncase(model, tokenizer, text)
st.write(translated_text[0] if translated_text else "Unknown Error Translating Text")
|