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")