首页 > 解决方案 > 如何在原生 FastText 中加载 Gensim FastText 模型

问题描述

我在 Gensim 中训练了一个 FastText 模型。我想用它来编码我的句子。具体来说,我想使用本机 FastText 中的此功能:

./fasttext print-word-vectors model.bin < queries.txt

如何将模型保存在 Gensim 中,使其成为本机 FastText 可以理解的正确二进制格式?

我在 Python 3.4.3 下使用 FastText 0.1.0 和 Gensim 3.4.0。

本质上,我需要Gensim FastText doc中给出的 load_binary_data() 的倒数。

标签: gensimfasttext

解决方案


你可能不会在 gensim 中找到这样的功能,因为这意味着依赖于内部结构和代码,就像你在 fasttext-python 中看到的那样(它使用pybind直接调用内部 fasttext api)。对外部库有如此巨大的依赖是 gensim 的创建者想要避免的,这就是为什么他们可能不赞成调用 fasttext wrapper 的功能。现在 gensim 只寻求通过自己的内部实现来提供 fasttext 算法。我建议您将python 绑定用于 fasttext

$ git clone https://github.com/facebookresearch/fastText.git
$ cd fastText
$ pip install .

现在使用 fasttext 模型在您的 python 应用程序中运行训练集。

from fastText import train_unsupervised
model = train_unsupervised(input="pathtotextfile", model='skipgram')
model.save_model('model.bin')

这将以 fastText 命令行格式保存模型。所以你现在应该可以运行以下命令了。

$ ./fasttext print-word-vectors model.bin < queries.txt

推荐阅读