狠狠撸

狠狠撸Share a Scribd company logo
PYDATA TOKYO
2015-05-22
LDA IN PYTHON
1
Wednesday, June 3, 15
WHO
? バクフー株式会社?柏野 雄太
? 大規模リアルタイムデータのPPPP (P4)
? preprocess /process /persistence /providing
Wednesday, June 3, 15
WHAT IS LDA
? Latent Dirichlet Allocation
? 文章群から教師なしで「トピック」を探し出す
? トピック:複数単語のまとまり
? トピックは単語の分布関数を持つ
? 文章はトピックの分布関数を持つ
w
w
w
w
w
w
w1 w2 w3 w4
k
k1
トピック毎単語分布
z1 z2 z3
w
w
w
w
w
w
z1
z2
?d
ドキュメント毎トピック分布
Wednesday, June 3, 15
WHAT IS LDA
? グラフィカルモデル
?d zd,i wd,i k
N K
M
zd,i ? Multi(?d)
wd,i ? Multi( zd,i
) k ? Dirichlet( )
?
?d ? Dirichlet(?)
z1 z2 z3
w
w
w
w
w
w
w
w
w
w
z1
z2
?d
ドキュメント毎トピック分布
w
w
w
w
w
w
w1 w2 w3 w4
k
k1
トピック毎単語分布
Wednesday, June 3, 15
WHAT IS LDA
? 何をするの?
w1 w2
w3 w4
w5 w6
w7 w8...
LDA
w
w
w
w
w
w
w
w
w
w
w
w w
w
w
w
w
w
w
w
w
w
w w
w
w
w
w w
w
w
w
w
w
w
w
w
w
w1 w2 w3 w4
k
k1
k2
k1
k3k4
z1 z2 z3
w
w
w
w
w
w
w
w
w
w
w
z1
z2
?d
単語をトピック別にクラスタリング
トピック毎単語分布
ドキュメント毎トピック分布
ドキュメント群
Wednesday, June 3, 15
WHAT IS LDA
? パイプライン
w1 w2
w3 w4
w5 w6
w7 w8...
LDA
w
w
w
w
w
w
w
w
w
w
w
w w
w
w
w
w
w
w
w
w
w
w w
w
w
w
w w
w
w
w
w
w
w
w
w
w
w1 w2 w3 w4
k
k1
k2
k1
k3k4
z1 z2 z3
w
w
w
w
w
w
w
w
w
w
w
z1
z2
?d
単語をトピック別にクラスタリング
トピック毎単語分布
ドキュメント毎トピック分布
ドキュメント群
tokenize vectorizing modeling
word
dictionary
corpus BoW
Variational
Bayes
Gibbs
sampling
word id: word
1: 政治
2: 自民
3: 総理
[(word id, freq)…]
[(1, 2), (3, 2), …]
[(1, 19), (4, 1), …]
...
Wednesday, June 3, 15
LDA IN PYTHON 1/7
? lda-c Blei et al. 2003
? https://www.cs.princeton.edu/~blei/lda-c/
index.html
? 実装: C
? モデル: 変分ベイズ
? 全ての始まり?コーパス固定/辞書固定
Wednesday, June 3, 15
LDA IN PYTHON 2/7
? onlineldavb.py Hoffman et al. 2010
? http://www.cs.princeton.edu/~blei/
downloads/onlineldavb.tar
? model: 変分ベイズEM
? オンラインLDA
? メモリ効率はいいが,遅い.
Wednesday, June 3, 15
LDA IN PYTHON 3/7
? gensim
? http://radimrehurek.com/gensim/
? Hoffman+のpython版オンラインLDAをラッピン
グ, LSIも実装している
? Pyroによる分散処理が可能
? 基本遅い.辞書?コーパスを更新できない
Wednesday, June 3, 15
LDA IN PYTHON 4/7
? Vowpal_Wabbit /w pyvw
? Hoffman自身がonlineldavb.pyをC++で実装
? 激速い
? pyvw経由でpythonから使える
? ただin/outのファイルが特殊
Wednesday, June 3, 15
LDA IN PYTHON 5/7
? lda
? http://pythonhosted.org/lda/
? scikit-learnライクなインタフェース
? collapsed Gibbsサンプリング
? 野良LDA的…
Wednesday, June 3, 15
LDA IN PYTHON 6/7
? dato graphlab
? https://dato.com/products/create/docs/
generated/graphlab.topic_model.create.html
? C++ /w pythonインタフェース
? collapesed Gibbsサンプリング
? graphlabの仕組みで並列化できる
Wednesday, June 3, 15
LDA IN PYTHON 7/7
? 大量の野良実装
? 自分も辞書?コーパスを更新できるオンラインLDA
を実装
? https://bitbucket.org/yutakashino/nhkssf4w/
src/cd1ffc7f46ce/streamlda/?at=master
Wednesday, June 3, 15
LDA IN X
? MALLET (Java): 階層LDAもある
? Stanford Topic Modeling Toolbox (scala): LDA
and Labeled LDA, Excelから使える
? Wang&Blei 2009 class-slda (c++)
? GibbsLDA ++ (c++)
? Multithreaded LDA (c)
? ...
Wednesday, June 3, 15

More Related Content

PyDataTokyo201-05-22

  • 1. PYDATA TOKYO 2015-05-22 LDA IN PYTHON 1 Wednesday, June 3, 15
  • 2. WHO ? バクフー株式会社?柏野 雄太 ? 大規模リアルタイムデータのPPPP (P4) ? preprocess /process /persistence /providing Wednesday, June 3, 15
  • 3. WHAT IS LDA ? Latent Dirichlet Allocation ? 文章群から教師なしで「トピック」を探し出す ? トピック:複数単語のまとまり ? トピックは単語の分布関数を持つ ? 文章はトピックの分布関数を持つ w w w w w w w1 w2 w3 w4 k k1 トピック毎単語分布 z1 z2 z3 w w w w w w z1 z2 ?d ドキュメント毎トピック分布 Wednesday, June 3, 15
  • 4. WHAT IS LDA ? グラフィカルモデル ?d zd,i wd,i k N K M zd,i ? Multi(?d) wd,i ? Multi( zd,i ) k ? Dirichlet( ) ? ?d ? Dirichlet(?) z1 z2 z3 w w w w w w w w w w z1 z2 ?d ドキュメント毎トピック分布 w w w w w w w1 w2 w3 w4 k k1 トピック毎単語分布 Wednesday, June 3, 15
  • 5. WHAT IS LDA ? 何をするの? w1 w2 w3 w4 w5 w6 w7 w8... LDA w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w1 w2 w3 w4 k k1 k2 k1 k3k4 z1 z2 z3 w w w w w w w w w w w z1 z2 ?d 単語をトピック別にクラスタリング トピック毎単語分布 ドキュメント毎トピック分布 ドキュメント群 Wednesday, June 3, 15
  • 6. WHAT IS LDA ? パイプライン w1 w2 w3 w4 w5 w6 w7 w8... LDA w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w w1 w2 w3 w4 k k1 k2 k1 k3k4 z1 z2 z3 w w w w w w w w w w w z1 z2 ?d 単語をトピック別にクラスタリング トピック毎単語分布 ドキュメント毎トピック分布 ドキュメント群 tokenize vectorizing modeling word dictionary corpus BoW Variational Bayes Gibbs sampling word id: word 1: 政治 2: 自民 3: 総理 [(word id, freq)…] [(1, 2), (3, 2), …] [(1, 19), (4, 1), …] ... Wednesday, June 3, 15
  • 7. LDA IN PYTHON 1/7 ? lda-c Blei et al. 2003 ? https://www.cs.princeton.edu/~blei/lda-c/ index.html ? 実装: C ? モデル: 変分ベイズ ? 全ての始まり?コーパス固定/辞書固定 Wednesday, June 3, 15
  • 8. LDA IN PYTHON 2/7 ? onlineldavb.py Hoffman et al. 2010 ? http://www.cs.princeton.edu/~blei/ downloads/onlineldavb.tar ? model: 変分ベイズEM ? オンラインLDA ? メモリ効率はいいが,遅い. Wednesday, June 3, 15
  • 9. LDA IN PYTHON 3/7 ? gensim ? http://radimrehurek.com/gensim/ ? Hoffman+のpython版オンラインLDAをラッピン グ, LSIも実装している ? Pyroによる分散処理が可能 ? 基本遅い.辞書?コーパスを更新できない Wednesday, June 3, 15
  • 10. LDA IN PYTHON 4/7 ? Vowpal_Wabbit /w pyvw ? Hoffman自身がonlineldavb.pyをC++で実装 ? 激速い ? pyvw経由でpythonから使える ? ただin/outのファイルが特殊 Wednesday, June 3, 15
  • 11. LDA IN PYTHON 5/7 ? lda ? http://pythonhosted.org/lda/ ? scikit-learnライクなインタフェース ? collapsed Gibbsサンプリング ? 野良LDA的… Wednesday, June 3, 15
  • 12. LDA IN PYTHON 6/7 ? dato graphlab ? https://dato.com/products/create/docs/ generated/graphlab.topic_model.create.html ? C++ /w pythonインタフェース ? collapesed Gibbsサンプリング ? graphlabの仕組みで並列化できる Wednesday, June 3, 15
  • 13. LDA IN PYTHON 7/7 ? 大量の野良実装 ? 自分も辞書?コーパスを更新できるオンラインLDA を実装 ? https://bitbucket.org/yutakashino/nhkssf4w/ src/cd1ffc7f46ce/streamlda/?at=master Wednesday, June 3, 15
  • 14. LDA IN X ? MALLET (Java): 階層LDAもある ? Stanford Topic Modeling Toolbox (scala): LDA and Labeled LDA, Excelから使える ? Wang&Blei 2009 class-slda (c++) ? GibbsLDA ++ (c++) ? Multithreaded LDA (c) ? ... Wednesday, June 3, 15