「Doc2Vecによる文書ベクトル推論の安定化について」を書きました。
https://buildersbox.corp-sansan.com/entry/2019/04/10/110000
先日までインターンでお世話になっていたSansan株式会社のDSOCという部署で,テックブログを書きましたのでここでも共有しておきます。
Doc2Vecを使った教師なし文書分類:日本語Wikipediaで学習済みのDoc2Vecモデルを利用し,Livedoorニュースコーパス(Sports Watch)の記事に対して,任意のラベル(野球・サッカー・バスケ等)をアノテーションなしで推定する手法を実装・検証した。文書ベクトルと単語ベクトルを同一空間上でコサイン類似度比較することで分類を実現している。
infer_vector() の安定性検証:Doc2Vec.infer_vector() は呼び出すたびに結果が変わるという問題がある。内部でミニ学習が走るため,epochs パラメータ(デフォルト=5)の値が精度・安定性に直結する。同一文書に対して2度推論を行い100試行でのコサイン類似度の平均・分散を測定する実験を複数の文書長を対象に実施した結果,以下の知見が得られました。
epochsを増やすほどコサイン類似度が1に近づき安定性も向上するepochs=30前後でコサイン類似度0.99を超え,それ以降は効果が緩やか- 短い文書ほど安定化に多くの
epochsが必要。50単語以上あればデフォルトの5よりやや多め(30程度)で十分安定する - 結論:文書長に応じて
epochs=20〜50程度に設定するのが実用上有効
詳細は Doc2Vecによる文書ベクトル推論の安定化について - Sansan Builders Box と実験リポジトリをご確認ください。
https://github.com/atsukoba/LabelEstimator