ear*_*dil 5 python nlp word2vec
我正在寻找一种方法来将预训练的单词向量添加到word2vec gensim模型中.
我在txt(单词及其嵌入)中有一个预先训练过的word2vec模型,我需要在特定语料库和新文档中的文档之间获取Word Mover的距离(例如通过gensim.models.Word2Vec.wmdistance).
为了防止需要加载整个词汇表,我想只加载在语料库中找到的预训练模型的单词的子集.但是,如果新文档具有在语料库中找不到但在原始模型中的词汇,则将它们添加到模型中,以便在计算中考虑它们.
我想要的是节省内存,所以有可能帮助我的事情:
提前致谢.
您可以只使用来自 的keyedvectorsgensim.models.keyedvectors
。它们非常容易使用。
from gensim.models.keyedvectors import WordEmbeddingsKeyedVectors
w2v = WordEmbeddingsKeyedVectors(50) # 50 = vec length
w2v.add(new_words, their_new_vecs)
Run Code Online (Sandbox Code Playgroud)
如果您已经使用它构建了模型,gensim.models.Word2Vec
则可以这样做。假设我想添加<UKN>
带有随机向量的标记。
model.wv["<UNK>"] = np.random.rand(100) # 100 is the vectors length
Run Code Online (Sandbox Code Playgroud)
完整的例子是这样的:
import numpy as np
import gensim.downloader as api
from gensim.models import Word2Vec
dataset = api.load("text8") # load dataset as iterable
model = Word2Vec(dataset)
model.wv["<UNK>"] = np.random.rand(100)
Run Code Online (Sandbox Code Playgroud)