2017-12-20 2 views
1

私は、Gensimのdoc2vecを使用して大きなコーパスのためのドキュメントベクトルを作成しました。大きなDataFrameにGensim Doc2vec infer_vector()を使用するには?

sentences=gensim.models.doc2vec.TaggedLineDocument('file.csv')

model = gensim.models.doc2vec.Doc2Vec(sentences,size = 10, window = 800, min_count = 1, workers=40, iter=10, dm=0)

今、私は別のサンプルコーパス

Eg: model.infer_vector('This is a string')

のための文書ベクトルを作成するために、これらの文書ベクトルを使用して)(Gensimのinfer_vectorを使用しています渡す方法はありますinfer_vectorを介してDataFrame全体を取得し、DataFrameの各行の出力ベクトルを取得しますか?

+1

'df ['col']。apply(model.infer_vector)'? –

+0

または、おそらくこれはリストで動作します: 'model.infer_vector(df ['col'])' –

+0

ありがとう、df ['col']。apply(model.infer_vector)worked – CMM

答えて

0

Doc2Vecinfer_vector()は、単語リストのリストとして個々のテキストの例を取ります。したがって、一例のバッチを渡すことはできません。トークン以外の文字列を渡すべきではなく、トレーニングデータと同じ方法で前処理されたトークンリストを渡すべきではありません。

しかし、あなたは、 @COLDSPEEDコメントが示唆するように、あなたにはinfer_vector()が乗算されます。ただし、意味のある結果が必要な場合は、文字列ではなく列のリストをトークンにする必要があります。

また、ほとんどのユーザーがinfer_vector()は、このような多くののトレーニングデフォルトなどの非デフォルトのそのstepsパラメータ(5のデフォルトよりもはるかに大きい)の値、及びその開始alphaパラメータのおそらく小さな値を(使用してより良い作品を見つけます推論のデフォルト値0.1よりも0.025)。

0

@gojomo:答えをありがとうが、私はトークン化された行と生の文字列の両方を使って推論を試み、同じドキュメントベクトルを得ました。

作成されているドキュメントベクターが意味を持つかどうかを知る方法はありますか?

関連する問題