def calculate_user_top_5(user,all_apps,user_download_list): # ways is to calculate all_apps similarity with the user_download_list app_similarity={} for app in all_apps: if app in user_download_list: continue else: #calculate the app similarity with the user download lists similarity = Helper.cosine_similarity([app],user_download_list) if app_similarity.has_key(app): app_similarity[app] = app_similarity[app] + similarity else: app_similarity[app] = similarity #get the top 5 top_five_apps=[] sorted_apps =sorted(app_similarity.items(),key=operator.itemgetter(1),reverse=True) i=0 while i<5: #print("top 10 apps "+sorted_apps[i][0]) ## uncommnet for test one app top 10 top_five_apps.append(sorted_apps[i][0]) i+=1 DataService.update_user_info({'user_id':user},{'$set':{"top_5_app":top_five_apps}})
def calculate_app_top_10(app,user_download_history): #get app with all the lists similarity app_similarity ={} for apps in user_download_history: similarity = Helper.cosine_similarity([app],apps) for listapp in apps: if listapp is app: continue elif app_similarity.has_key(listapp): app_similarity[listapp] = app_similarity[listapp] + similarity else: app_similarity[listapp] = similarity if not app_similarity.has_key(app): return #remove itself #app_similarity.pop(app) #calculate top10 reverse= true means from bigger to smaller #items() and operator.itemgetter(1) means get list of tuples with key-value pair sorted_apps =sorted(app_similarity.items(),key=operator.itemgetter(1),reverse=True) top_ten_apps=[] i=0 while i<10: #print("top 10 apps "+sorted_apps[i][0]) ## uncommnet for test one app top 10 top_ten_apps.append(sorted_apps[i][0]) i+=1