Slide 1

Slide 1 text

トピックモデルでテキストを クラスタリングしてみた Oisix・機械学習勉強会 in 東京

Slide 2

Slide 2 text

ࣗݾ঺հ 2016年11月 カラビナ入社 趣味:筋トレ・登山 プログラミング歴1年 大学の専攻は化学 ௽ా !UTVSVCFFʣ

Slide 3

Slide 3 text

今回のゴール

Slide 4

Slide 4 text

ニュース記事をいい感じ にカテゴライズしたい!

Slide 5

Slide 5 text

どう達成する?

Slide 6

Slide 6 text

機械学習を使う ってことは ディープラーニングね!

Slide 7

Slide 7 text

機械学習はディープ ラーニングだけじゃない

Slide 8

Slide 8 text

これ!やってみよう!

Slide 9

Slide 9 text

トピックモデルとは? ある文章は複数のトピックを持つと仮定 そのトピックを抽出するモデル

Slide 10

Slide 10 text

文書データ トピック抽出 政治・経済 スポーツ 科学・技術 国会 内閣 GDP アジア 民主主義 安全保障 不景気 民主党 野球 サッカー ゴール 優勝 ボール オリンピック 練習 怪我 人工知能 IoT 進化 スマホ 通信 ノーベル賞 法則 自然現象 イメージ

Slide 11

Slide 11 text

なんだ!単純そうだ! よゆー( ^∀^) じゃなかった・・・・orz

Slide 12

Slide 12 text

ディリクレ分布・カテゴリ分布・ ユニグラムモデル・混合ユニグ ラムモデル・最尤推定・ベイズ 推定・EMアルゴリズム・変分ベ イズ・ギブスサンプリング・ラグ ランジュの未定乗数法・特異 値分解・潜在意味解析(LSA) ・ 潜在ディリクレ配分法(LDA)

Slide 13

Slide 13 text

ちゃんと勉強します

Slide 14

Slide 14 text

開発環境 言語 : Python 3.5.2 Anaconda 4.2.0 (x86_64) ライブラリ : gensim 0.13.4 マシン : MacBook Pro プロセッサ:2.9 GHz Intel Core i5 メモリ:16 GB

Slide 15

Slide 15 text

ワークフロー 1.データ(文書群)を用意する 2.文書を単語に分ける (形態素解析) 3.単語辞書を定義 4.文書のベクトル化 (bag of words) 5.LDAのモデルに投入

Slide 16

Slide 16 text

1.データ(文書群)を用意する IT関連・スポーツ記事を500ずつ http://headlines.yahoo.co.jp/rss/list

Slide 17

Slide 17 text

2.文書を単語に分ける (形態素解析) オープンソース形態素解析エンジンMeCabを使う 辞書がかなり重要!

Slide 18

Slide 18 text

3.単語辞書を定義 import gensim dictionary = gensim.corpora.Dictionary(docs) dictionary.filter_extremes(no_below=1, no_above=0.6) 出力形式 word_id word frequency 1382 人工知能 6 1383 人間 4 1384 人 8 ・ ・ ・ データの前処理 単語の出現が1文書以下のとき or 単語が60%以上の文書に登場したとき 除外

Slide 19

Slide 19 text

4.文書のベクトル化 (bag of words) corpus = [dictionary.doc2bow(doc) for doc in docs] 出力形式 ・ ・ ・ doc_id word_id frequency 5 1382 5 5 1395 2 5 1402 1 5 1405 3 辞書の単語数次元のベクトルに変換 単語の順序は無視(文脈は加味しない)

Slide 20

Slide 20 text

5.LDAのモデルに投入 lda = gensim.models.LdaModel(corpus=corpus, id2word=dictionary, num_topics=10) 結果①各トピックの単語分布 結果②各ドキュメントのトピック分布 [(0, 0.0011494875610395532), (1, 0.0011495216687281548), (2, 0.0011496757886118457), (3, 0.0011495369772548966), (4, 0.0011494898792352231), (5, 0.0011495350667500301), (6, 0.0011494309427501576), (7, 0.0011495365332948294), (8, 0.0011494727694675608), (9, 0.98965431281286775)] topic_0: [('機能', 0.012867980011525922), ('情報', 0.012866562485143618), ('参加', 0.012864776822333324), ('組織', 0.01286474405616749), ('サービス', 0.0097301626205478289), ('提供', 0.009729611435667529), ('日立', 0.0097275009231823951), ('情報共有', 0.0097274642885800313), ('サイバー攻撃', 0.0097273991777577958), ('コミュニティ', 0.0097272270792)]

Slide 21

Slide 21 text

LDAってなに? Latent Dirichlet Allocation 潜在的ディリクレ配分法

Slide 22

Slide 22 text

ちょっとイメージだけ・・ LDAは、文書集合の潜在トピック 座標単体上への射影である。

Slide 23

Slide 23 text

music game play LDAの幾何学的解釈(3単語しかない世界) play game music 文書Aにおける単語分布 play game music 文書Bにおける単語分布 単語座標単体 各文書は単語座標 単体上の座標 基底ベクトルは単語分布 潜在トピック座標単体 文書d 文書を単語空間(3次元)からより低次元の トピック空間(2次元)へ射影している 分布に偏りがある ∅1 ∅2

Slide 24

Slide 24 text

Topic0 Topic1 Topic2 Topic3 Topic4 孫社長 ドル Google 充電 AQUOS PHONE 孫正義 売上高 ロゴ 画面 スマホ 発言 増 トップページ Excel ドコモ 孫 違法コピー AI クリック スタンダード Twitter プラチナバンド 検索 タブ ARROWS つぶやき サウンド 友達 Word GALAXY S 投資 株 ZOTAC iQON IQ ソフトバンク グループ 騎手 GeForce GTX 表示 澤 活発 宇佐美 不審 虎の巻 坂田 各トピックの単語分布(Topic0〜4)

Slide 25

Slide 25 text

Topic5 Topic6 Topic7 Topic8 Topic9 投資 アプリ 格闘技 ホームラン 監督 ダル 機能 武田 長谷部 氏 ガッツポーズ 技術 K-1 坂本 選手 筆記体 バッテリー ニコニコ町会議 チップ 試合 井端 対応 戦国 キャッチャー やる 浮気 搭載 SUPP 川島 日本代表 ドーピング 容量 違法コピー 修正 W杯 複利 通信 プロレス K−1 サッカー XPS 募集 プラチナバンド ZALMAN チーム 各トピックの単語分布(Topic5〜9)

Slide 26

Slide 26 text

各ドキュメントのトピック分布 Topic Number Distribution 0 0.000301217 1 0.000301208 2 0.818409556 3 0.000301233 4 0.010190877 5 0.000301223 6 0.163988078 7 0.000301223 8 0.005604168 9 0.000301214

Slide 27

Slide 27 text

クラスタリングできた? もう1ステップ!

Slide 28

Slide 28 text

Kmeansでクラスタリング vec_list = [] for n in range(len(corpus)): vec_list.append([lda[corpus[n]][i][1] for i in range(10)]) result = KMeans(n_clusters=10).fit_predict(vec_list) ・AIで合併症リスクを予測、NTTデータがスペインで実証実験を開始 ・AI記者がニュース原稿作成、NTTデータが実証実験 ・“IoT熱”は一段落? 本命はAIか ・AI記者が気象ニュース原稿を作成する実証実験--NTTデータが実施 ・HTCのハードウェア責任者がGoogleの「Daydream」チームに ・グーグル、「Daydream」アプリの配信をすべての開発者に開放 etc. ・ 2年ぶり復帰の鈴木軍が大暴れ みのるがオカダを圧倒=新日本 ・ IWGP王者ヒロム失態…ドラゴン・リー襲撃も返り討ち=新日本 ・キングス3連敗 Bリーグ、地元沖縄で新潟に74-82 ・千葉が川崎を下して初の日本一 = 全日本バスケ ・大仁田がカシンに王道マットでの電流爆破マッチ提案 etc. AI関連 スポーツ関連

Slide 29

Slide 29 text

͝ਗ਼ௌ͋Γ͕ͱ͏ ͍͟͝·ͨ͠ʂ