如何将 gensim 创建的 fasttext 模型导出到二进制文件?
How to export a fasttext model created by gensim, to a binary file?
我正在尝试将 gensim 创建的 fasttext 模型导出到二进制文件。但是文档不清楚如何实现这一点。
到目前为止我做了什么:
model.wv.save_word2vec_format('model.bin')
但这似乎不是最佳解决方案。因为稍后我想使用 :
加载模型
fasttext.load_facebook_model('model.bin')
我进入了一个无限循环。在加载由 model.save('fasttext.model)
函数创建的 fasttext.model
时,它会在大约 30 秒内完成。
使用 .save_word2vec_format()
仅将全词向量保存为 Google 的原始 word2vec.c
版本使用的简单格式。它不会保存有关完整 FastText 模型的独特信息。此类文件将使用匹配的 .load_word2vec_format()
.
重新加载
.load_facebook_format()
方法以 Facebook 原始(非 Python)FastText 代码版本保存的格式加载文件。 (这个方法的名字很容易被误导,因为 'facebook' 可能意味着除了特定数据格式之外的许多不同的东西。)Gensim 没有匹配的方法来保存到这种相同的格式 - 尽管它可能不会'实施起来非常困难,并且支持此导出选项具有对称意义。
Gensim 的模型通常实现 gensim-native .save()
和 .load()
选项,它们混合使用 Python 'pickle' 序列化和原始大数组文件。如果您想保存完整的模型状态,这些是您的最佳选择,以便稍后重新加载回 Gensim。
(其他 FastText 实现无法加载此类文件。)
将保存的模型移动到新位置时,请务必将此 .save()
写入的多个相关文件(都具有相同的用户提供的前缀)放在一起。
更新(2020 年 5 月): gensim
的最新版本(例如 3.8.3 及更高版本)包含一个新贡献的 FastText.save_facebook_model()
方法,该方法保存到原始 Facebook FastTExt 二进制格式。
我正在尝试将 gensim 创建的 fasttext 模型导出到二进制文件。但是文档不清楚如何实现这一点。 到目前为止我做了什么:
model.wv.save_word2vec_format('model.bin')
但这似乎不是最佳解决方案。因为稍后我想使用 :
加载模型fasttext.load_facebook_model('model.bin')
我进入了一个无限循环。在加载由 model.save('fasttext.model)
函数创建的 fasttext.model
时,它会在大约 30 秒内完成。
使用 .save_word2vec_format()
仅将全词向量保存为 Google 的原始 word2vec.c
版本使用的简单格式。它不会保存有关完整 FastText 模型的独特信息。此类文件将使用匹配的 .load_word2vec_format()
.
.load_facebook_format()
方法以 Facebook 原始(非 Python)FastText 代码版本保存的格式加载文件。 (这个方法的名字很容易被误导,因为 'facebook' 可能意味着除了特定数据格式之外的许多不同的东西。)Gensim 没有匹配的方法来保存到这种相同的格式 - 尽管它可能不会'实施起来非常困难,并且支持此导出选项具有对称意义。
Gensim 的模型通常实现 gensim-native .save()
和 .load()
选项,它们混合使用 Python 'pickle' 序列化和原始大数组文件。如果您想保存完整的模型状态,这些是您的最佳选择,以便稍后重新加载回 Gensim。
(其他 FastText 实现无法加载此类文件。)
将保存的模型移动到新位置时,请务必将此 .save()
写入的多个相关文件(都具有相同的用户提供的前缀)放在一起。
更新(2020 年 5 月): gensim
的最新版本(例如 3.8.3 及更高版本)包含一个新贡献的 FastText.save_facebook_model()
方法,该方法保存到原始 Facebook FastTExt 二进制格式。