【问题标题】:Gensim framework: Saving and storing word2vec keyed vectorsGensim 框架:保存和存储 word2vec 键控向量
【发布时间】:2020-01-26 04:26:11
【问题描述】:

我正在使用 word2vec 模型,但在存储和读取它时遇到问题。

import gensim.models.keyedvectors as w2v
from gensim.models import KeyedVectors

word_vectors = w2v.wv
word_vectors.save(filepath + "Vectors.bin")

m = word2vec.KeyedVectors.load_word2vec_format(filepath + "Vectors.bin", binary=True)

我收到以下错误:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 0: invalid start byte

laoding 的工作方式如下:

vectors = KeyedVectors.load(filepath + "Vectors.bin", mmap='r')

但是如果我再打电话

vectors.similar_by_word("cat")

我收到以下错误: 类型错误:** 或 pow() 不支持的操作数类型:'list' 和 'int'

我做错了什么? 如何使用 save_word2vec_format() 函数?

【问题讨论】:

    标签: python gensim word2vec


    【解决方案1】:

    你最初的代码块import gensim.models.keyedvectors as w2vword_vectors = w2v.wv 没有多大意义。

    从字面上看,就是将完整的 Python 代码模块 gensim.models.keyedvectors 分配给变量 w2v。该模块不会有 .wv 属性,所以我不希望 word_vectors = w2v.wv 甚至执行。它肯定不会导致word_vectors 成为一组实际的训练好的词向量,除非你没有显示一堆其他的训练代码。

    您确定问题中的代码代表您实际在做什么吗?

    不过,如果您确实成功地让word_vectors 持有gensimKeyedVectors 对象之一,其中填充了您要保存的词向量,那么您有两个选择:

    • 要将单词向量保存为与 Google 最初的 word2vec.c 版本所使用的格式相同的格式,您可以使用 .save_word2vec_format(path, ...) 方法。然后,为了稍后重新加载这些向量,您可以使用匹配的 reloaded_vectors = KeyedVectors.load_word2vec_format(path, ...) 方法。

    • 要将单词向量保存为 gensim 自己的基于 Python 的格式,您可以使用 .save(path) 方法。然后,为了稍后重新加载这些向量,您将使用匹配的 reloaded_vectors = KeyedVectors.load(path) 方法。这种方法可能会节省更多信息(如果它存在于您的培训中),例如字数。为了提高对象的效率,它可能会将大部分向量存储到一个单独的文件中,如果您将文件移动到其他位置,则该文件应与主 path 文件一起保存,并允许选择(但不是要求)使用 @ 987654338@ 选项稍后。

    您不能混合和匹配这些格式:save_word2vec_format() 保存的文件只能由load_word2vec_format() 读取,save() 保存的文件只能由load() 读取。

    关于您的其他TypeError,没有足够的信息来推测出了什么问题。您需要编辑答案以添加更多详细信息,并使演示代码自洽。

    例如,您显示加载到名为vectors 的变量中,然后对名为model 的变量进行操作。这种差异暗示问题可能是您未显示的代码中的其他一些不匹配。

    同样,如果您遇到任何错误,您应该在问题中准确引用错误消息和报告的完整错误堆栈,以便回答者可以准确查看您的代码和库中的哪些代码行您所依赖的,正是您的错误所涉及的。 (这通常有助于准确找出您的期望/代码偏离库要求的地方。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      • 2017-03-20
      • 2019-10-15
      • 2019-01-15
      相关资源
      最近更新 更多