この質問のタイトルは、そのテキストとは別の質問なので、両方に別々に答えます(一方が他方につながる場合)。
- 目に見えない文章を推測するにはどうすればよいですか:
# ... trained model stored in var model
list_of_words = ["this", "is", "a", "new","unseen", "sentence"]
inferred_embedding = model.infer_vector(list_of_words)
これはどのように作動しますか ?原稿用紙(どおりhttps://cs.stanford.edu/~quocle/paragraph_vector.pdf)我々は、ランダムに初期化する2つのウェイト行列有するのすべての列または行Word2Vecから同じマトリックスでありますワードベクトルとにマップD ∈ R M × Rの各列または行が文/文書にマップ文書行列です。トレーニング中に、固定ウィンドウkサイズのsoftmax分類器が(ファッションのような移動ウィンドウで)移動して、次の対数尤度(マルチクラスクロスエントロピー)を最小化します。W∈ RN× PD ∈ RM× Rk
1M∑i = 1M1| D私|∑t = k| Di − 1| −kL O G(p (w私t| w私t − k、。。。、w私t + k、D私))
ここで、はi t h文を表すベクトルに対応します。D i | そのドキュメント内の単語数とw i tはi t hドキュメント内のt t hワードです。バックプロパゲーションはすべて、現在ウィンドウ化されたソフトマックスを移動しているドキュメントであり、そのウィンドウ内の単語とともにマトリックスD内のその行のみを更新します。D私私t h| D私|w私ttt h私t hD
さらに、トレーニングセットにないものを推測する場合は、を修正して更新されないようにし、新しいランダムに初期化された行で行列Dを拡張し、(推定されたベクトルの埋め込みを保持する新しい行で)いくつかの反復でトレーニングします。これは質問2につながります。WD
- 目に見えない可能性のある文がトレーニングセット内の文に正確に対応していると推測できますか?
短い答えはノーであり、これはDoc2Vecの目的ではありません。ランダムな初期化+収束とトレーニングの複雑さのために、推論されたベクトルは対応するベクトルとまったく同じになることはありません。これが、Gensimがこれをサポートする関数を組み込んでいない理由です。訓練されたこれらの2つのベクトルは互いに任意に近いはずです。したがって、これらは非常に似ていると結論付けることができます。D
ランダムシードを修正しても機能しない場合がありますが、収束に影響する可能性のある他の変数が非常に多くあります。https://github.com/RaRe-Technologies/gensim/issues/374の最初の回答を参照してください。
いずれの場合でも、トレーニングセットを反復処理し、類似度を推定ベクトルと比較するだけで、データセット内で推定文と最も類似したラベルを見つけることができます。しかし、なぜトレーニングセットの何かと完全に一致させたいのでしょうか?これが、これらのドキュメントの埋め込みを目的とした正規表現とは、教師ありまたは教師なしの学習タスク(つまり、分類とクラスタリング)のことです。