Spaces:
Sleeping
Sleeping
File size: 1,043 Bytes
d823dd2 |
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 |
from fastapi import FastAPI, Body
import pickle
with open('preprocessed_data.pkl', 'rb') as f:
tfidf_matrix, cosine_sim_tfidf, df, indices = pickle.load(f)
app = FastAPI()
@app.post("/recommendations")
def recommend(course_data: dict = Body(...)):
idx = indices.get(course_data["title"])
# Handle cases where the course title is not found
if idx is None:
return {"message": "Course not found."}
# Get the pairwise similarity scores of all courses with that course
sim_scores = list(enumerate(cosine_sim_tfidf[idx]))
# Sort the courses based on the similarity scores
sim_scores = sorted(sim_scores, key=lambda x: x[1], reverse=True)
# Get the scores of the 10 most similar courses
sim_scores = sim_scores[1:11]
# Get the course indices
course_indices = [i[0] for i in sim_scores]
recommendations = df.iloc[course_indices][['CourseID', 'Title']].to_dict(orient='records')
return recommendations
if __name__ == "__main__":
import uvicorn
uvicorn.run("recommender:app", host="0.0.0.0", port=3000) |