Spaces:
Running
Running
# Hint: this cheatsheet is magic! https://cheat-sheet.streamlit.app/ | |
import constants | |
import numpy as np | |
import pandas as pd | |
import streamlit as st | |
from transformers import BertForSequenceClassification, AutoTokenizer | |
import random | |
import altair as alt | |
from altair import X, Y, Scale | |
def convert_df(df): | |
# IMPORTANT: Cache the conversion to prevent computation on every rerun | |
return df.to_csv(index=None).encode("utf-8") | |
def compute_ALDi(inputs): | |
return random.randint(0, 100) / 100 | |
st.title(constants.TITLE) | |
tab1, tab2 = st.tabs(["Input a Sentence", "Upload a File"]) | |
with tab1: | |
sent = st.text_input("Arabic Sentence:", placeholder="Enter an Arabic sentence.") | |
# TODO: Check if this is needed! | |
st.button("Submit") | |
if sent: | |
ALDi_score = compute_ALDi(sent) | |
st.write(ALDi_score) | |
with tab2: | |
file = st.file_uploader("Upload a file", type=["txt"]) | |
if file is not None: | |
df = pd.read_csv(file, sep="\t", header=None) | |
df.columns = ["Sentence"] | |
df = pd.concat([df, df, df]) | |
df = pd.concat([df, df, df]) | |
df = pd.concat([df, df, df]) | |
df.reset_index(drop=True, inplace=True) | |
# TODO: Run the model | |
df["ALDi"] = df["Sentence"].apply(lambda s: compute_ALDi(s)) | |
# A horizontal rule | |
st.markdown("""---""") | |
chart = ( | |
alt.Chart(df.reset_index()) | |
.mark_area(color="violet", opacity=0.5) | |
.encode( | |
x=X(field="index", title="Sentence Index"), | |
y=Y("ALDi", scale=Scale(domain=[0, 1])) | |
) | |
) | |
st.altair_chart(chart.interactive(), use_container_width=True) | |
col1, col2 = st.columns([4, 1]) | |
with col1: | |
# Display the output | |
st.table( | |
df, | |
) | |
with col2: | |
# Add a download button | |
csv = convert_df(df) | |
st.download_button( | |
label=":file_folder: Download predictions as CSV", | |
data=csv, | |
file_name="ALDi_scores.csv", | |
mime="text/csv", | |
) | |