首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gensim 3.8.0到Gensim 4.0.0

Gensim 3.8.0到Gensim 4.0.0
EN

Stack Overflow用户
提问于 2021-03-30 17:28:12
回答 3查看 14K关注 0票数 12

我已经使用Gensim 3.8.0训练了一个Word2Vec模型。后来,我尝试在GCP上使用Gensim 4.0.o来使用预训练模型。我使用了以下代码:

代码语言:javascript
复制
model = KeyedVectors.load_word2vec_format(wv_path, binary= False)
words = model.wv.vocab.keys()
self.word2vec = {word:model.wv[word]%EMBEDDING_DIM for word in words}

我得到的错误是"model.mv“已经从Gensim 4.0.0中删除了。然后我使用了以下代码:

代码语言:javascript
复制
model = KeyedVectors.load_word2vec_format(wv_path, binary= False)
words = model.vocab.keys()
word2vec = {word:model[word]%EMBEDDING_DIM for word in words}

并得到以下错误:

代码语言:javascript
复制
AttributeError: The vocab attribute was removed from KeyedVector in Gensim 4.0.0.
Use KeyedVector's .key_to_index dict, .index_to_key list, and methods .get_vecattr(key, attr) and .set_vecattr(key, attr, new_val) instead.
See https://github.com/RaRe-Technologies/gensim/wiki/Migrating-from-Gensim-3.x-to-4

谁能建议我如何在Gensim 4.0.0中使用预训练模型并返回字典?

EN

回答 3

Stack Overflow用户

发布于 2021-05-09 14:08:39

从Gensim 3.x迁移到4所引起的变化都出现在github链接中:

https://github.com/RaRe-Technologies/gensim/wiki/Migrating-from-Gensim-3.x-to-4

对于上述问题,适用于我的解决方案:

代码语言:javascript
复制
    words = list(model.wv.index_to_key)
票数 13
EN

Stack Overflow用户

发布于 2021-03-31 08:28:51

迁移说明解释了主要的更改以及如何调整代码:

https://github.com/RaRe-Technologies/gensim/wiki/Migrating-from-Gensim-3.x-to-4

根据这里的指导,由于您的model变量已经是KeyedVectors的一个实例,因此要获得单词列表,您可以使用:

代码语言:javascript
复制
model.index_to_key

您的代码不需要字典,但在model.key_to_index中有一个稍有不同的词到索引位置字典。但是,您可以像以前一样使用model[key]来获取单个向量。

(另外:我无法想象您的%EMBEDDING_DIM会做任何有用的事情。为什么要使用维度的整数计数对通常是小浮点数的单个维度执行元素级%模运算?它通常是无害的,因为EMBEDDING_DIM通常会远远大于单个值,但它没有任何好的用途。)

票数 5
EN

Stack Overflow用户

发布于 2021-08-25 22:58:24

在gensim 4.0.0上,您将需要使用模型的KeyedVector中的key_to_index方法,该方法将返回一个包含模型上所有单词的dict_keys对象,以便您仍然可以迭代所有的词汇表:)。

你的代码应该是这样的:

代码语言:javascript
复制
model = KeyedVectors.load_word2vec_format(wv_path, binary= False)
words = list(model.wv.key_to_index.keys())
self.word2vec = {word:model.wv[word]%EMBEDDING_DIM for word in words}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66868221

复制
相关文章

相似问题

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