File size: 1,554 Bytes
17d7d2e
 
 
efda6d0
8970242
73a25a9
17d7d2e
 
9b3d9a6
17d7d2e
1303ac0
17d7d2e
 
c077474
17d7d2e
 
56a13a2
17d7d2e
 
 
 
 
 
 
 
 
 
 
 
 
 
bd80b62
 
 
7cdbd6f
73a25a9
011e348
73a25a9
1907c60
f68a5ef
 
 
1907c60
 
 
 
 
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
import streamlit as st
import pickle
import pandas as pd
import torch
import numpy as np
from streamlit_card import card

cosine_scores = pickle.load(open('cosine_scores.pkl','rb'))
coursedf = pd.read_pickle('course_df.pkl') 

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:')
st.title('DiscoverCourses')

selected_course = st.selectbox('Please select a course',course_title_list)

if st.button('I want more like this!'):
    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.text(coursedf.iloc[index,2]) # Course description
        st.write("[Explore Courses](https://explorecourses.stanford.edu/search?q="+course_id+": "+result+")")
        st.divider()
        # card(
        #     title=course_id,
        #     text=result,
        #     url="https://explorecourses.stanford.edu/search?q="+course_id+": "+result
        # )