Python Gensim从向量创建Word2Vec模型(在ndarray中)

时间:2019-05-14 10:47:33

标签: python nlp gensim word2vec

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

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

以此类推。

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

model = load_from_ndarray(arr)

该怎么办?我看到了

  

KeyedVectors

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

2 个答案:

答案 0 :(得分:1)

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

但这是一个非常简单的对象,主要是一个原始数组和一个将单词映射到索引位置的字典,所有源均可用:

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

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

  • 仔细研究load_word2vec_format()方法,该方法在同级base_any2vec.py文件中包含类似名称的支持功能,并查看它们在读取文件和构造文件时所使用的每个步骤。完整实例

  • 以一种受支持的方式来训练假人KeyedVectors,例如通过对包含您所需单词的合成语料库进行训练Word2Vec,然后检查该对象以了解工作实例的必要部分,或就地更改该实例,以使您喜欢的向量映射成为可能。

答案 1 :(得分:0)

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')