anobiidae's blog

個人的に自然言語処理とかに関して、調べ物したもののメモとかを残す場所。

FastLDAまとめ

  • 文書ごとにtopicはどうせ最後は集中するでしょ? だったら、0~K全部のtopicを順番に見なくてもいいじゃない。どうせ大体外れると。
  • だったら、indx[Document][seq] にtopic参照すべき順番を入れておきましょう。例えば、t=3になる文章ならば、indx[] = { 3,0,1,2,4,5,6,7 }とかになってれば、最初だけ見ればZの更新計算の手間省けるじゃん!
  • じゃあ、Z = Z1+Z2+Z3+... でトータル求める処理もやめたいでござる。Zp =  probs[t_] + sqrt(aa*bb) * fac の後ろの項使って それ以後のZnの合計を代用しよう。

こんな感じかなー。例えばtopic数がKだった場合に、Kを決定するコストが

全体のZ算出の計算量がO(K)でconstantだったと。それがFastLDAならば(最終的には)O(1)というか最初にどっかーんと大当たりする、という感じになると。特に計算後半はかなり高速化できそう。

 

実装もできなくともないけど、ちょい手間かなー。簡易版にするならばいいかもしれないけど。