我使用Gensim的文档语料库训练了一个word2vec模型。一旦模型正在训练,我正在编写以下代码以获得单词的原始特征向量说“视图”。
myModel["view"]
但是,我得到了这个词的KeyError,这可能是因为它不是作为word2vec索引的键列表中的键存在的。在尝试获取原始特征向量之前,如何检查索引中的键是否退出?
答案 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。