|
import streamlit as st |
|
from transformers import T5ForConditionalGeneration, T5TokenizerFast |
|
|
|
@st.cache(allow_output_mutation=True, suppress_st_warning=True) |
|
def load_model(): |
|
model_name = "north/demo-nynorsk-base" |
|
model = T5ForConditionalGeneration.from_pretrained(model_name) |
|
tokenizer = T5TokenizerFast.from_pretrained(model_name) |
|
return (model, tokenizer) |
|
|
|
def translate_to_nynorsk(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) |
|
|
|
st.title("Bokmål To Nynorsk") |
|
|
|
expander = st.sidebar.expander("About") |
|
expander.write("This web app allows you to translate a text in Norwegian Bokmål to Norwegian Nynorsk.") |
|
|
|
st.sidebar.header("Choose or write your own.") |
|
|
|
option = st.sidebar.selectbox( |
|
'', |
|
('En av de vanskeligste oppgavene når man oversetter fra bokmål til nynorsk, er å passe på at man bruker riktige pronomen. Man kan for eksempel si at man eier en bil og at den er rød.', 'Alle søknader behandles konfidensielt.', 'Kommunens nettsider henviser til kommunens vedtak.')) |
|
|
|
st.write('You selected:', option) |
|
|
|
text = st.text_input(f"Bokmål text: ") |
|
|
|
|
|
|
|
|
|
st.text("Nynorsk Translation: ") |
|
|
|
if text: |
|
model, tokenizer = load_model() |
|
translated_text = translate_to_nynorsk(model, tokenizer, text) |
|
st.write(translated_text[0] if translated_text else "Unknown Error Translating Text") |
|
|
|
|