PyDataTokyo201-05-22

14
PYDATA TOKYO 2015-05-22 LDA IN PYTHON 1 Wednesday, June 3, 15

Transcript of PyDataTokyo201-05-22

Page 1: PyDataTokyo201-05-22

PYDATA TOKYO2015-05-22

LDA IN PYTHON

1

Wednesday, June 3, 15

Page 2: PyDataTokyo201-05-22

WHO•バクフー株式会社 柏野 雄太

•大規模リアルタイムデータのPPPP (P4)

• preprocess /process /persistence /providing

Wednesday, June 3, 15

Page 3: PyDataTokyo201-05-22

WHAT IS LDA

• Latent Dirichlet Allocation

•文章群から教師なしで「トピック」を探し出す

•トピック:複数単語のまとまり

•トピックは単語の分布関数を持つ

•文章はトピックの分布関数を持つ

w

ww

ww

w

w1 w2 w3 w4

�k

k1

トピック毎単語分布

z1 z2 z3

ww

wwww

z1z2

✓d

ドキュメント毎トピック分布

Wednesday, June 3, 15

Page 4: PyDataTokyo201-05-22

WHAT IS LDA

•グラフィカルモデル

�✓d zd,i wd,i �kN K

M

zd,i ⇠ Multi(✓d)

wd,i ⇠ Multi(�zd,i) �k ⇠ Dirichlet(�)

✓d ⇠ Dirichlet(↵)

z1 z2 z3ww w

w

w

w

wwww

z1z2

✓d

ドキュメント毎トピック分布

w

ww

ww

w

w1 w2 w3 w4

�k

k1

トピック毎単語分布

Wednesday, June 3, 15

Page 5: PyDataTokyo201-05-22

WHAT IS LDA•何をするの?

w1 w2 w3 w4 w5 w6

w7 w8...LDA

w

ww

ww

ww

w

w

ww

w ww

w

w

w

ww

ww

w

w w

w

ww

w w

ww

w

w

ww

ww

w

w1 w2 w3 w4

�k

k1

k2k1

k3k4

z1 z2 z3

www w

w

w

w

wwww

z1z2

✓d

単語をトピック別にクラスタリング

トピック毎単語分布

ドキュメント毎トピック分布ドキュメント群

Wednesday, June 3, 15

Page 6: PyDataTokyo201-05-22

WHAT IS LDA•パイプライン

w1 w2 w3 w4 w5 w6

w7 w8...LDA

w

ww

ww

ww

w

w

ww

w ww

w

w

w

ww

ww

w

w w

w

ww

w w

ww

w

w

ww

ww

w

w1 w2 w3 w4

�k

k1

k2k1

k3k4

z1 z2 z3

www w

w

w

w

wwww

z1z2

✓d

単語をトピック別にクラスタリング

トピック毎単語分布

ドキュメント毎トピック分布ドキュメント群

tokenize vectorizing modeling

word dictionary corpus BoW

Variational Bayes

Gibbs sampling

word id: word1: 政治2: 自民3: 総理

[(word id, freq)…][(1, 2), (3, 2), …][(1, 19), (4, 1), …]...

Wednesday, June 3, 15

Page 7: PyDataTokyo201-05-22

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

Page 8: PyDataTokyo201-05-22

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

Page 9: PyDataTokyo201-05-22

LDA IN PYTHON 3/7

• gensim

• http://radimrehurek.com/gensim/

• Hoffman+のpython版オンラインLDAをラッピング, LSIも実装している

• Pyroによる分散処理が可能

•基本遅い.辞書・コーパスを更新できない

Wednesday, June 3, 15

Page 10: PyDataTokyo201-05-22

LDA IN PYTHON 4/7

• Vowpal_Wabbit /w pyvw

• Hoffman自身がonlineldavb.pyをC++で実装

•激速い

• pyvw経由でpythonから使える

•ただin/outのファイルが特殊

Wednesday, June 3, 15

Page 11: PyDataTokyo201-05-22

LDA IN PYTHON 5/7

• lda

• http://pythonhosted.org/lda/

• scikit-learnライクなインタフェース

• collapsed Gibbsサンプリング

•野良LDA的…

Wednesday, June 3, 15

Page 12: PyDataTokyo201-05-22

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

Page 13: PyDataTokyo201-05-22

LDA IN PYTHON 7/7

•大量の野良実装

•自分も辞書・コーパスを更新できるオンラインLDA

を実装

• https://bitbucket.org/yutakashino/nhkssf4w/src/cd1ffc7f46ce/streamlda/?at=master

Wednesday, June 3, 15

Page 14: PyDataTokyo201-05-22

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