test-streamlit / app.py
rushankg's picture
Update app.py
ba18f11
raw
history blame
2.28 kB
import streamlit as st
import pickle
import pandas as pd
import torch
import numpy as np
cosine_scores = pickle.load(open('cosine_scores.pkl','rb'))
coursedf = pd.read_pickle('course_df.pkl') # course_df uses titles to generate course recommendations
course_df_new = pd.read_pickle('course_df_new.pkl') #course_df_new makes recommendations using the entire description
course_title_list = [i + ": " + j for i, j in zip(coursedf['ref'].to_list(), coursedf['title'].to_list())]
def get_random_course():
row=coursedf.sample(1)
return row['ref'], row['title']
def recommend(index):
pairs = {}
for i in range(len(coursedf)):
pairs[coursedf.iloc[i,1]]=cosine_scores[index][i]
sorttemp = sorted(pairs.items(), key=lambda x:x[1], reverse=True)
sorted_final = dict(sorttemp[1:31])
return list(sorted_final.keys())
st.set_page_config(page_title='DiscoverCourses', page_icon=':book:')
container = st.container()
container.title('DiscoverCourses')
selected_course = container.selectbox('Pick a course',course_title_list)
if container.button('Recommend by title'):
output=recommend(np.where((coursedf['ref']+": "+coursedf['title']) == selected_course)[0][0])
for result in output:
index=np.where(coursedf['title'] == result)[0][0]
course_id=coursedf.iloc[index,0]
st.subheader(course_id+": "+result)
st.write(course_df_new.iloc[index,3]) #Using the new coursedf because it has proper descriptions for each course
link = "[ExploreCourses](https://explorecourses.stanford.edu/search?q="+course_id+"+"+result+")"
st.markdown(link, unsafe_allow_html=True)
st.divider()
if container.button('Recommend by description'):
index_new=np.where((coursedf['ref']+": "+coursedf['title']) == selected_course)[0][0]
rec_list=course_df_new.iloc[index_new,2]
for result in rec_list:
course_id=coursedf.iloc[index_new,0]
st.subheader(course_id+": "+result)
st.write(course_df_new.iloc[index_new,3]) #Using the new coursedf because it has proper descriptions for each course
link = "[ExploreCourses](https://explorecourses.stanford.edu/search?q="+course_id+"+"+result+")"
st.markdown(link, unsafe_allow_html=True)
st.divider()