首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何加快Gensim Word2vec模型的加载时间?

如何加快Gensim Word2vec模型的加载时间?
EN

Stack Overflow用户
提问于 2017-03-24 04:30:59
回答 3查看 24.5K关注 0票数 24

我正在构建一个聊天机器人,所以我需要使用Word2Vec向量化用户的输入。

我使用的是Google提供的一个有300万字的预训练模型(GoogleNews-vectors negative300)。

因此,我使用Gensim加载模型:

代码语言:javascript
复制
import gensim
model = gensim.models.KeyedVectors.load_word2vec_format('GoogleNews-vectors-negative300.bin', binary=True)

问题是加载模型大约需要2分钟。我不能让用户等那么久。

那么,我可以做些什么来加快加载时间呢?

我考虑将300万个单词及其对应的向量放入一个MongoDB数据库中。这当然会加快速度,但直觉告诉我这不是一个好主意。

EN

回答 3

Stack Overflow用户

发布于 2018-01-24 07:10:54

我真的很喜欢vzhong的嵌入库。https://github.com/vzhong/embeddings

它将词向量存储在SQLite中,这意味着我们不需要加载模型,而只需从DB :D中获取相应的向量

票数 6
EN

Stack Overflow用户

发布于 2017-03-26 08:00:42

每当我使用谷歌新闻数据集时,我都会遇到这个问题。问题是数据集中的单词比你所需要的要多得多。有大量的打字错误等等。我所做的是扫描我正在处理的数据,建立一个字典,比如50k个最常用的单词,用Gensim获取向量并保存字典。加载此词典需要半秒,而不是2分钟。

如果您没有特定的数据集,您可以使用大型数据集中最常见的50或100k个单词,例如来自WMT的news dataset

其他选项是始终保持Gensim运行。您可以对运行Gensim的脚本执行create a FIFO。该脚本就像一个“服务器”,可以读取“客户端”写入的文件,监视向量请求。

我认为最优雅的解决方案是运行一个提供单词嵌入的web服务。以word2vec API为例进行查看。安装后,获取"restaurant“的嵌入非常简单:

代码语言:javascript
复制
curl http://127.0.0.1:5000/word2vec/model?word=restaurant
票数 3
EN

Stack Overflow用户

发布于 2019-07-10 12:38:58

成功方法:

代码语言:javascript
复制
model = Word2Vec.load_word2vec_format('wikipedia-pubmed-and-PMC-w2v.bin',binary=True)
model.init_sims(replace=True)
model.save('bio_word')

稍后加载模型

代码语言:javascript
复制
Word2Vec.load('bio_word',mmap='r')

有关更多信息,请访问:https://groups.google.com/forum/#!topic/gensim/OvWlxJOAsCo

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42986405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档