39

98892 個のドキュメントでトレーニングされた gensim の word2vec モデルがあります。文の配列 (つまり、モデルをトレーニングしたセット) に存在しない特定の文については、その文でモデルを更新して、次回のクエリで何らかの結果が得られるようにする必要があります。私はこのようにやっています:

new_sentence = ['moscow', 'weather', 'cold']
model.train(new_sentence)

そして、これをログとして出力します:

2014-03-01 16:46:58,061 : INFO : training model with 1 workers on 98892 vocabulary and 100 features
2014-03-01 16:46:58,211 : INFO : reached the end of input; waiting to finish 1 outstanding jobs
2014-03-01 16:46:58,235 : INFO : training on 10 words took 0.1s, 174 words/s

さて、ほとんどのポジティブ( as )に対して同様の new_sentence を使用してクエリを実行すると、model.most_similar(positive=new_sentence)エラーが発生します。

Traceback (most recent call last):
 File "<pyshell#220>", line 1, in <module>
 model.most_similar(positive=['moscow', 'weather', 'cold'])
 File "/Library/Python/2.7/site-packages/gensim/models/word2vec.py", line 405, in most_similar
 raise KeyError("word '%s' not in vocabulary" % word)
  KeyError: "word 'cold' not in vocabulary"

「寒い」という言葉は、私がそのことを訓練した語彙の一部ではないことを示しています (私は正しいですか)?

問題は次のとおりです: モデルを更新して、指定された新しい文のすべての可能な類似点を与えるにはどうすればよいでしょうか?

4

6 に答える 6

24

gensim 0.13.3の時点で、 gensimを使用して Word2Vec のオンライン トレーニングを行うことができます。

model.build_vocab(new_sentences, update=True)
model.train(new_sentences)
于 2016-12-02T16:07:33.407 に答える
8

モデルが C ツール load_word2vec_format を使用して生成された場合、そのモデルを更新することはできません。オンライン トレーニングWord2Vec チュートリアルの word2vec チュートリアル セクションを参照してください。

C ツール load_word2vec_format() によって生成されたモデルでトレーニングを再開することはできないことに注意してください。クエリ/類似性のためにそれらを引き続き使用できますが、トレーニングに不可欠な情報 (語彙ツリー) が欠落しています。

于 2014-03-27T20:15:40.423 に答える
2

問題は、新しい文で word2vec モデルを再トレーニングできないことです。doc2vec のみが許可します。doc2vec モデルを試してください。

于 2016-10-13T00:10:35.207 に答える
2

まず、事前トレーニング済みのモデルに新しい単語を追加することはできません。

ただし、2014 年に公開された「新しい」doc2vec モデルがあり、すべての要件を満たしています。一連の単語ベクトルを取得してから結合する代わりに、ドキュメント ベクトルをトレーニングするために使用できます。最良の部分は、doc2vec がトレーニング後に目に見えない文を推測できることです。モデルはまだ変更できませんが、私の実験に基づいてかなり良い推論結果を得ることができます。

于 2016-08-19T23:52:10.027 に答える