def _load_movie_emb(self, movie_emb_path: str, emb_key: str):
     if Config.EMB_DATA_SOURCE == Config.DATA_SOURCE_FILE:
         print("Loading movie embedding from %s ..." % movie_emb_path)
         valid_emb_count = 0
         with open(movie_emb_path) as f:
             for movie_raw_emb_data in f:
                 movie_emb_data = movie_raw_emb_data.split(":")
                 if len(movie_emb_data) == 2:
                     m = self.get_movie_by_id(int(movie_emb_data[0]))
                     if m is None:
                         continue
                     m.emb = Utility.parse_emb_str(movie_emb_data[1])
                     valid_emb_count += 1
         print(
             "Loading movie embedding completed. %d movie embeddings in total."
             % valid_emb_count)
     else:
         print("Loading movie embedding from Redis ...")
         movie_emb_keys = RedisClient.get_instance().keys(
             emb_key + "*")  # type: Set[str]
         valid_emb_count = 0
         for movieEmbKey in movie_emb_keys:
             movie_id = movieEmbKey.split(":")[1]
             m = self.get_movie_by_id(int(movie_id))
             if m is None:
                 continue
             m.emb = Utility.parse_emb_str(
                 RedisClient.get_instance().get(movieEmbKey))
             valid_emb_count += 1
         print(
             "Loading movie embedding completed. %d movie embeddings in total."
             % valid_emb_count)
 def _load_user_emb(self, user_emb_path: str, emb_key: str):
     if Config.EMB_DATA_SOURCE == Config.DATA_SOURCE_FILE:
         print("Loading user embedding from %s ..." % user_emb_path)
         valid_emb_count = 0
         with open(user_emb_path) as f:
             for user_raw_emb_data in f:
                 user_emb_data = user_raw_emb_data.split(":")
                 if len(user_emb_data) == 2:
                     u = self.get_user_by_id(int(user_emb_data[0]))
                     if u is None:
                         continue
                     u.emb = Utility.parse_emb_str(user_emb_data[1])
                     valid_emb_count += 1
         print(
             "Loading user embedding completed. %d user embeddings in total."
             % valid_emb_count)
Example #3
0
def get_rec_list(user_id: int, size: int, model: str):
    user = DataManager.get_instance().get_user_by_id(user_id)
    if user is None:
        return list()
    CANDIDATE_SIZE = 800
    candiadtes = DataManager.get_instance().get_movies(CANDIDATE_SIZE,
                                                       "rating")

    if Config.EMB_DATA_SOURCE == Config.DATA_SOURCE_REDIS:
        user_emb_key = "uEmb:" + str(user_id)
        user_emb = RedisClient.get_instance().get(user_emb_key)
        if user_emb is not None:
            user.set_emb(Utility.parse_emb_str(user_emb))

    ranked_list = ranker(user, candiadtes, model)

    if len(ranked_list) > size:
        return ranked_list[:size]
    return ranked_list