Gensim word2vec增强或合并预训练向量

ada*_*key 2 python gensim keyerror word2vec

我正在从word2vec C代码生成的二进制文件中加载经过预训练的向量,如下所示:

model_1 = Word2Vec.load_word2vec_format('vectors.bin', binary=True)
Run Code Online (Sandbox Code Playgroud)

我正在使用这些向量生成句子的向量表示,这些句子包含的单词可能在中不存在向量vectors.bin。例如,如果vectors.bin单词“酸奶”没有关联的向量,我会尝试

yogurt_vector = model_1['yogurt']
Run Code Online (Sandbox Code Playgroud)

我明白了KeyError: 'yogurt',这很有意义。我想要的是能够接受没有相应向量的句子单词,并为其添加表示形式model_1。从这篇文章中我知道,您不能继续训练C向量。那么有没有办法为model_2没有向量的单词训练新模型并model_2与之合并model_1呢?

或者,是否有一种方法可以在我实际尝试检索该模型之前测试该模型是否包含单词,以便至少可以避免KeyError?

Ed *_*ing 5

避免密钥错误很容易:

[x for x in 'this model hus everything'.split() if x in model_1.vocab]
Run Code Online (Sandbox Code Playgroud)

更为困难的问题是将一个新词合并到现有模型中。问题是word2vec计算出两个单词彼此相邻的可能性,并且如果单词“酸奶”不在模型训练的第一主体中,那么该单词也不在任何一个单词的旁边,因此第二个模型不会与第一个相关。

您可以查看保存模型时的内部信息(使用numpy.save),我很想与您合作以编写允许添加词汇的代码。