有时我们希望在计算结束后对一条新的文档获取相似度向量。
这时,可以预先在整体计算时,将index、dictionary等数据保存到文件。后续计算时,可以从文件加载之前的计算结果。
gensim主要实例对象都提供了save(filepath)方法,可以直接保存到文件。
如何储存
在#2中的代码结尾追加:
dictionary.save('/tmp/gensim/test.dict')
tfidf_model.save('/tmp/gensim/test.model')
index.save('/tmp/gensim/test.index')
重新执行后,发现/tmp/gensim目录下有:
test.dict
test.model
test.index
test.index.0
值得一提的是,由于我们使用了可迭代计算的gensim.similarities.Similarity
类,并在初始化时,指定首个参数为'/tmp/gensim/test
,其会自动保存结果到文件,并根据索引大小分片(shard)。文件会命名为test.index.0
、test.index.1
、test.index.2
等等。
如何读取
import gensim
dictionary = gensim.corpora.Dictionary.load('/tmp/gensim/test.dict')
model = gensim.models.tfidfmodel.load('/tmp/gensim/test.model')
index = gensim.similarities.Similarity.load('/tmp/gensim/test.index')
读取后,就可以进行新文档的运算:
doc = 'xxx xxx xx xxx'
vec = dictionary.doc2bow(doc.split())
similarity = index[model[vec]]
print(similarity)
网友评论