2014/05/23 (Fri.)
    話題のParagraph Vectorを自分のモデルの中で実装して, 数百万文のベクトル表現を教師無しで学習しようとしたが, ぜんぜん上手くいかない. 単語ベクトルに比べてSentence Vectorのアップデート回数が圧倒的に少ないからだろうか.

論文: http://cs.stanford.edu/~quocle/paragraph_vector.pdf

(2014/08/13 (Wed.) 追記)
上記は嘘、Paragraph Vectorけっこう使えるかも.

(2014/08/21 (Thu.) 追記)
仮稼働のWikipediaの記事検索のデモはこちら

(2014/09/18 (Thu.) 追記)
sentence2vecというものがあるらしいですが, 現状では簡単なほうのモデル (語順を考慮しないモデル) が実装されているみたいなので, 注意が必要です. 語順を考慮しなければBag-of-Wordsより良い強い理由はありません.

(2014/11/06 (Thu.) 追記)
実装を晒しました. -> リンク

(2014/12/16 (Tue.) 追記)
githubに微妙にアクセス& cloneされているみたいなので, 少しずつダメなところを改善していきます. マルチスレッド対応, 学習率の調整などでしょうか. 暇があれば階層ソフトマックスも実装するかもしれません. そもそも, この程度の実装にEigenを使う意味があるのかどうかも調べたほうがいいのではないだろうか...? 実はword2vecのように普通に配列を使って実装してもたいして変わらなかったりして.

(2014/12/22 (Mon.) 追記)
クリティカルな質問が来たのでgensimを少し読みました.
Q: gensimのparagraph vectorと何が違いますか? gensim使えばよくないですか?
A: たしかにそうでs...ではなくて, gensimを読んでみたら, PV-DMの学習時に文脈語のベクトルを平均して使っていました. 自分のコードは元の論文で推奨されている通りに, 文脈語を連結しています. 違いがわからない場合には論文を読んでください. 学習時間は当然長くなります. gensimでは階層ソフトマックスも実装されています. 多少の違いはありますが, 結局, 自分で実装して遊ぶのが一番楽しいと思います.

(2014/12/23 (Tue.) 追記)
マルチスレッド対応, 学習率の調整を実装しました.

(2015/01/01 (Thu.) 追記)
新年早々, 致命的な欠点が判明しました. 学習データで学習した後に, 未知のparagraph (例えば, テストデータのparagraphなど) を学習できるようになっていませんでした. 近日中に実装追加しようと思います.