NLP工具——Gensim 模型及词向量文件的保存与加载

1、Gensim

官网: gensim: Topic modelling for humans
Gensim是一款开源的第三方Python工具包,用于从原始的非结构化的文本中,无监督地学习到文本隐层的主题向量表达。支持包括TF-IDF, LSA, LDA, Word2Vec在内的多种主题模型算法,支持分布式训练,提供了相似度计算、信息检索等一些常用的API接口。

上述算法是无监督的,意味着不需要人工输入,只需要一个纯文本语料库。

特点

  • 内存独立性:任务时候都不需要整个训练语料库全部在RAM中(可以处理大型的WEB级语料库)
  • 内存共享:经过训练的模型可以保存到硬盘并通过mmap加载回来。多个进程可以共享相同的数据,从而减少RAM占用空间。
  • 包含几种流行的向量空间算法的实现,如Word2Vec, Doc2Vec, FastText, TF-IDF,潜在语义分析(LSI, LSA等),LDA等。
  • 几种流程的数据格式的I/O 包装器和读取器。
  • 对文档进行文本语义的相似性查询。

设计目标

  • 简单的接口和API
  • 内存独立性,所有中间步骤和算法以流式方式运行,一次访问一个文档。

2、保存与加载

注意区分:保存与加载模型,还是保存与加载词向量文件

  • 模型的保存与加载:保留了模型训练的所有状态信息,如权重文件,二叉树和词汇频率等,加载后可以进行再/追加训练
  • 词向量文件的保存与加载:丢弃了模型训练的状态信息,加载后不可以进行再/追加训练

具体的API可参考:gensim: API Reference

2.1 模型的保存与加载

保存模型

使用model.save()方法, 以该方式保存的模型可以在读取后进行再训练(追加训练),因为保存了训练的全部信息

from gensim.models import Word2Vec

# 训练Word2Vec向量
model = Word2Vec(texts, size=100, window=5, min_count=1, workers=4) 
# 保存模型
model.save("word2vec.model")

如果需要继续训练,需要完整的Word2Vec对象状态,由save()存储,而不仅仅是KeyedVectors

加载模型

使用load方式加载模型,可以进行再训练

from gensim.models import Word2Vec

model = Word2Vec.load("word2vec.model")
model.train([["hello", "world"]], total_examples=1, epochs=1)

训练后的词向量可以使用model.wv保存在一个KeyedVectors实例中,如下:

vector = model.wv['computer'] # numpy vector of a word

如果已经完成模型的训练(即不再进行模型的更新,仅仅是查询),则可切换到KeyedVectors实例:

word_vectors = model.wv
del model

2.2 词向量文件的加载与保存

保存训练好的词向量文件

保存
  1. 使用mdoel.wv.saveKededVectors实例的形式保存词向量文件,以该方式保存的模型丢失了完整的模型状态,无法再训练,保存的对象更小更快。
    model.wv.save("model.wv")
    
  2. 使用wv.save_word2vec_format保存词向量文件(之前是model.save_word2vec_format(),已弃用)
    model.wv.save_word2vec_format("model.bin", binary=True)
    
加载
  1. 使用KeyedVectors.load加载词向量文件,保存在KeyedVectors实例中(适用于不需要完整的模型状态,不再进行训练)
    from gensim.models import KeyedVectors
    wv = KeyedVectors.load("model.wv", mmap='r')
    vector = wv['computer'] # numpy vector of a word
    
  2. word2vec C format加载词向量,保存在KeyedVectors实例中
    使用KeyedVector.load_word2vec_format()可以加载两种格式的词向量文件:C 文本格式C bin格式(二进制)
    from gensim.models import KeyedVectors
    wv_from_text = KeyedVectors.load_word2vec_format("model_kv_c", binary=False) # C text format
    wv_from_bin = KeyedVectors.load_word2vec_format("model_kv.bin", binary=True) # C bin format
    

由于权重文件,二叉树和词汇频率的缺失,无法从C格式加载的向量继续训练。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值