File size: 960 Bytes
8cca354
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
from sentence_transformers import SentenceTransformer
import pickle
import numpy as np
import torch
import gradio as gr

model = SentenceTransformer('paraphrase-MiniLM-L6-v2')

with open("dep_course_title_to_content_embed.pickle", "rb") as handle:
    loaded_map = pickle.load(handle)

dep_name_course_name = list(loaded_map.keys())
dep_name = [x for (x,y) in dep_name_course_name]
course_titles = [y for (x,y) in dep_name_course_name]
course_content_embeddings = np.array(list(loaded_map.values()), dtype=np.float32)

cos = torch.nn.CosineSimilarity(dim=1, eps=1e-6)
def give_best_match(query):
    embed = model.encode(query)
    result = cos(torch.from_numpy(course_content_embeddings),torch.from_numpy(embed))
    indices = reversed(np.argsort(result))
    predictions = {course_titles[i] : float(result[i]) for i in indices}
    return predictions

demo = gr.Interface(fn = give_best_match, inputs="text",outputs=gr.Label(num_top_classes=5))
demo.launch()