質問: doc2vecについて調べています。gensimのdoc2vecのtutorialを試しました。 https://github.com/RaRe-Technologies/gensim/blob/develop/docs/notebooks/doc2vec-lee.ipynb doc2vecの論文も斜め読みしました。 https://cs.stanford.edu/~quocle/paragraph_vector.pdf doc2vecは、訓練データ(コーパス)内にある単語をone-hot vectorにし、それをモデルを入力し、モデルにパラメータを学習させるものだと思っています。 しかし、学習後のモデルにコーパスにない単語を入力したいときはどうすれば良いのでしょうか。その単語は、訓練時に定めたone-hot vectorでは表現できないように思います。 (訓練外の単語を入力することが可能かどうかについては、可能ということはわかっています。論文にもそう書いてありましたし、gensimのmodel.infervector()でもなにかしらのベクトルが得られました。しかし、なぜ可能かを僕は理解できていないません。) どなたかヒントを与えていただけると幸いです。 読んでいただきありがとうございました。
回答: `doc2vec`触ったことない機械学習初心者ですが、ほぼ同じ内容と思われる質問を見つけました。 How word2vec can be used to identify unseen words and relate them to already trained data 以下は意訳です。間違っていたらすみません。 * 未知の単語を含めて再訓練が自然な解決法である。 * その方法がとれないなら、未知の単語を「子猫」→「子」「猫」など音節や文字に再分割して解く ちなみに未知な単語についての`infer_vector()`が何を返す(表す)か?ですが Doc2Vec infer_vector() could (as option?) offer deterministic result #447 をななめ読みした限り、ランダムな値を返すようです。 つまり私には何を返しているのかさっぱり分かりません。