Exemple #1
0

#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)
    
Exemple #2
0
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()}
Exemple #3
0
         "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)]

Exemple #4
0
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