Python gensim 从向量创建 word2vec 模型(在 ndarray 中)
Python gensim create word2vec model from vectors (in ndarray)
我有一个包含单词及其对应向量的 ndarray(每个单词的大小为 100)。
例如:
Computer 0.11 0.41 ... 0.56
Ball 0.31 0.87 ... 0.32
以此类推
我想从中创建一个 word2vec 模型:
model = load_from_ndarray(arr)
怎么办?我看到了
KeyedVectors
但它只需要文件而不是数组
目前还没有将您自己的 array/word-list 变成 KeyedVectors
的便捷方法。所以你必须 hand-construct 在你自己的代码中。
但它是一个非常简单的对象,主要是一个原始数组和一个用于将单词映射到 index-locations 的字典,所有源都可用:
https://github.com/RaRe-Technologies/gensim/blob/develop/gensim/models/keyedvectors.py
我特别建议执行以下一项或两项操作的策略:
仔细查看 load_word2vec_format()
方法,包括兄弟 base_any2vec.py
文件中的 similarly-named 支持函数,并查看它们在其中使用的每个步骤读取文件并构建完整实例
以一种受支持的方式训练虚拟 KeyedVectors
– 例如通过训练 Word2Vec
在一些包含您需要的单词的合成语料库上 – 然后检查该对象以了解工作实例的必要部分,或对该实例进行变异 in-place 以获得您喜欢的 vector-mappings。
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')
我有一个包含单词及其对应向量的 ndarray(每个单词的大小为 100)。 例如:
Computer 0.11 0.41 ... 0.56
Ball 0.31 0.87 ... 0.32
以此类推
我想从中创建一个 word2vec 模型:
model = load_from_ndarray(arr)
怎么办?我看到了
KeyedVectors
但它只需要文件而不是数组
目前还没有将您自己的 array/word-list 变成 KeyedVectors
的便捷方法。所以你必须 hand-construct 在你自己的代码中。
但它是一个非常简单的对象,主要是一个原始数组和一个用于将单词映射到 index-locations 的字典,所有源都可用:
https://github.com/RaRe-Technologies/gensim/blob/develop/gensim/models/keyedvectors.py
我特别建议执行以下一项或两项操作的策略:
仔细查看
load_word2vec_format()
方法,包括兄弟base_any2vec.py
文件中的 similarly-named 支持函数,并查看它们在其中使用的每个步骤读取文件并构建完整实例以一种受支持的方式训练虚拟
KeyedVectors
– 例如通过训练Word2Vec
在一些包含您需要的单词的合成语料库上 – 然后检查该对象以了解工作实例的必要部分,或对该实例进行变异 in-place 以获得您喜欢的 vector-mappings。
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')