如何检查word2vec训练模型中是否存在密钥

时间:2015-05-18 11:24:46

标签: python gensim word2vec

我使用Gensim的文档语料库训练了一个word2vec模型。一旦模型正在训练,我正在编写以下代码以获得单词的原始特征向量说“视图”。

myModel["view"]

但是,我得到了这个词的KeyError,这可能是因为它不是作为word2vec索引的键列表中的键存在的。在尝试获取原始特征向量之前,如何检查索引中的键是否退出?

5 个答案:

答案 0 :(得分:30)

Word2Vec还提供了一个词汇'会员,您可以直接访问。

使用pythonistic方法:

if word in w2v_model.vocab:
    # Do something

编辑自gensim发布2.0以来,Word2Vec的API发生了变化。要访问词汇表,您现在应该使用它:

if word in w2v_model.wv.vocab:
    # Do something

编辑2 属性' wv'正在弃用,将在gensim 4.0.0中完成删除。现在它回到OP的原始答案:

if word in w2v_model.vocab:
    # Do something

答案 1 :(得分:13)

使用

将模型转换为向量
word_vectors = model.wv

然后我们可以使用

if 'word' in word_vectors.vocab

答案 2 :(得分:2)

在这里回答我自己的问题。

Word2Vec提供了一个名为 contains ('view')的方法,该方法根据相应的单词是否已编入索引返回True或False。

答案 3 :(得分:0)

嘿,我知道这篇文章迟到了,但这里有一段代码可以很好地处理这个问题。我自己在我的代码中使用它,它就像一个魅力:)

   size = 300 #word vector size
   word = 'food' #word token

   try:
        wordVector = model[word].reshape((1, size))
   except KeyError:
        print "not found! ",  word

注意: 我正在使用python Gensim Library for word2vec models

答案 4 :(得分:0)

我通常使用过滤器:

for doc in labeled_corpus:
    words = filter(lambda x: x in model.vocab, doc.words)

这是一个简单的方法,用于解决看不见的单词上的KeyError。