[英]Getting probability of the text given word embedding model in gensim word2vec model
[英]Add word embedding to word2vec gensim model
我正在寻找一种将预训练词向量动态添加到 word2vec gensim 模型的方法。
我在 txt 中有一个预训练的 word2vec 模型(单词及其嵌入),我需要在特定语料库中的文档和新文档之间获取 Word Mover 的距离(例如通过gensim.models.Word2Vec.wmdistance )。
为了避免加载整个词汇表的需要,我只想加载在语料库中找到的预训练模型单词的子集。 但是,如果新文档中有在语料库中找不到但在原始模型词汇表中存在的词,则将它们添加到模型中,以便在计算中考虑它们。
我想要的是节省 RAM,所以可能对我有帮助的事情:
提前致谢。
您可以只使用gensim.models.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
构建了一个模型,您可以这样做。 假设我想添加带有随机向量的标记<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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.