Spaces:
Sleeping
Sleeping
File size: 2,283 Bytes
17d7d2e efda6d0 8970242 17d7d2e bf3fe21 17d7d2e 1303ac0 17d7d2e c077474 17d7d2e 56a13a2 17d7d2e ba18f11 b5b6069 17d7d2e b5b6069 bd80b62 b5b6069 7cdbd6f 73a25a9 011e348 73a25a9 1907c60 b5b6069 9cc277c f68a5ef bf3fe21 b5b6069 bf3fe21 b5b6069 bf3fe21 b5b6069 bf3fe21 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
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() |