私はを使用していgensim 3.0.1
ます。
TaggedDocument
フォームの一意のラベルが付いたリストがありますが、"label_17"
Doc2Vecモデルをトレーニングすると、ラベルがシンボルに分割されるため、の出力model.docvecs.doctags
は次のようになります。
{'0': Doctag(offset=5, word_count=378, doc_count=40),
'1': Doctag(offset=6, word_count=1330, doc_count=141),
'2': Doctag(offset=7, word_count=413, doc_count=50),
'3': Doctag(offset=8, word_count=365, doc_count=41),
'4': Doctag(offset=9, word_count=395, doc_count=41),
'5': Doctag(offset=10, word_count=420, doc_count=41),
'6': Doctag(offset=11, word_count=408, doc_count=41),
'7': Doctag(offset=12, word_count=426, doc_count=41),
'8': Doctag(offset=13, word_count=385, doc_count=41),
'9': Doctag(offset=14, word_count=376, doc_count=40),
'_': Doctag(offset=4, word_count=2009, doc_count=209),
'a': Doctag(offset=1, word_count=2009, doc_count=209),
'b': Doctag(offset=2, word_count=2009, doc_count=209),
'e': Doctag(offset=3, word_count=2009, doc_count=209),
'l': Doctag(offset=0, word_count=4018, doc_count=418)}
ただし、タグ付きドキュメントの最初のリストでは、各ドキュメントに固有のラベルがあります。
モデルトレーニングのコードは次のとおりです。
model = Doc2Vec(size=300, sample=1e-4, workers=2)
print('Building Vocabulary')
model.build_vocab(data)
print('Training...')
model.train(data, total_words=total_words_count, epochs=20)
したがって、のようにドキュメントにインデックスを付けてmodel.docvecs['label_17']
取得することはできませんKeyError
。
語彙を構築する代わりにコンストラクターにデータを渡す場合も同じです。
なんでこんなことが起こっているの?ありがとう。
Doc2Vec
テキストの例、形状のオブジェクトには、タグのリストでTaggedDocument
あるtags
プロパティが含まれている必要があります。
代わりにのような文字列を指定すると、'label_17'
実際には*list-of-characters*, so it's essentially saying that
TaggedDocument`にタグがあります。
['l', 'a', 'b', 'e', 'l', '_', '1', '7']
tags
たとえばtags=['label_17']
、必ず1つのタグのリストを作成してください。そうすれば、期待どおりのトレーニング済みタグの結果が表示されるはずです。
別に:それぞれ約10語の約200のドキュメントがあるようです。注Word2Vec
/Doc2Vec
良い結果を得るには、大きくて多様なデータセットが必要です。特に、200のテキストだけで300のベクトル次元の場合、トレーニングは、トレーニングセットの特異性を記憶するだけで、トレーニングタスク(内部単語予測)で非常にうまくいく可能性があります。これは、本質的に「過剰適合」であり、結果として生じません。距離/配置が他の例に転送される一般化可能な知識を表すベクトル。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加