nb2nn / app.py
pere's picture
Update app.py
58dedc3
raw
history blame
2.61 kB
import os
import time
import requests
import streamlit as st
API_URL = "https://api-inference.huggingface.co/models/NbAiLab/norwegian-gpt2-vgd"
def translate(text, wait=True):
headers = {"Authorization": f"Bearer {os.environ['BEARER']}"}
payload = {
"inputs": text,
"options": {
"wait_for_model": not wait
}
}
response = requests.post(API_URL, headers=headers, json=payload)
json_response = response.json()
if (isinstance(json_response, dict)
and "error" in json_response
and "estimated_time" in json_response):
st.write(json_response)
if wait:
with st.spinner(json_response["error"]):
bar = st.progress(0)
time_to_load = int(json_response["estimated_time"]) + 1
for progress in range(time_to_load):
bar.progress(progress / time_to_load)
time.sleep(1)
bar.empty()
return translate(text, wait=False)
else:
return "We could not load the model"
elif (isinstance(json_response, list)
and "translation_text" in json_response[0]):
return json_response[0]["translation_text"]
else:
return f"Oops, something went wrong: {str(json_response)}"
st.set_page_config(
page_title='Spurningen',
page_icon='translator-icon.png',
)
st.title("Bokmål ⇔ Nynorsk")
st.sidebar.title("Translation Demo")
st.sidebar.write("""
Spurningen (P.Chr. Asbjørnsen og Jørgen Moe Norske folkeeventyr (1852). I senere utgaver er eventyret kalt "Prinsessen som ingen kunde målbinde". Spurning er et gammelt norrønt ord for gåte. En spurning er en utspørring. Denne GPT2-modellen er trent på aviser, wikipedia og diverse sosiale media. Bl.a. er den trent på spørsmål og svar fra VGDebatt. Den er trent for å ikke la seg målbinde!
Dette er en demo-versjon hovedsakelig ment for forskning på auto-regressive språkmodeller. Det er ingen filter-funksjon her. Modellen kan godt generere tekst som i en annen kontekst kan være ekstremt fornærmende. Husk at dette er en lek med sammensetning av ord. Ikke la deg fornærme.
""")
text = st.text_area(" ",
"Nasjonalbibliotekets AI-lab har faktisk utviklet et språkmodell som ikke kan målbindes. Hvor tror dere dette ender?",
height=None,
max_chars=None,
key=None,
help="Enter your text here",
)
if st.button('Translate'):
if str(text).strip() == "":
st.warning('Please **enter text** for translation')
else:
st.info(str(translate(text)))