python - word2vec 模型类 (Python)

标签 python class word2vec

任务

我想为 word2vec 模型创建一个类并调用它,这样过程会更快更高效。

脚本

from docsim import DocSim
from gensim.models.keyedvectors import KeyedVectors

word2vec_model = 'w2vec_wiki_id_case_doc'

model = KeyedVectors.load(word2vec_model, mmap='r')
ds = DocSim(model)

问题

使用我的代码,读取word2vec 模型的过程需要很长时间。我该如何解决这个问题?

最佳答案

有了 gensim,就无法解决模型的初始加载时间问题。您可以使用较小的模型来减少加载时间,但是在您的应用程序初始化时,大型模型文件不可避免地需要几秒钟才能加载。但是,如果您正确设计了您的应用程序,那么这应该是您只需支付一次的成本(当您的程序首次启动时)。

如果在启动时节省那几秒钟真的很重要,您可以考虑从 gensim 的 word2vec 实现切换到 magnitude ,它的初始加载时间不到一秒,并且在许多其他领域提高了速度/可用性(例如,对于许多任务,速度提高比 gensim 快数百到数千倍)。如果您有兴趣了解一下震级背后的背景,可以阅读其作者的学术论文(可在 arXiv 上免费阅读):

Magnitude: A Fast, Efficient Universal Vector Embedding Utility Package

关于python - word2vec 模型类 (Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55038641/

相关文章:

python - 使用 Matplotlib 后端删除 Holoviews 图形上的字母标签

python - 尝试进行 POST 时未提交文件。 Django 休息框架

gensim - 如何将单词和向量手动添加到 Word2vec gensim?

python - Matplotlib:子图的高度相同

python - 如何使用 tkinter 在几何条纹之间制作条纹线?

java - 任何类的实例作为java中方法的输入

c++ - 为什么 C++ 不支持模板(非静态)成员变量?

java - 为什么外部Java类可以访问内部类私有(private)成员?

python - 设置 word2vec - KeyError : "word ' word' not in vocabulary"