Spaces:
Sleeping
Sleeping
File size: 2,498 Bytes
17d7d2e efda6d0 8970242 17d7d2e bf3fe21 17d7d2e 1303ac0 17d7d2e c077474 17d7d2e 56a13a2 17d7d2e 94fc387 2815635 912fc79 ba18f11 2815635 17d7d2e 2815635 912fc79 bd80b62 2815635 7cdbd6f 73a25a9 011e348 73a25a9 1907c60 94fc387 28831ec 9cc277c f68a5ef bf3fe21 2815635 bf3fe21 b5b6069 bf3fe21 94fc387 28831ec 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 56 57 58 59 |
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=':bird:')
st.title('DiscoverCourses')
#st.write('© 2023 Rushank Goyal. All rights reserved.')
selected_course = st.selectbox('Pick a course',course_title_list)
container = st.container()
maincol1, maincol2 = container.columns(2)
if maincol1.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)
with st.expander("See description"):
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.replace(" ","+")+")"
st.markdown(link, unsafe_allow_html=True)
st.divider()
if maincol2.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)
with st.expander("See description"):
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.replace(" ","+")+")"
st.markdown(link, unsafe_allow_html=True)
st.divider() |