gensim - 如何在原生 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() 的倒数。
解决方案
你可能不会在 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
推荐阅读
- c++ - 如何在 C++ 类中将数据从 char 数组发送到 istream
- node.js - 返回托管在我的服务器上的图像的路径以在前端显示它
- javascript - 自动居中和自动缩放我的谷歌 API 地图
- html - 我如何使中心电子邮件内容可见
- python-3.x - 当我尝试通过 python 脚本执行 shell 命令时,出现错误“找不到模块”
- spring - 在aspectj spring boot中的切点中添加常量
- python - 在 FLASK 中设置环境变量
- c++ - UML 图上的数组表示数组
- python - 传递 IP 地址列表并获取响应以在 python 中搜索特定关键字
- python - 如何创建多维矩阵作为神经网络的输入?