SlideShare uma empresa Scribd logo
1 de 28
トピックモデルでテキストを
クラスタリングしてみた
Oisix・機械学習勉強会 2017年1月30日
今回のゴール
ニュース記事をいい感じ
にカテゴライズしたい!
どう達成する?
機械学習を使う
ってことは
ディープラーニングね!
機械学習はディープ
ラーニングだけじゃない
これ!やってみよう!
トピックモデルとは?
ある文章は複数のトピックを持つと仮定
そのトピックを抽出するモデル
文書データ
トピック抽出
政治・経済 スポーツ 科学・技術
国会
内閣
GDP
アジア
民主主義
安全保障
不景気
民主党
野球
サッカー
ゴール
優勝
ボール
オリンピック
練習
怪我
人工知能
IoT
進化
スマホ
通信
ノーベル賞
法則
自然現象
イメージ
なんだ!単純そうだ!
よゆー( ^∀^)
じゃなかった・・・・orz
ディリクレ分布・カテゴリ分布・
ユニグラムモデル・混合ユニグ
ラムモデル・最尤推定・ベイズ
推定・EMアルゴリズム・変分ベ
イズ・ギブスサンプリング・ラグ
ランジュの未定乗数法・特異
値分解・潜在意味解析(LSA) ・
潜在ディリクレ配分法(LDA)
諦めて勉強します
開発環境
言語 : Python 3.5.2
Anaconda 4.2.0 (x86_64)
ライブラリ : gensim 0.13.4
マシン : MacBook Pro
プロセッサ:2.9 GHz Intel Core i5
メモリ:16 GB
ワークフロー
1.データ(文書群)を用意する
2.文書を単語に分ける (形態素解析)
3.単語辞書を定義
4.文書のベクトル化 (bag of words)
5.LDAのモデルに投入
1.データ(文書群)を用意する
IT関連・スポーツ記事を500ずつ
http://headlines.yahoo.co.jp/rss/list
2.文書を単語に分ける (形態素解析)
オープンソース形態素解析エンジンMeCabを使う
辞書がかなり重要!
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%以上の文書に登場したとき
除外
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
辞書の単語数次元のベクトルに変換
単語の順序は無視(文脈は加味しな
い)
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)]
LDAってなに?
Latent Dirichlet Allocation
潜在的ディリクレ配分法
ちょっとイメージだけ・・
LDAは、文書集合の潜在トピック
座標単体上への射影である。
music
game play
LDAの幾何学的解釈(3単語しかない世界)
play game music
文書Aにおける単語分布
play game music
文書Bにおける単語分布
単語座標単体
各文書は単語座標
単体上の座標
基底ベクトルは単語分布
潜在トピック座標単体
文書d
文書を単語空間(3次元)からより低次元
のトピック空間(2次元)へ射影している
分布に偏りがある
∅1
∅2
Topic0 Topic1 Topic2 Topic3 Topic4
孫社長 ドル Google 充電 AQUOS PHONE
孫正義 売上高 ロゴ 画面 スマホ
発言 増 トップページ Excel ドコモ
孫 違法コピー AI クリック スタンダード
Twitter プラチナバンド 検索 タブ ARROWS
つぶやき サウンド 友達 Word GALAXY S
投資 株 ZOTAC iQON IQ
ソフトバンク
グループ
騎手 GeForce GTX 表示 澤
活発 宇佐美 不審 虎の巻 坂田
各トピックの単語分布(Topic0〜4)
Topic5 Topic6 Topic7 Topic8 Topic9
投資 アプリ 格闘技 ホームラン 監督
ダル 機能 武田 長谷部 氏
ガッツポーズ 技術 K-1 坂本 選手
筆記体 バッテリー ニコニコ町会議 チップ 試合
井端 対応 戦国 キャッチャー やる
浮気 搭載 SUPP 川島 日本代表
ドーピング 容量 違法コピー 修正 W杯
複利 通信 プロレス K−1 サッカー
XPS 募集 プラチナバンド ZALMAN チーム
各トピックの単語分布(Topic5〜9)
各ドキュメントのトピック分布
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
クラスタリングできた?
もう1ステップ!
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データが実施
・Alphabet(Googleの親会社)、“その他”部門の営業損失10億ドルで利益
が予測に届かず
・HTCのハードウェア責任者がGoogleの「Daydream」チームに
・グーグル、「Daydream」アプリの配信をすべての開発者に開放 etc.
・ 2年ぶり復帰の鈴木軍が大暴れ みのるがオカダを圧倒=新日本
・ IWGP王者ヒロム失態…ドラゴン・リー襲撃も返り討ち=新日本
・ 【新日本・後楽園】みのる大胆予告!新日の全ベルト強奪
・キングス3連敗 Bリーグ、地元沖縄で新潟に74-82
・千葉が川崎を下して初の日本一 = 全日本バスケ
・大仁田がカシンに王道マットでの電流爆破マッチ提案 etc.

Mais conteúdo relacionado

Mais procurados

最近のDeep Learning (NLP) 界隈におけるAttention事情
最近のDeep Learning (NLP) 界隈におけるAttention事情最近のDeep Learning (NLP) 界隈におけるAttention事情
最近のDeep Learning (NLP) 界隈におけるAttention事情Yuta Kikuchi
 
Word2vecの並列実行時の学習速度の改善
Word2vecの並列実行時の学習速度の改善Word2vecの並列実行時の学習速度の改善
Word2vecの並列実行時の学習速度の改善Naoaki Okazaki
 
[DL輪読会]Grokking: Generalization Beyond Overfitting on Small Algorithmic Datasets
[DL輪読会]Grokking: Generalization Beyond Overfitting on Small Algorithmic Datasets[DL輪読会]Grokking: Generalization Beyond Overfitting on Small Algorithmic Datasets
[DL輪読会]Grokking: Generalization Beyond Overfitting on Small Algorithmic DatasetsDeep Learning JP
 
【DL輪読会】High-Resolution Image Synthesis with Latent Diffusion Models
【DL輪読会】High-Resolution Image Synthesis with Latent Diffusion Models【DL輪読会】High-Resolution Image Synthesis with Latent Diffusion Models
【DL輪読会】High-Resolution Image Synthesis with Latent Diffusion ModelsDeep Learning JP
 
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリングmlm_kansai
 
fastTextの実装を見てみた
fastTextの実装を見てみたfastTextの実装を見てみた
fastTextの実装を見てみたYoshihiko Shiraki
 
協調フィルタリング入門
協調フィルタリング入門協調フィルタリング入門
協調フィルタリング入門hoxo_m
 
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)RyuichiKanoh
 
ベータ分布の謎に迫る
ベータ分布の謎に迫るベータ分布の謎に迫る
ベータ分布の謎に迫るKen'ichi Matsui
 
優れた研究論文の書き方―7つの提案
優れた研究論文の書き方―7つの提案優れた研究論文の書き方―7つの提案
優れた研究論文の書き方―7つの提案Masanori Kado
 
推薦アルゴリズムの今までとこれから
推薦アルゴリズムの今までとこれから推薦アルゴリズムの今までとこれから
推薦アルゴリズムの今までとこれからcyberagent
 
【DL輪読会】Scaling Laws for Neural Language Models
【DL輪読会】Scaling Laws for Neural Language Models【DL輪読会】Scaling Laws for Neural Language Models
【DL輪読会】Scaling Laws for Neural Language ModelsDeep Learning JP
 
Statistical Semantic入門 ~分布仮説からword2vecまで~
Statistical Semantic入門 ~分布仮説からword2vecまで~Statistical Semantic入門 ~分布仮説からword2vecまで~
Statistical Semantic入門 ~分布仮説からword2vecまで~Yuya Unno
 
ベイズ統計学の概論的紹介
ベイズ統計学の概論的紹介ベイズ統計学の概論的紹介
ベイズ統計学の概論的紹介Naoki Hayashi
 
(2020.10) 分子のグラフ表現と機械学習: Graph Neural Networks (GNNs) とは?
(2020.10) 分子のグラフ表現と機械学習: Graph Neural Networks (GNNs) とは?(2020.10) 分子のグラフ表現と機械学習: Graph Neural Networks (GNNs) とは?
(2020.10) 分子のグラフ表現と機械学習: Graph Neural Networks (GNNs) とは?Ichigaku Takigawa
 
最適輸送入門
最適輸送入門最適輸送入門
最適輸送入門joisino
 
リクルート式 自然言語処理技術の適応事例紹介
リクルート式 自然言語処理技術の適応事例紹介リクルート式 自然言語処理技術の適応事例紹介
リクルート式 自然言語処理技術の適応事例紹介Recruit Technologies
 
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2Preferred Networks
 
最近のディープラーニングのトレンド紹介_20200925
最近のディープラーニングのトレンド紹介_20200925最近のディープラーニングのトレンド紹介_20200925
最近のディープラーニングのトレンド紹介_20200925小川 雄太郎
 

Mais procurados (20)

最近のDeep Learning (NLP) 界隈におけるAttention事情
最近のDeep Learning (NLP) 界隈におけるAttention事情最近のDeep Learning (NLP) 界隈におけるAttention事情
最近のDeep Learning (NLP) 界隈におけるAttention事情
 
正準相関分析
正準相関分析正準相関分析
正準相関分析
 
Word2vecの並列実行時の学習速度の改善
Word2vecの並列実行時の学習速度の改善Word2vecの並列実行時の学習速度の改善
Word2vecの並列実行時の学習速度の改善
 
[DL輪読会]Grokking: Generalization Beyond Overfitting on Small Algorithmic Datasets
[DL輪読会]Grokking: Generalization Beyond Overfitting on Small Algorithmic Datasets[DL輪読会]Grokking: Generalization Beyond Overfitting on Small Algorithmic Datasets
[DL輪読会]Grokking: Generalization Beyond Overfitting on Small Algorithmic Datasets
 
【DL輪読会】High-Resolution Image Synthesis with Latent Diffusion Models
【DL輪読会】High-Resolution Image Synthesis with Latent Diffusion Models【DL輪読会】High-Resolution Image Synthesis with Latent Diffusion Models
【DL輪読会】High-Resolution Image Synthesis with Latent Diffusion Models
 
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
 
fastTextの実装を見てみた
fastTextの実装を見てみたfastTextの実装を見てみた
fastTextの実装を見てみた
 
協調フィルタリング入門
協調フィルタリング入門協調フィルタリング入門
協調フィルタリング入門
 
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
 
ベータ分布の謎に迫る
ベータ分布の謎に迫るベータ分布の謎に迫る
ベータ分布の謎に迫る
 
優れた研究論文の書き方―7つの提案
優れた研究論文の書き方―7つの提案優れた研究論文の書き方―7つの提案
優れた研究論文の書き方―7つの提案
 
推薦アルゴリズムの今までとこれから
推薦アルゴリズムの今までとこれから推薦アルゴリズムの今までとこれから
推薦アルゴリズムの今までとこれから
 
【DL輪読会】Scaling Laws for Neural Language Models
【DL輪読会】Scaling Laws for Neural Language Models【DL輪読会】Scaling Laws for Neural Language Models
【DL輪読会】Scaling Laws for Neural Language Models
 
Statistical Semantic入門 ~分布仮説からword2vecまで~
Statistical Semantic入門 ~分布仮説からword2vecまで~Statistical Semantic入門 ~分布仮説からword2vecまで~
Statistical Semantic入門 ~分布仮説からword2vecまで~
 
ベイズ統計学の概論的紹介
ベイズ統計学の概論的紹介ベイズ統計学の概論的紹介
ベイズ統計学の概論的紹介
 
(2020.10) 分子のグラフ表現と機械学習: Graph Neural Networks (GNNs) とは?
(2020.10) 分子のグラフ表現と機械学習: Graph Neural Networks (GNNs) とは?(2020.10) 分子のグラフ表現と機械学習: Graph Neural Networks (GNNs) とは?
(2020.10) 分子のグラフ表現と機械学習: Graph Neural Networks (GNNs) とは?
 
最適輸送入門
最適輸送入門最適輸送入門
最適輸送入門
 
リクルート式 自然言語処理技術の適応事例紹介
リクルート式 自然言語処理技術の適応事例紹介リクルート式 自然言語処理技術の適応事例紹介
リクルート式 自然言語処理技術の適応事例紹介
 
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
 
最近のディープラーニングのトレンド紹介_20200925
最近のディープラーニングのトレンド紹介_20200925最近のディープラーニングのトレンド紹介_20200925
最近のディープラーニングのトレンド紹介_20200925
 

トピックモデルでテキストをクラスタリングしてみた