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

Is there a way to save a Gensim doc2vec model as plain text (.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)

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

原生 gensim save() 没有 plain-text 选项:它利用 Python 核心功能,如 object-pickling,或编写大型原始 floating-point 数组(到具有额外扩展名 .npy 的辅助文件)。此类文件将包含原始二进制数据——仅指定 .txt 文件名对写入的内容没有任何影响。

你可以将word-vectors保存成one-vector-per-line,plain-text原来使用的格式Googleword2vec.c 通过使用替代方法 save_word2vec_format()。此外,最新版本的 gensim Doc2Vec 向此方法添加了一个可选的 doctag_vec 选项。如果你提供 doctag_vec=True,doctag 向量也将被保存到文件中——它们的 tag-names 通过一个额外的前缀与 word-vectors 区分开来。有关详细信息,请参阅方法的 doc-comment 和 source-code:

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

但是,save_word2vec_format() 的变体没有保存 整个 模型,具有内部 model-weights 和 vocabulary/doctag 信息(如相对频率)这是继续培训所必需的。为此,您必须使用本机 save()。如果您需要文本格式的完整 Doc2Vec 模型,您需要自己编写保存代码,也许使用上述方法作为部分指南。 (此外,我不知道表示整个模型的预先存在的约定 - 因此您必须自己找到或设计它,以满足您在完整模型 later-to-be-loaded 的任何地方的需求。)

关于您的 Doc2Vec 初始化参数:

  • a min_count=0 通常是个坏主意:稀有词会使模型变差,因此默认 min_count=5 通常会改进模型,并且随着语料库变大,甚至更大min_count 值丢弃更多 low-frequency 个词往往有助于提高模型质量(以及加快训练和缩小模型的 RAM/save 大小)

  • a min_alphaalpha 相同通常是个坏主意,意味着 train() 不再执行 linear-decay alpha learning-rate 这是执行 stochastic-gradient-descent 模型优化的常用且有效的方式