Esempio n. 1
0
class LOPQRetriever(BaseRetriever):

    def __init__(self,name,approximator):
        super(LOPQRetriever, self).__init__(name=name,approximator=approximator,algorithm="LOPQ")
        self.approximate = True
        self.name = name
        self.loaded_entries = {}
        self.entries = []
        self.support_batching = False
        self.approximator = approximator
        self.approximator.load()
        self.searcher = LOPQSearcher(model=self.approximator.model)

    def load_index(self,numpy_matrix=None,entries=None):
        codes = []
        ids = []
        last_index = len(self.entries)
        for i, e in enumerate(entries):
            codes.append((tuple(e['codes'][0]),tuple(e['codes'][1])))
            ids.append(i+last_index)
            self.entries.append(e)
        self.searcher.add_codes(codes,ids)

    def nearest(self,vector=None,n=12):
        results = []
        pca_vec = self.approximator.get_pca_vector(vector)
        results_indexes, visited = self.searcher.search(pca_vec,quota=n)
        for r in results_indexes:
            results.append(self.entries[r.id])
        return results
Esempio n. 2
0
class LOPQRetriever(object):
    """ Deprecated and soon to be removed """

    def __init__(self, name, approximator):
        self.approximate = True
        self.name = name
        self.loaded_entries = set()
        self.entries = []
        self.support_batching = False
        self.approximator = approximator
        self.approximator.load()
        self.searcher = LOPQSearcher(model=self.approximator.model)

    def add_entries(self, entries, video_id, entry_type):
        codes = []
        ids = []
        last_index = len(self.entries)
        for i, e in enumerate(entries):
            codes.append((tuple(e[1][0]), tuple(e[1][1])))
            ids.append(i + last_index)
            self.entries.append({"id":e[0],"type":entry_type,"video":video_id})
        self.searcher.add_codes(codes, ids)

    def nearest(self, vector=None, n=12):
        results = []
        pca_vec = self.approximator.get_pca_vector(vector)
        results_indexes, visited = self.searcher.search(pca_vec, quota=n)
        for r in results_indexes:
            results.append(self.entries[r.id])
        return results