Spaces:
Sleeping
Sleeping
import streamlit as st | |
from huggingface_hub import hf_hub_download | |
from utils import * | |
# APP | |
st.set_page_config( | |
page_title="Hengam", | |
page_icon="🕒", | |
) | |
# Layout adjustments | |
st.markdown( | |
""" | |
<style> | |
.reportview-container .main .block-container { | |
max-width: 1400px; | |
} | |
</style> | |
""", | |
unsafe_allow_html=True, | |
) | |
st.markdown("## **🕒 Hengam**") | |
st.write("") | |
with st.expander("ℹ️ - About this app", expanded=True): | |
st.write( | |
""" | |
- Online Demo for Hengam: An Adversarially Trained Transformer for Persian Temporal Tagging [Code](https://github.com/kargaranamir/hengam)! | |
- This paper introduces Hengam, an adversarially trained transformer for Persian temporal tagging outperforming state-of-the-art approaches on a diverse and manually created dataset. | |
""" | |
) | |
st.markdown("") | |
# Load models lazily | |
def load_ner_model(model_path): | |
return NER(model_path=model_path, tags=['B-TIM', 'I-TIM', 'B-DAT', 'I-DAT', 'O']) | |
with st.spinner(text="Please wait while the model is loading...."): | |
# Download the models | |
HengamTransW = hf_hub_download(repo_id="kargaranamir/Hengam", filename="HengamTransW.pth") | |
HengamTransA = hf_hub_download(repo_id="kargaranamir/Hengam", filename="HengamTransA.pth") | |
# cache | |
load_ner_model(HengamTransW) | |
load_ner_model(HengamTransA) | |
st.markdown("") | |
st.markdown("## **📌 Paste any Persian (Farsi) text you want to extract its temporal markers.**") | |
with st.form(key="my_form"): | |
c1, c2 = st.columns([2, 3]) | |
with c1: | |
model_paths = { | |
"HengamTransW.pth": HengamTransW, | |
"HengamTransA.pth": HengamTransA, | |
} | |
default_model = "HengamTransA.pth" # Set the default model | |
ModelType = st.selectbox( | |
"Choose your model", | |
list(model_paths.keys()), | |
index=list(model_paths.keys()).index(default_model), # Select the default model | |
help="At present, you can choose between 2 models (HengamTransW or HengamTransA) to extract temporal markers. More to come!", | |
) | |
ner = load_ner_model(model_paths[ModelType]) | |
with c2: | |
doc = st.text_area( | |
"Paste your text below", | |
"Example: ساعت ۸ صبح من و علی قرار گذاشتیم که به دوشنبه بازار بریم ...", | |
height=80, | |
) | |
submit_button = st.form_submit_button(label="✨ Extract Temporal Markers!") | |
if submit_button: | |
result = ner("# " + doc) | |
st.write("") # Add vertical spacing | |
st.markdown("**Result:**") | |
st.code(result, language="python") | |