0

私は word2vec の世界に不慣れで、word2vec の gensim の実装を使い始めたばかりです。

最初のドキュメント セットとして 2 つの単純な文を使用します。

[['first', 'sentence'], ['second', 'sentence']]

私が得るベクトルは次のようなものです:

'first', -0.07386458, -0.17405555
'second', 0.0761444 , -0.21217766
'sentence', 0.0545655 , -0.07535963

ただし、別のおもちゃのドキュメント セットを入力すると、次のようになります。

[['a', 'c'], ['b', 'c']]

次の結果が得られます。

'a', 0.02936198, -0.05837455
'b', -0.05362414, -0.06813956
'c', 0.11918657, -0.10411404

繰り返しますが、私は word2vec を初めて使用しますが、私の理解によると、私の 2 つのドキュメント セットは構造的に同一であるため、対応する単語の結果は同じになるはずです。しかし、なぜ私は異なる結果を得ているのですか? アルゴリズムは常に確率論的な出力を提供しますか、それともドキュメント セットが小さすぎますか?

私が使用した関数は次のとおりです。

model = word2vec.Word2Vec(sentences, size=2, min_count=1, window=2)
4

1 に答える 1

0

異なるベクトルを取得する主な理由は、word2vec でのベクトルのランダムな初期化です (ベクトル値の違いにつながる可能性のあるネガティブ サンプリング、スレッドなどの他の理由があります)。

word2vec の背後にある哲学は、ドキュメントの数 (トレーニング データ) >> 固有の単語の数 (語彙サイズ) の場合、数回の反復後に単語のベクトルが安定するというものです。

于 2015-08-24T12:18:38.353 に答える