web-dev-qa-db-ja.com

Gensim:KeyError:「語彙にない単語」

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を訓練するためにさらに使用できるモデルをチェックする方法は何ですか?ありがとうございました。

11

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, ... ]
25
bunji

ドキュメントから反復可能な文を渡す必要があるため、関数に渡すものは何でも入力を反復可能として扱うので、ここでは単語のみを渡して、コーパス全体の各文字のWord2vecベクトルをカウントします。

そのため、この問題を回避するには、リスト内の単語のリストを渡します。

Word2vec_model = gensim.models.Word2Vec([b],min_count=1,size=32)
1
Ravi G