2017-12-12 14 views
0

私は既存のgensim Doc2Vecモデルを持っており、トレーニングセットと拡張モデルを繰り返し更新しようとしています。gensim Doc2Vecモデルのトレーニング文書を更新する

私は新しいドキュメントを取り、通常通りpreproecssing行う

stoplist = nltk.corpus.stopwords.words('english') 
train_corpus= [] 
for i, document in enumerate(corpus_update['body'].values.tolist()): 
    train_corpus.append(gensim.models.doc2vec.TaggedDocument([word for word in gensim.utils.simple_preprocess(document) if word not in stoplist], [i])) 

私は、その後、元のモデルをロードする語彙を更新し、再教育:

#### Original model 
## model = gensim.models.doc2vec.Doc2Vec(dm=0, size=300, hs=1, min_count=10, dbow_words= 1, negative=5, workers=cores) 

model = Doc2Vec.load('pvdbow_model_6_06_12_17.doc2vec') 

model.build_vocab(train_corpus, update=True) 

model.train(train_corpus, total_examples=model.corpus_count, epochs=model.iter) 

私は、トレーニングセットを更新Pandasのデータフレームに新しいデータを追加し、インデックスをリセットします。

inferred_vector = model1.infer_vector(tokens) 
sims = model.docvecs.most_similar([inferred_vector], topn=len(model.docvecs)) 

結果の品質はモデルからの指標とトレーニングセットのデータフレームがないことを示唆し、悪い:更新モデルとただし

corpus = corpus.append(corpus_update) 
corpus = corpus.reset_index(drop=True) 

、私は(infer_vectorを使用するようにしてください)より長い一致。

トレーニングセットデータフレーム(更新されたモデルを使用して)と比較しても、結果は良好ですが、明らかに私は新しいドキュメントが不足しています。

モデルを完全に再トレーニングせずにモデルを頻繁に更新したいと思っているので、両方とも更新してもらえますか?

答えて

1

Gensim Doc2Vecはまだ拡張語彙を公式にサポートしていないため(build_vocab(..., update=True)経由)、モデルの動作は何も役に立たないと定義されていません。実際には、既存のdocタグは完全に破棄され、最新のコーパス内のものに置き換えられると思います。 (this issueような、Doc2Vecupdate_vocab()を使用しようとするとさらに、メモリ・フォルト・プロセス・クラッシュの優れた未解決の報告があります。)

それが働いていたとしても、これまでならば継続を検討するために濁ったバランスの問題がいくつかあります最初のトレーニングセットと異なるテキストを持つモデルでtrain()を呼び出します。特に、そのような訓練セッションは、新しい例をより良くするためにモデルを微調整するが、元の訓練の価値を失い、場合によってはモデルを悪化させる可能性がある。

増加するコーパスを持つ最も防御的なポリシーは、すべてのトレーニングの例を1つのコーパスにまとめた状態でゼロから再調整することです。モデルへの更新のローリングの可能なプロセスの別の概要は、my recent post to the gensim discussion listで議論されました。

セットアップにいくつかの他のコメント:

  • hs=1)ソフトマックス階層と負サンプリングの両方を使用して(> 0 negativeとは)モデルサイズとトレーニング時間が増えますが、いずれかの利点を提供しないことがあり両方のモードを有効にすることはほとんどありません。

  • iterを指定しないと、デフォルトのInherited-from-Word2Vecを '5'として使用しています。 、公開されているDoc2Vecの作業ではしばしば10-20回以上の反復が使用されますおよび/または(0.1のデフォルトを持っている)alphaの値が小さい

  • で、(のみ 5のデフォルトを持っている)そのオプションのパラメータ stepsについて大いに高い値でより良い作業

  • 多くのレポートinfer_vector

関連する問題