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

标签 python gensim keyerror word2vec

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

model_1 = Word2Vec.load_word2vec_format('vectors.bin', binary=True)

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

yogurt_vector = model_1['yogurt']

我得到 KeyError: 'yogurt',这很有意义。我想要的是能够获取没有对应向量的句子单词并将它们的表示添加到 model_1。我从this post知道你不能继续训练 C 向量。那么有没有办法为没有向量的单词训练一个新模型,比如 model_2,并将 model_2model_1 合并?

或者,有没有办法在我实际尝试检索单词之前测试模型是否包含单词,这样我至少可以避免 KeyError?

最佳答案

避免按键错误很容易:

[x for x in 'this model hus everything'.split() if x in model_1.vocab]

更困难的问题是将新词合并到现有模型中。问题是 word2vec 计算两个词彼此相邻的可能性,如果“酸奶”这个词不在模型训练的第一个 body 中,它就不在这些词中的任何一个旁边,所以第二个模型与第一个无关。

您可以在保存模型时查看内部​​结构(使用 numpy.save),我有兴趣与您一起编写允许添加词汇的代码。

关于python - Gensim word2vec 增强或合并预训练向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29591581/

相关文章:

python - 使用 Pandas 风格我得到 KeyError : "None of . ...位于 [列]

python - 如何在Python中将字典加载到ndarray中

python - LabelEncoder——类型错误: argument must be a string or number

python - Gensim 库 Python 3.4 : http://www. lfd.uci.edu/~gohlke/pythonlibs/的安装问题

python - 如何在python中使用gensim获取相关的匹配词?

python - 使用 python 读取 Abaqus 结果的应力 'S'

python - 尝试在 Django 中遍历 session 字典时出现 KeyError 0

python - 关于 Django 和 User Auth 的问题

python - 如何覆盖像 round() 这样的默认 python 函数?

python-3.x - 如何获得 word2vec 词汇表中不存在的单词的向量?