PythonのGensimライブラリを使用して、トレーニングされたWord2vecモデルがあります。以下にトークン化されたリストがあります。語彙サイズは34ですが、私は34のうちわずかしか与えていません。
b = ['let',
'know',
'buy',
'someth',
'featur',
'mashabl',
'might',
'earn',
'affili',
'commiss',
'fifti',
'year',
'ago',
'graduat',
'21yearold',
'dustin',
'hoffman',
'pull',
'asid',
'given',
'one',
'piec',
'unsolicit',
'advic',
'percent',
'buy']
モデル
model = gensim.models.Word2Vec(b,min_count=1,size=32)
print(model)
### prints: Word2Vec(vocab=34, size=32, alpha=0.025) ####
リスト内の単語のmodel['buy']
を実行して類似性スコアを取得しようとすると、
KeyError:「語彙にない単語「購入」」
私が間違っていることや、トピックを形成する類似の単語を視覚化するためにPCAまたはt-sneを訓練するためにさらに使用できるモデルをチェックする方法は何ですか?ありがとうございました。
gensim.models.Word2Vec
に渡される最初のパラメーターは、反復可能な文です。文自体は単語のリストです。ドキュメントから:
sentences
の反復可能オブジェクトからモデルを初期化します。各文は、トレーニングに使用される単語(ユニコード文字列)のリストです。
現時点では、リスト内の各単語b
は文であると考えているため、各単語の各文字に対してWord2Vec
を実行しています。 b
。今すぐできること:
model = gensim.models.Word2Vec(b,min_count=1,size=32)
print(model['a'])
array([ 7.42487283e-03, -5.65282721e-03, 1.28707094e-02, ... ]
単語に対して機能させるには、b
を別のリストにラップして、正しく解釈されるようにします。
model = gensim.models.Word2Vec([b],min_count=1,size=32)
print(model['buy'])
array([-0.01331611, 0.00496594, -0.00165093, -0.01444992, 0.01393849, ... ]
ドキュメントから反復可能な文を渡す必要があるため、関数に渡すものは何でも入力を反復可能として扱うので、ここでは単語のみを渡して、コーパス全体の各文字のWord2vecベクトルをカウントします。
そのため、この問題を回避するには、リスト内の単語のリストを渡します。
Word2vec_model = gensim.models.Word2Vec([b],min_count=1,size=32)