Gensimでドキュメントのコーパスを使用してWord2vecモデルをトレーニングしました。モデルがトレーニングされたら、次のコードを書いて、Wordの生の特徴ベクトル「ビュー」を取得します。
myModel["view"]
ただし、WordのKeyErrorが表示されます。これは、おそらくWord2vecによってインデックス付けされたキーのリストにキーとして存在しないためです。生の特徴ベクトルを取得する前に、インデックスにキーが存在するかどうかを確認するにはどうすればよいですか?
モデルをベクトルに変換する
Word_vectors = model.wv
その後、我々は使用することができます
if 'Word' in Word_vectors.vocab
Word2Vecには「vocab」メンバーも用意されており、直接アクセスできます。
Pythonisticアプローチの使用:
if Word in w2v_model.vocab:
# Do something
[〜#〜] edit [〜#〜] gensimリリース2.0以降、Word2VecのAPIが変更されました。語彙にアクセスするには、これを使用する必要があります。
if Word in w2v_model.wv.vocab:
# Do something
EDIT 2属性「wv」は廃止予定であり、gensim 4.0.0で完全に削除されます。これで、OPによる元の答えに戻ります。
if Word in w2v_model.vocab:
# Do something
ここで自分の質問に答えます。
Word2Vecには、対応するWordがインデックス付けされているかどうかに基づいてTrueまたはFalseを返すcontains( 'view')という名前のメソッドが用意されています。
私は一般的にフィルターを使用します:
for doc in labeled_corpus:
words = filter(lambda x: x in model.vocab, doc.words)
これは、目に見えない単語でKeyErrorを通過するための簡単な方法の1つです。
この投稿が遅れていることは知っていますが、この問題をうまく処理できるコードを以下に示します。私は自分のコードでそれを使用しており、魅力のように機能します:)
size = 300 #Word vector size
Word = 'food' #Word token
try:
wordVector = model[Word].reshape((1, size))
except KeyError:
print "not found! ", Word
注:私はpython Word2vecモデル用のGensimライブラリを使用しています