【问题标题】:Is there a way to save a Gensim doc2vec model as plain text (.txt)?有没有办法将 Gensim doc2vec 模型保存为纯文本 (.txt)?
【发布时间】:2018-02-26 17:37:19
【问题描述】:

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

我尝试了以下方法:

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)

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

【问题讨论】:

    标签: python gensim doc2vec


    【解决方案1】:

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

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

    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/保存大小)

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-31
    • 2017-05-27
    • 1970-01-01
    • 2017-12-24
    • 2019-07-27
    • 2012-03-09
    • 1970-01-01
    相关资源
    最近更新 更多