【问题标题】:Python gensim create word2vec model from vectors (in ndarray)Python gensim 从向量创建 word2vec 模型(在 ndarray 中)
【发布时间】:2019-05-14 10:47:33
【问题描述】:

我有一个带有单词及其对应向量的 ndarray(每个单词的大小为 100)。 例如:

Computer 0.11 0.41 ... 0.56
Ball     0.31 0.87 ... 0.32

等等。

我想从中创建一个 word2vec 模型:

model = load_from_ndarray(arr)

怎么做?我看到了

键控向量

但它只需要文件而不是数组

【问题讨论】:

  • 将这些保存到文件然后用KeyedVector 再次读取有什么问题?
  • @VnC 我收到一个错误:UnpicklingError: invalid load key, '\xd7'。这些词是希伯来语所以我猜有编码问题

标签: python nlp gensim word2vec


【解决方案1】:
from gensim.models import KeyedVectors
words = myarray[:,0]
vectors = myarray[:,1:]
model = KeyedVectors(vectors.shape[1])
model.add(words, vectors)

如果你愿意,你可以保存它

model.save('mymodel')

然后加载它

model = KeyedVectors.load('mymodel')

【讨论】:

    【解决方案2】:

    没有现有的便捷方法可以将您自己的数组/单词列表转换为KeyedVectors。因此,您必须在自己的代码中手动构建它。

    但它是一个非常简单的对象,主要是一个原始数组和一个用于将单词映射到索引位置的 dict,并且所有源都可用:

    https://github.com/RaRe-Technologies/gensim/blob/develop/gensim/models/keyedvectors.py

    我特别建议采取以下一项或两项的策略:

    • 仔细查看 load_word2vec_format() 方法,包括同级 base_any2vec.py 文件中名称相似的支持函数,并查看它们在读取文件和构建完整实例时使用的每个步骤

    • 以一种受支持的方式训练一个假人 KeyedVectors,例如在一些包含您需要的单词的合成语料库上训练 Word2Vec,然后检查该对象以了解必要的部分的工作实例,或就地改变该实例,然后获得您喜欢的矢量映射。

    【讨论】:

    • 谢谢,你有类似的例子吗?
    • 我能想到的唯一示例代码是load_word2vec_format()_load_word2vec_format()
    猜你喜欢
    • 2016-12-04
    • 1970-01-01
    • 2018-11-27
    • 1970-01-01
    • 2018-08-18
    • 2018-07-19
    • 1970-01-01
    • 1970-01-01
    • 2014-04-02
    相关资源
    最近更新 更多