我正在寻找一种将预先训练好的词向量动态添加到 word2vec gensim 模型的方法。
我在 txt(单词及其嵌入)中有一个预训练的 word2vec 模型,我需要在特定语料库中的文档和新文档之间获取 Word Mover 的距离(例如通过 gensim.models.Word2Vec.wmdistance )。
为了避免加载整个词汇表的需要,我只想加载在语料库中找到的预训练模型单词的子集。但是,如果新文档中包含在语料库中未找到但在原始模型词汇表中的单词,则将它们添加到模型中,以便在计算中考虑它们。
我想要的是节省 RAM,因此可能对我有帮助的事情:
提前致谢。
最佳答案
方法一:
您可以使用 keyedvectors来自 gensim.models.keyedvectors
.它们非常易于使用。
from gensim.models.keyedvectors import WordEmbeddingsKeyedVectors
w2v = WordEmbeddingsKeyedVectors(50) # 50 = vec length
w2v.add(new_words, their_new_vecs)
方法二:
和 如果您已经使用
gensim.models.Word2Vec
构建了模型你可以这样做。假设我想添加 token <UKN>
带有随机向量。model.wv["<UNK>"] = np.random.rand(100) # 100 is the vectors length
完整的例子是这样的: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)
关于python - 将词嵌入添加到 word2vec gensim 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43598212/