Python 如何将gensim创建的fasttext模型导出到二进制文件?
我正在尝试将gensim创建的fasttext模型导出到一个二进制文件中。但这些文件不清楚如何实现这一目标。 到目前为止我所做的:Python 如何将gensim创建的fasttext模型导出到二进制文件?,python,nlp,gensim,fasttext,Python,Nlp,Gensim,Fasttext,我正在尝试将gensim创建的fasttext模型导出到一个二进制文件中。但这些文件不清楚如何实现这一目标。 到目前为止我所做的: model.wv.save_word2vec_format('model.bin') 但这似乎不是最好的解决方案。因为稍后我想使用以下命令加载模型: fasttext.load_facebook_model('model.bin') 我进入一个无限循环。加载由model.save('fasttext.model)创建的fasttext.model函数时,只需30
model.wv.save_word2vec_format('model.bin')
但这似乎不是最好的解决方案。因为稍后我想使用以下命令加载模型:
fasttext.load_facebook_model('model.bin')
我进入一个无限循环。加载由
model.save('fasttext.model)
创建的fasttext.model
函数时,只需30秒左右即可完成。使用.save\u word2vec\u format()。它不会保存有关完整FastText模型的独特内容。这些文件将使用匹配的.load\u word2vec\u format()
重新加载
.load\u facebook\u format()
方法以facebook原始(非Python)FastText代码版本保存的格式加载文件。(这种方法的名称是相当错误的,因为“facebook”可能意味着除特定数据格式之外的许多不同的东西。)Gensim没有一种匹配的方法来保存到相同的格式——尽管它可能不太难实现,并且支持这种导出选项是有意义的
Gensim的模型通常实现Gensim native.save()
和.load()
选项,它们混合使用Python“pickle”序列化和原始大数组文件。如果要保存完整的模型状态,以便稍后重新加载回Gensim,这些是您的最佳选项
(其他FastText实现无法加载此类文件。)
将保存的模型移动到新位置时,请确保将此.save()
编写的多个相关文件(所有文件都具有相同的用户提供的前缀)保存在一起
更新(2020年5月):最新版本的gensim
,如3.8.3及更高版本,包括一个新的FastText.save\u facebook\u model()
保存为原始Facebook FastTExt二进制格式的方法。请阅读:您是否尝试了model.save?@Anakin87您无法使用model.save
方法将模型保存为.bin
文件。谢谢您的解释。那么,如果我想使我的模型文件尽可能轻,并摆脱可训练的重量,我该怎么办呢?目前还没有一个内置选项支持这一点(尽管如果有匹配的.save\u facebook\u format()
它将符合要求)。在执行.save()
之前,您可以尝试将一些完整模型不再需要的属性置零,但这可能会导致模型无法完成某些仍应完成的操作,或者在重新加载时出错(因此请仔细试验)。丢弃model.trainables.syn1neg
可能会起作用并带来最大的节约-不确定是否可以丢弃trainables
的其他部分。我们不能将模型保存为pickle文件并在需要时加载它吗?对于大小超过几GB的模型,pickle会中断-这是很常见的。而.save()
保存的独立阵列将更快/更高效地加载,并提供只读内存映射加载选项,这在某些多进程部署场景中可以节省内存。但是你可以在小模型上试试!另外:请注意我在答案底部的更新:最近gensim
添加了一个FastText.save\u facebook\u model()
选项。我正在尝试使用save\u facebook\u模型,但出现了一个错误。我在gensims网页中找不到文档。你知道在哪里可以找到它吗?