def nn(model, text, vectors, query, loaded_custom_model, k=5): #$ Added custom model parameter """ Return the nearest neighbour sentences to query text: list of sentences vectors: the corresponding representations for text query: a string to search """ if loaded_custom_model: #$ qf = penseur_utils.encode(model, [query], verbose=False) #$ else: #$ qf = encode(model, [query], verbose=False) qf /= norm(qf) scores = numpy.dot(qf, vectors.T).flatten() sorted_args = numpy.argsort(scores)[::-1] sentences = [text[a] for a in sorted_args[:k]] # print 'QUERY: ' + query #$ # print 'NEAREST: ' #$ sorted_sentences = [] #$ # for i, s in enumerate(sentences): #$ # print s, sorted_args[i] #$ for i in xrange(len(sentences)): #$ sorted_sentences.append(sentences[i]) #$ return sorted_sentences #$
def encode(self, sentences, verbose=False): self.sentences = sentences if self.loaded_custom_model: self.vectors = penseur_utils.encode(self.model, sentences, verbose) else: self.vectors = skipthoughts.encode(self.model, sentences, verbose) return self.vectors
def vector(model, text, vectors, query, loaded_custom_model): #$ if loaded_custom_model: #$ qf = penseur_utils.encode(model, [query], verbose=False) #$ else: #$ qf = encode(model, [query], verbose=False) #$ return qf / norm(qf) #$
def encode_single_sentence(self, text, verbose = False): if self.loaded_custom_model: vec = penseur_utils.encode(self.model, [text], verbose) else: vec = skipthoughts.encode(self.model, [text], verbose) return vec
def encode(self, sentences): self.sentences = sentences if self.loaded_custom_model: self.vectors = penseur_utils.encode(self.model, sentences) else: self.vectors = skipthoughts.encode(self.model, sentences)