#let just index the corpus texts=['如果 也 没有 的话 。 这个 确实 没有 办法 了 。 我 个人 建议您 重装 一遍 这个 软件 看看 是否 还是 一样 卸载 程序 里 也 没有 呢', '我能 直接 删掉 这些 文件 吗 ?', '不 建议 呢 。 因为 不 确定 这些 文件 中 是否 有 其他软件 的 文件 呢', '好 的 , 使用 看看 会断 么', '它 只是 有时 自动 掉 , 以后 看看 怎么样', '这个 是 您 无线 驱动 : http : / / driverdl . lenovo . com . cn / lenovo / driverfilesuploadfloder / 32228 / wlan _ win8 . 1 . exe', '要是 问题 还是 出现 您 可以 安装 这个 试试', '10 几个 版本 都 试过 了 么'] corpus=[{'id': 'doc_%i' % num, 'tokens': text.split()} for num, text in enumerate(texts)] server.index(corpus) server.delete(['doc_5']) # try to del one doc server.commit() texts=['如果 也 没有 的话 。 这个 确实 没有 办法 了 。 我 个人 建议您 重装 一遍 这个 软件 看看 是否 还是 一样 卸载 程序 里 也 没有 呢', '我能 直接 删掉 这些 文件 吗 ?', '不 建议 呢 。 因为 不 确定 这些 文件 中 是否 有 其他软件 的 文件 呢', '好 的 , 使用 看看 会断 么'] corpus=[{'id': 'eval_%i' % num, 'tokens': text.split()} for num, text in enumerate(texts)] #and find_similar for each documents, which should return doc_0, doc_1 doc_2. for s in corpus: print server.find_similar(s)
class SimService(object): def __init__(self, path, preprocess, deaccent=True, lowercase=True, stemmer=None, stopwords=None): self.service = SessionServer(path) self.deaccent = deaccent self.lowercase = lowercase self.preprocess = preprocess self.stemmer = stemmer self.stopwords = stopwords def find_similar(self, data, min_score, max_results): if isinstance(data, basestring): doc = data.strip() if ' ' in doc: doc = {'tokens': self.preprocess(data, deacc=self.deaccent, lowercase=self.lowercase, errors='ignore', stemmer=self.stemmer, stopwords=self.stopwords)} try: return {'status': 'OK', 'response': self.service.find_similar(doc, min_score=min_score, max_results=max_results)} except ValueError: return {'status': 'NOTFOUND', 'response':[]} else: result = {} for doc in data: try: result[doc] = (self.service.find_similar( doc, min_score=min_score, max_results=max_results)) except ValueError: pass if result: return {'status': 'OK', 'response': result} else: return {'status': 'NOTFOUND', 'response':[]} def _buffer(self, data): i = 0 for d in data: if 'tokens' in d: self.service.buffer([{'id': d['id'], 'tokens': d['tokens']}]) else: self.service.buffer([{'id': d['id'], 'tokens': list(self.preprocess(d['text'], deacc=self.deaccent, lowercase=self.lowercase, errors='ignore', stemmer=self.stemmer, stopwords=self.stopwords))}]) i+=1 return i def train(self, data): self.service.set_autosession(False) self.service.open_session() i = self._buffer(data) self.service.train(method='lsi') logger.info('training complete commit changes') self.service.commit() self.service.set_autosession(True) return {'status': 'OK', 'response':i} def index(self, data): self.service.set_autosession(False) self.service.open_session() i = self._buffer(data) self.service.index() logger.info('indexing complete commit changes') self.service.commit() self.service.set_autosession(True) return {'status': 'OK', 'response':i} def optimize(self): self.service.set_autosession(False) self.service.open_session() self.service.optimize() self.service.commit() self.service.set_autosession(True) return {'status': 'OK', 'response': 'index optimized'} def delete(self, data): self.service.set_autosession(False) self.service.open_session() self.service.delete(data) self.service.commit() self.service.set_autosession(True) return {'status': 'OK', 'response': 'documents deleted'} def status(self): return {'status': 'OK', 'response': self.service.status()} def indexed_documents(self): return {'status': 'OK', 'response': self.service.keys()} def is_indexed(self, doc): return {'status': 'OK', 'response': doc in self.service.keys()}
"The intersection graph of paths in trees", "Graph minors IV Widths of trees and well quasi ordering", "Graph minors A survey"] corpus = [{'id': 'doc_%i' % num, 'tokens': utils.simple_preprocess(text)} for num, text in enumerate(texts)] utils.upload_chunked(server, corpus, chunksize=1000) # send 1k docs at a time service = SessionServer('C:/0_afc_working/0_Doc2Vec/gensim-simserver-master/my_server/') # or wherever logger.info("simberver_local_A: service.train(corpus, method='lsi')" ) service.train(corpus, method='lsi') service.index(corpus) # index the same documents that we trained on... service.delete(['doc_5', 'doc_8']) # supply a list of document ids to be removed from the index service.index(corpus[:3]) # overall index size unchanged (just 3 docs overwritten) print(service.find_similar('doc_0')) #[('doc_0', 1.0000001192092896, None), ('doc_2', 0.11294259130954742, None), ('doc_1', 0.09881371259689331, None), ('doc_3', 0.08786647021770477, None)] #print(service.find_similar('doc_5')) # we deleted doc_5 and doc_8, remember? #ValueError: document 'doc_5' not in index doc = {'tokens': gensim.utils.simple_preprocess('Graph and minors and humans and trees.')} print(service.find_similar(doc, min_score=0.4, max_results=50)) #[('doc_7', 0.7615688443183899, None), ('doc_3', 0.5443614721298218, None)]
corpus = [{'id':link, 'tokens':(content.cleaned_text,)} for link, content in maincontent.iteritems()] corpus[1] server.train(corpus, method='lsi') server.index(corpus) corpus = [{'id':link, 'tokens':utils.simple_preprocess(content.cleaned_text,)} for link, content in maincontent.iteritems()] server.train(corpus, method='lsi') server.index(corpus) originaldoc = {'tokens': utils.simple_preprocess(originaldoc_maincontent.cleaned_text)} result = server.find_similar(originaldoc, min_score=0.5) len(result) result result = server.find_similar(originaldoc, min_score=0.9) result url service.delete(corpus) server.delete(corpus) result = server.find_similar(originaldoc) len(result) result result = server.find_similar(originaldoc, min_score=0.9) result server.delete([c.id for c in corpus]) corpus[1] corpus[1].id corpus[1]['id'] server.delete([c['id'] for c in corpus]) result = server.find_similar(originaldoc, min_score=0.9) result result = server.find_similar(originaldoc) result print url