lilingxi01's picture
[UI] Put more informations on the page.
cd78976
raw
history blame
3.96 kB
import streamlit as st
from datetime import datetime
from modules.prediction import prepare, predict
STATUS_STOPPED = 120001
STATUS_SUBMIT = 120002
STATUS_ERROR = 120003
has_prepared = False
st.session_state['running_status'] = STATUS_STOPPED
if not has_prepared:
print('>>> [PREPARE] Preparing...')
prepare()
has_prepared = True
st.markdown("""
<center><h2 style="padding-top: 0px; padding-bottom: 8px;">Entity Referring Classifier</h2></center>
<center><h6 style="color: #bfbfbf"><b>It knows exactly when you are calling it.</b></h6></center>
<br/>
""", unsafe_allow_html=True)
livedemo_col1, livedemo_col2, livedemo_col3 = st.columns([12,1,6])
with livedemo_col1:
st.markdown("""
<h3>Live Demo <small style="font-size:12px; color: #cfcfcf">version 2.0.1.1208</small></h3>
""", unsafe_allow_html=True)
with st.form("live_demo_form"):
entity = st.text_input('Entity Name:', 'Jimmy')
sentence = st.text_input('Sentence Input:', 'Are you feeling good, Jimmy?',
help='The classifier is going to analyze this sentence.')
if st.form_submit_button('🚀 Submit'):
if entity.lower() not in sentence.lower():
st.session_state['running_status'] = STATUS_ERROR
else:
st.session_state['running_status'] = STATUS_SUBMIT
if st.session_state['running_status'] == STATUS_STOPPED:
st.info('Type something and submit to start!')
elif st.session_state['running_status'] == STATUS_SUBMIT:
if predict(sentence, entity) == 'CALLING':
st.success('It is a **calling**!')
else:
st.success('It is a **mentioning**!')
st.caption(f'Submitted: `{sentence.lower()}` by `{datetime.now().strftime("%Y-%m-%d %H:%M:%S")}`')
elif st.session_state['running_status'] == STATUS_ERROR:
st.warning('The entity name is not in the sentence!')
st.markdown("""
#### Corpus
""")
st.markdown("""
<small style="font-size: 19px; padding-bottom: 6px;"><b><code>Calling</code></b></small>
means that the sentence contains the name and is telling to the entity.<br/>
<small style="color: #afafaf">
<b><i>Examples:</i></b><br/>
<b>-</b> Are you feeling good about it Jimmy?<br/>
<b>-</b> Are you feeling good Jimmy?<br/>
<b>-</b> Jimmy you are so cool!
</small>
""", unsafe_allow_html=True)
st.markdown("""
<small style="font-size: 19px; padding-bottom: 6px;"><b><code>Mentioning</code></b></small>
means that the sentence contains the name but is telling to other person.<br/>
<small style="color: #afafaf">
<b><i>Examples:</i></b><br/>
<b>-</b> Are you feeling good about Jimmy?<br/>
<b>-</b> Have you heard about Jimmy?<br/>
<b>-</b> Jimmy said that you are so cool!
</small>
""", unsafe_allow_html=True)
with livedemo_col2:
st.empty()
with livedemo_col3:
st.markdown("""
#### Get Started
""")
st.markdown("""
Hi! I'm the Entity Referring Classifier.
Specify an entity name, and then type a sentence to get started!
""")
st.markdown("""
#### Background
""")
st.markdown("""
There are a lot of voice assistants and bots out there,
but they all need a specific prefix to wake them like “hey siri” or “hey alexa”.
At our real world, nobody is communicating with others with such prefix all the time.
Everyone should be able to communicate in a comfortable way including with bots and virtual assistants.
Our aim here is to get rid of the "wake phrase".
""")
st.markdown("""
#### Applications
""")
st.markdown("""
Developers can apply it on their virtual bots or voice assistants to detect
if the user is calling the bot or just mentioning the bot rather than detecting a fixed wake-up phrase.
It will improve the human-computer interaction and usability.
""")