import streamlit as st import pandas as pd import pickle import requests import base64 #===config=== st.set_page_config( page_title="ETDs Tagging", page_icon="", layout="wide" ) st.header("Tagging Categories") st.subheader('Put your file here...') #========unique id======== @st.cache_resource(ttl=3600) def create_list(): l = [1, 2, 3] return l l = create_list() first_list_value = l[0] l[0] = first_list_value + 1 uID = str(l[0]) @st.cache_data(ttl=3600) def get_ext(uploaded_file): extype = uID+uploaded_file.name return extype def read_tf(url): response = requests.get(url) open("temp.pkl", "wb").write(response.content) with open("temp.pkl", "rb") as f: preprocessing = pickle.load(f) return preprocessing svm_classifier = read_model("model2.pkl") preprocessing = read_tf("preprocessing.pkl") # Function to predict the category for a given abstract def predict_category(abstract): # Preprocess the abstract abstract_preprocessed = preprocessing.transform([abstract]) # Make prediction prediction = svm_classifier.predict(abstract_preprocessed) return prediction # Create sidebar #===upload file=== @st.cache_data(ttl=3600) def upload(file): papers = pd.read_csv(uploaded_file) return papers @st.cache_data(ttl=3600) def conv_txt(extype): papers = pd.read_csv(uploaded_file, sep='\t', lineterminator='\r') papers.rename(columns=col_dict, inplace=True) return papers #===Read data=== # uploaded_file = st.file_uploader("Choose a file", type=['csv']) # df = None # Initialize df as None outside the if block # if uploaded_file is not None: # df = pd.read_csv(uploaded_file, encoding='latin-1') # st.dataframe(df) # # Tag the "Abstract" column with the corresponding categories # df['category'] = df['Abstract'].apply(predict_category) # # df['category'] = df['category'].str[2:-2] # st.dataframe(df) # st.sidebar.header("Download Results") # st.sidebar.text("Download the tagged results as a CSV file.") # if df is not None: # csv = df.to_csv(index=False) # b64 = base64.b64encode(csv.encode()).decode() # st.sidebar.download_button( # label="Download", # data=b64, # file_name="results.csv", # mime="text/csv" # ) # else: # st.sidebar.text("Please upload a file first to enable the download button.") uploaded_file = st.file_uploader("Choose a file", type=['csv']) st.sidebar.header("Download Results") st.sidebar.text("Download the tagged results as a CSV file.") if uploaded_file is not None: df = pd.read_csv(uploaded_file, encoding='latin-1') st.dataframe(df) # Tag the "Abstract" column with the corresponding categories df['category'] = df['Abstract'].apply(lambda x: predict_category(x)[0]) st.dataframe(df) # Convert DataFrame to CSV and encode it properly csv = df.to_csv(index=False).encode('utf-8') b64 = base64.b64encode(csv).decode() # Decode the Base64 encoded bytes st.sidebar.download_button( label="Download CSV", data=base64.b64decode(b64), # Decode Base64 to bytes file_name="results.csv", mime="text/csv", key='download-csv' )