【问题标题】:Gensim 3.8.0 to Gensim 4.0.0Gensim 3.8.0 到 Gensim 4.0.0
【发布时间】:2021-06-26 07:25:35
【问题描述】:

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

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 中删除。 然后我使用了以下代码:

model = KeyedVectors.load_word2vec_format(wv_path, binary= False)
words = model.vocab.keys()
word2vec = {word:model[word]%EMBEDDING_DIM for word in words}

并得到以下错误:

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 中使用预训练模型并返回字典?

【问题讨论】:

    标签: python nlp gensim word2vec word-embedding


    【解决方案1】:

    在 gensim 4.0.0 上,您需要使用模型的 KeyedVector 中的 key_to_index 方法,这将返回一个带有模型上所有单词 -keys- 的 dict_keys 对象,因此您仍然可以遍历你所有的词汇:)。

    您的代码现在应该是这样的:

    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}
    

    【讨论】:

      【解决方案2】:

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

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

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

          words = list(model.wv.index_to_key)
      

      【讨论】:

        【解决方案3】:

        迁移说明解释了主要变化以及如何调整您的代码:

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

        根据那里的指导,仅获取单词列表,因为您的 model 变量已经是 KeyedVectors 的实例,您可以使用:

        model.index_to_key
        

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

        (另外:我无法想象您的%EMBEDDING_DIM 正在做任何有用的事情。为什么您要使用维度的整数计数来执行元素方式的% 模运算,针对通常很小的单个维度浮动-点数?它通常是无害的,因为EMBEDDING_DIM 通常会比单个值大得多,但它没有任何用处。)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-07-21
          • 1970-01-01
          • 1970-01-01
          • 2018-02-20
          • 1970-01-01
          • 2021-10-05
          相关资源
          最近更新 更多