gensim bm25模型保存与加载

gensim bm25模型保存与加载


20210719修改:
python version:3.6.12
gensim version:3.8.3


使用bm25模型计算相似度的时候,发现用gensim.summarization.bm25.BM25构建的模型,没有像TfidfModel或者LsiModel那样直接的model.save()方法保存模型,如果每次都重新训练又比较花时间,百度了一下没有直接的教程资源,所以写在这里记录备查。

主要使用的是pickle包,关于pickle的详情不在这里介绍。

通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储;
通过pickle模块的反序列化操作,我们能够从文件中创建上一次程序保存的对象。

pickle可以保存python object
刚好gensim.summarization.bm25.BM25构建的模型是一个object
<gensim.summarization.bm25.BM25 object at 0x7fc8ce935240>
<class ‘gensim.summarization.bm25.BM25’>
所以使用pickle进行保存

1. 模型保存

from gensim.summarization import bm25
import pickle

def bm25save(obj, fpath):
    f = open(fpath, 'wb')
    pickle.dump(obj, f)
    f.close()
    
if __name__ == '__main__':
	# ...
	bm25Model, docid2index = build_bm25(corpus)
    bm25save(bm25Model, 'yourPath/testbm25.pkl')

2. 模型加载

from gensim.summarization import bm25
import pickle

def bm25load(fpath):
    f = open(fpath, 'rb')
    bm25Model = pickle.load(f)
    f.close()
    return bm25Model
    
if __name__ == '__main__':
    bm25Model = bm25load('yourPath/testbm25.pkl')
    
    import jieba
    s1 = '我爱北京天安门'
    s2 = '我爱上了,北京的天安门'

    token1 = ' '.join(list(jieba.cut(s1)))
    token2 = ' '.join(list(jieba.cut(s2)))

    sim = cal_bm25_sim(bm25Modelnew, token1, token2)
    print(sim)
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值