Example #1
0
    def get_nn_multi_query(self, song_id_list, nn_cf_scores, fanout):
        print "*********************************************************"
        print "              GET NN MULTI QUERY                      "
        print "*********************************************************"
        st = time.time()
        query_dicts = self.get_query_data_multi_query(song_id_list)
        print "INFO: Step 1, Get query data and supervectors:", time.time(
        ) - st

        st = time.time()
        collab_song_infos = self.get_collab_info_multi_query(song_id_list)
        print "INFO: Step 2, Get collaborative filtering results:", time.time(
        ) - st

        total_nn_dict = {}
        total_id_list = []
        out_nn_cf_scores = []
        st = time.time()
        cf_data_query_time = 0
        dist_comp_time = 0

        for input_song in nn_cf_scores:
            input_song_id = input_song[0]
            input_song_cf_score = input_song[1]

            if len(collab_song_infos[input_song_id].keys()) > 0:
                t1 = time.time()
                close_songs_dict = pardora_db_sqlite.get_cf_songs_data(
                    collab_song_infos[input_song_id], self.cursor)
                cf_data_query_time += time.time() - t1

                t2 = time.time()
                nn_dict = self.get_nn_dict(query_dicts[input_song_id],\
                                           close_songs_dict, fanout,\
                                           parent_cf_score=input_song_cf_score)
                dist_comp_time += time.time() - t2

            else:
                print "No collaborative filtering neighbors found."
                nn_dict = None

            total_nn_dict[input_song_id] = nn_dict
            for k in nn_dict.keys():
                total_id_list.append(k)
                out_nn_cf_scores.append(
                    (k, collab_song_infos[input_song_id][k]))

        print "INFO: Step 3, Compute closest songs:", time.time() - st,\
              ";\n \tCF data gather (", cf_data_query_time, "), Dist comp (", dist_comp_time, ")"
        return total_nn_dict, out_nn_cf_scores, total_id_list
Example #2
0
    def get_nn_one_query(self, song_id_list, fanout):
        print "*********************************************************"
        print "              GET NN COMPOUND QUERY                      "
        print "*********************************************************"
        st = time.time()
        query_dict = self.get_query_data(song_id_list)
        print "INFO: Step 1, Get query data and supervectors:", time.time(
        ) - st

        st = time.time()
        collab_song_info = self.get_collab_info(song_id_list)
        print "INFO: Step 2, Get collaborative filtering results:", time.time(
        ) - st

        st = time.time()
        cf_data_query_time = 0
        dist_comp_time = 0

        nn_cf_scores = []

        if len(collab_song_info.keys()) > 0:
            t1 = time.time()
            close_songs_dict = pardora_db_sqlite.get_cf_songs_data(
                collab_song_info, self.cursor)
            cf_data_query_time += time.time() - t1

            t2 = time.time()
            nn_dict = self.get_nn_dict(query_dict, close_songs_dict, fanout)
            dist_comp_time += time.time() - t2

            # keep track of cf score of the neighbors separately
            for n in nn_dict.keys():
                nn_cf_scores.append((n, collab_song_info[n]))

        else:
            print "No collaborative filtering neighbors found."
            nn_dict = None


        print "INFO: Step 3, Compute closest songs:", time.time() - st,\
              ";\n \tCF data gather (", cf_data_query_time, "), Dist comp (", dist_comp_time, ")"
        return nn_dict, nn_cf_scores