有没有办法将Gensim doc2vec模型保存为纯文本(.txt)?



到目前为止,我所取得的成就是人无法阅读的模型。我需要将模型保存为纯文本才能与某个软件一起使用,这要求模型是这样的。

我尝试了以下方法:

model = models.doc2vec.Doc2Vec(size=300, min_count=0, alpha=0.025, min_alpha=0.025)
model.train(sentences, total_examples=model.corpus_count, epochs=model.iter)
model.save('mymodel.txt')

但我得到:

Process finished with exit code -1073741571 (0xC00000FD)

我不知道我是否应该传递一个特定的参数。

原生gensimsave()没有纯文本选项:它利用了Python的核心功能,如对象挑剔,或编写大型原始浮点数组(到具有额外扩展名的辅助文件.npy)。此类文件将包含原始二进制数据 - 仅指定.txt文件名对写入的内容没有任何影响。

您可以使用备用方法save_word2vec_format()将单词向量保存为原始 Googleword2vec.c使用的每行一个向量纯文本格式。此外,最新版本的 gensimDoc2Vec为此方法添加一个可选的doctag_vec选项。如果您提供doctag_vec=True,doctag 向量也将保存到文件中——它们的标签名称与词向量通过额外的前缀区分开来。有关详细信息,请参阅该方法的文档注释和源代码:

https://github.com/RaRe-Technologies/gensim/blob/b000b4fa71386235ffa2b80a62bcccf73fa42c6e/gensim/models/doc2vec.py#L635

但是,没有任何save_word2vec_format()变体可以保存整个模型,其中包含继续训练所需的内部模型权重和词汇/文档标签信息(如相对频率)。为此,您必须使用 本机save().如果您需要文本格式的完整Doc2Vec模型,则需要自己编写保存代码,也许使用上述方法作为部分指南。(此外,我不知道表示整个模型的预先存在的约定 - 因此您必须自己找到或设计它,以便在以后加载完整模型的任何地方满足您的需求。

另外,关于您的Doc2Vec初始化参数:

  • min_count=0通常是一个坏主意:生僻词会使模型变得更糟,因此默认值min_count=5通常会改善模型,并且随着语料库变大,甚至更大的min_count值丢弃更多低频词往往有助于提高模型质量(以及加快训练速度和缩小模型的 RAM/保存大小)

  • alpha相同的min_alpha通常是一个坏主意,这意味着train()不再执行alpha学习率的线性衰减,这是执行模型随机梯度下降优化的常用和有效方式

最新更新