事前にトレーニングされたモデルを使用して、新しいラベル付きドキュメント(TaggedDocument)でトレーニングしようとしています。
事前トレーニング済みモデルは、label1_indexの一意のID(Good_0、Good_1〜Good_999など)を持つドキュメントを含むトレーニング済みモデルです。トレーニング済みデータの合計サイズは約7000です。
ここで、事前にトレーニングされたモデルを、label2_indexの一意のID(Bad_0、Bad_1 ...からBad_1211など)の新しいドキュメントでトレーニングしたいと思います。トレーニングされたデータの合計サイズは約1211です。
トレイン自体はエラーなしで成功しましたが、問題は、「most_similar」を使用しようとすると、Good _...というラベルの付いた同様のドキュメントのみが提案されることです。
最初から完全にトレーニングすると、期待した答えが得られます。これは、GoodまたはBadのラベルが付いたものと同様の新しく与えられたドキュメントを推測します。
ただし、上記の練習は、最初から完全に訓練されたものとしては機能しません。
継続列車がきちんと動かないのですか、それとも間違えましたか?
gensimDoc2Vec
クラスにはtrain()
、を介していつでも追加の例を提供できますが、最初のbuild_vocab()
ステップで単語トークンとドキュメントタグの両方の実用的な語彙を検出するだけです。したがって、の間に単語/タグが使用可能でない限りbuild_vocab()
、後で不明として無視されます。(単語はテキストから静かに削除されます。タグはモデル内でトレーニングも記憶もされません。)
Word2Vec
そこからスーパークラスDoc2Vec
の機能の多くを借りて、その上、新しい、より多くの実験的パラメータがあるbuild_vocab()
と呼ばれるがupdate
。trueに設定されている場合、その呼び出しbuild_vocab()
は、以前の語彙を置き換えるのではなく、追加します。ただし、2018年2月の時点では、このオプションはまだ機能しておらずDoc2Vec
、実際にメモリ障害のクラッシュを引き起こすことがよくあります。
しかし、それが機能するようになったとしても、段階的なトレーニングの例を提供することは必ずしも良い考えではありません。モデルの一部(新しい例で実行された部分)を更新するだけで、モデル全体が悪化したり、ベクトルの相互整合性が低下したりする可能性があります。(これらの密な埋め込みモデルの本質は、さまざまな例すべてを最適化すると、一般的に有用なベクトルが得られることです。一部のサブセットのみをトレーニングすると、モデルはそのサブセットだけで良好になり、以前の例にコストがかかる可能性があります。)
の結果の一部にもなる新しい例が必要な場合は、のmost_similar()
外に独自の個別のベクトルのセットを作成することをお勧めしますDoc2Vec
。新しいテキストの新しいベクトルを推測するときは、それらをその外部セットに追加し、独自のベクトルを実装してmost_similar()
(gensimコードをモデルとして使用)、作成された固定セットだけでなく、この拡張するベクトルのセットを検索できます。最初のバルクDoc2Vec
トレーニングによる。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加