Recommendation / recommender.py
Anwar11234
first commit
d823dd2
raw
history blame
1.04 kB
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)