我有两个列表,A是单词列表,例如[“ hello”,“ world”,......],Len(A)是10000。列表B包含所有经过预训练的向量对应于A,即[10000,512],其中512为向量维。我想将两个列表转换成gensim word2vec模型格式,以便以后加载模型,例如model = Word2Vec.load("word2vec.model")
,我该怎么做?
答案 0 :(得分:1)
由于您只有单词及其向量,因此对于完整的Word2Vec
模型(其中包括内部神经网络的隐藏权重和单词频率等其他信息),您的信息还不够。
但是您可以创建gensim
KeyedVectors
模型gensim
属性中的一般类型的Word2Vec
.wv
对象。它具有许多您可能会感兴趣的辅助方法(例如most_similar()
)。
让我们假设您的 A 单词列表在一个名为words_list
的更有用的Python列表中,而您的 B 矢量列表位于名为“ vectors_list`”的更有用的Python列表中。
尝试:
from gensim.models import KeyedVectors
kv = new KeyedVectors(512)
kv.add(words_list, vectors_list)
kv.save(`mywordvecs.kvmodel`)
然后您可以通过以下方式重新加载它们:
kv2 = KeyedVectors.load(`mywordvecs.kvmodel`)
(如果您还希望其他人也可以加载更简单的纯矢量格式,则也可以使用save_word2vec_format()
和load_word2vec_format()
代替gensim的本机save()
/ load()
使用该格式的工具。但是,如果您停留在gensim
之内,则普通的save()
/ load()
一样好-如果保存更复杂的受过训练的{{1 }}模型,因为它们将保留这些对象包含的额外信息。)