File size: 3,644 Bytes
0ca4cb9
083d7ab
 
 
8b24943
bc58139
75bf09d
083d7ab
 
 
 
 
 
 
 
b22b7fe
083d7ab
 
 
 
 
38ee187
75bf09d
1ec270d
bc58139
4a37ec4
c27c768
4a37ec4
c27c768
75bf09d
083d7ab
 
ee4fd44
 
083d7ab
9891614
2c2d4de
73ac073
c0c0b5f
2c2d4de
33717c9
 
50f9081
33717c9
50f9081
33717c9
50f9081
2c2d4de
8a4f3ac
8b24943
 
51a3831
8b24943
81e8c0f
8b24943
 
8a4f3ac
6c87eb0
f41bed5
2c2d4de
86d95da
8255586
21b7bc1
8255586
baca1b9
 
083d7ab
baca1b9
 
 
f6b43a0
 
440a4ac
d4340c9
834e40f
d4340c9
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82

import streamlit as st
from transformers import T5ForConditionalGeneration, T5TokenizerFast, T5Config

mytext= '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.'
option_changed = 0

@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 change_mytext():
    global option_changed
    option_changed = 1
    #st.write(f"inside function={option}")

#st.write(f"outside function={option_changed}")

    
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 use the buttons to remove spaces, puctation, cases etc. Try to restore the text.")


option = st.sidebar.selectbox(
     "Examples:",
     ("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"), on_change=change_mytext)

col1, col2, col3 = st.columns([1,1,1])
with col1:
    uncase=st.checkbox('Remove Casing')
with col2:
    unpunct=st.checkbox('Remove Punctation')
with col3:
    unspace=st.checkbox('Remove Spaces')

if uncase:
    mytext = mytext.lower()
if unpunct:
    trans_chars = "'\",.:;-_*?/\n"
    trans_table = mytext.maketrans("", "", trans_chars)
    mytext = mytext.translate(trans_table)
if unspace:
    mytext = mytext.replace(" ", "")
else:
    mytext= '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.'

text = st.text_area(f"",max_chars=1000, value=mytext)
text = "pere"

run = st.button('Run DeUnCaser')


#st.text("Fixed text: ")

#form = st.form(key='my_form')
#form.text_input(value="test",key="test",label='Enter some text')
#submit_button = form.form_submit_button(label='Submit')
#https://blog.streamlit.io/introducing-submit-button-and-forms/
    

#More stuff to try


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