SlideShare a Scribd company logo
TensorFlowを使って
テキストをクラス分類してみたら
精度96.8%の分類器を
簡単に得ることができた話
2016年3月13日 第2回 尼崎Pythonの会(第3回 データ分析勉強会)
那由多屋 加藤 勇也
1
https://goo.gl/YOvdKE
https://gdgkobe.doorkeeper.jp/events/39169
2
http://goo.gl/mQHA9Y
http://www.slideshare.net/YuyaKato3/tensorflow-58795721
3
https://goo.gl/jqWc8V
https://github.com/nayutaya/20160228-gdg-kobe
4
発表内容
• 自己紹介
• 取り組んだ問題
• 実装
• 評価
5
Agenda
自己紹介
6
Self-Introduction
加藤 勇也
7
かとう ゆうや / Yuya Kato
株式会社 那由多屋
代表取締役 (2007年∼)
な ゆ た や
twitter: nayutaya
GitHub: nayutaya
Facebook: yuyakato1984
ソフトウェア開発 (2000年∼)
大分出身・神戸在住 (2006年∼)
趣味:
・ものづくり全般 (DIY、電子工作)
・3Dプリンタ (2013年∼)
・ボルダリング (2011年∼)
取り組んだ問題
8
Problem
取り組んだ問題
9
ある記事タイトルを入力した時に、
鉄道に関する記事か否かを判定する
分類器記事タイトル 鉄道 or その他
取り組んだ問題 - 具体例
10
(記事タイトルはasahi.comより引用)
“JR九州、半数以上が無人駅に
3月のダイヤ改定受け”
鉄道
“電気・ガス料金、4月値下げ
大手各社、原油安受け”
その他
実装
11
Implementation
MNIST For ML Beginners
https://www.tensorflow.org/versions/r0.7/tutorials/mnist/beginners/index.html
12
エムニスト
どうやってテキストを入力する?
13
「This is a pen.」
テキストは可変長
入力ノード数は学習時に決定入力は実数
(画像は https://www.tensorflow.org/versions/r0.7/tutorials/mnist/beginners/index.html より引用)
自然言語処理
• 単語の特徴化 / 文の特徴化
• 単語化
• 形態素解析
• N-gram言語モデル
14
NLP: Natural Language Processing
単語の特徴化 - One-hot表現
15
One-hot Representation
「This is a pen.」
This This
That
The
Thou
.
.
.
.
.
.
[]
0
0
0
1
.
.
.
.
.
.
[]
辞書
辞書と
同サイズ
の
ベクトル
文の特徴化 - Bag of Words
16
「This is a pen.」
This
is
pen
Thou
.
.
.
.
.
.
[]
a 1
1
1
1
.
.
.
.
.
.[]
0
辞書と
同サイズ
の
ベクトル
スパース(疎, スカスカ)
順序が失われる
頻度が失われる
未知語が扱えない
単語化
17
トークン化, Tokenize
「This is a pen.」
「本日は晴天なり。」
英語は分かち書き
されている
日本語は分かち書き
されていない
形態素解析
18
名詞 助詞 名詞 助動詞 補助記号
Morphological Analysis
「本日は晴天なり。」
今回は形態素解析ライブラリ「janome」を使用
形態素解析 + N-gram言語モデル
19
「本日は晴天なり。」
「本日は晴天なり。」
形態素単位
文字単位
1-gram (Unigram)
2-gram (Bigram)
3-gram (Trigram)
Morphological Analysis + N-gram language model
1-gram (Unigram)
2-gram (Bigram)
3-gram (Trigram)
評価
20
学習データ / 評価環境
• 記事タイトル約14万件
• 鉄道: 6,321件 / その他: 131,069件
• それぞれ1,000件 (計2,000件) をテストデータとして使用
• 残りを教師データとして使用
• 学習ステップ数: 500 / ミニバッチサイズ: 100
• Amazon EC2 r3.xlarge (仮想CPU: 4, メモリ: 30.5GiB)
21
評価結果 (1)
22
手法
前処理
時間
学習
時間
単語数
辞書
サイズ
モデル
サイズ
精度
文字
1-gram
0.2 min 2.0 min 2,553 9.8 KiB 20 KiB 96.8%
文字
2-gram
0.3 min 9.7 min 60,728 398 KiB 475 KiB 95.7%
文字
3-gram
0.4 min 15.0 min 95,537 868 KiB 747 KiB 90.3%
形態素
1-gram
9.3 min 5.2 min 16,846 135 KiB 132 KiB 95.9%
形態素
2-gram
11.6 min 10.8 min 56,686 575 KiB 443 KiB 87.1%
形態素
3-gram
10.9 min 5.8 min 33,030 430 KiB 258 KiB 72.9%
処理時間はCPU時間
多層パーセプトロン
23
MLP: Multi-Layer Perceptron
(画像は http://sinhrks.hatenablog.com/entry/2014/11/30/192940 より引用)
評価結果 (2)
24
手法
前処理
時間
学習
時間
単語数
辞書
サイズ
モデル
サイズ
精度
Softmax
回帰
(再掲)
0.3 min 9.7 min 60,728 398 KiB 475 KiB 95.7%
MLP
最急降下法
0.3 min 20.6 min 60,728 398 KiB 23 MiB 95.3%
MLP
Adam
0.5 min 21.9 min 60,728 398 KiB 70 MiB 95.9%
処理時間はCPU時間
評価結果
• 最もシンプルな実装(文字単位1-gram)が最高精度
• 2-gram、3-gram、MLPは500ステップでは足りなさそう
• Adam法は良さげ
25
今後トライしてみたいこと
• 多値クラス分類
• 単語の分散表現 → word2vec
• 単語の選択、次元削減 → TF-IDF
• 特徴化せずに処理 → RNN, LSTM, HTM
• 高速化 → GPUインスタンス
26
まとめ
• 単純な問題であれば、単純なアルゴリズムでOK
• 自然言語処理の初歩的な手法
• TensorFlowは素敵な道具
27
発表は以上です
28
29
以降、参考データ
30
文字単位1-gram
+ Softmax回帰
31
文字単位2-gram
+ Softmax回帰
32
文字単位3-gram
+ Softmax回帰
33
形態素単位1-gram
+ Softmax回帰
34
形態素単位2-gram
+ Softmax回帰
35
形態素単位3-gram
+ Softmax回帰
36
文字単位2-gram
+ 多層パーセプトロン + 最急降下法
37
文字単位2-gram
+ 多層パーセプトロン + Adam法
38

More Related Content

PDF
TensorFlowを使ってテキストをクラス分類してみた
PDF
S18 t0 introduction
PPTX
Chainerで学ぶdeep learning
PDF
Python学習奮闘記#07 webapp
PDF
S20 t1 stapyのこれまでとこれから
PDF
チームで活用するAnaconda入門
PDF
S14 t0 introduction
PDF
10分でわかるPythonの開発環境
TensorFlowを使ってテキストをクラス分類してみた
S18 t0 introduction
Chainerで学ぶdeep learning
Python学習奮闘記#07 webapp
S20 t1 stapyのこれまでとこれから
チームで活用するAnaconda入門
S14 t0 introduction
10分でわかるPythonの開発環境

What's hot (20)

PDF
Python札幌 2012/06/17
PPTX
Chainer meetup
PPTX
S13 t0 introduction
PPTX
Python札幌201406
PPTX
Pythonの環境導入 2014年春季版
PDF
S16 t1 python学習奮闘記#6
PDF
S12 t1 python学習奮闘記#5
PDF
WindowsでPython
PPTX
Django learning
PDF
S09 t0 orientation
PDF
Introduction
PPTX
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PPTX
Python エンジニアの作り方 2011.08 #pyconjp
PDF
Pythonによるwebアプリケーション入門 - Django編-
PDF
PythonによるWebスクレイピング入門
KEY
Windowsにpythonをインストールしてみよう
PDF
S15 t0 introduction
PDF
PyCharm入門
PPTX
オリエンテーション
PDF
IPython notebookを使おう
Python札幌 2012/06/17
Chainer meetup
S13 t0 introduction
Python札幌201406
Pythonの環境導入 2014年春季版
S16 t1 python学習奮闘記#6
S12 t1 python学習奮闘記#5
WindowsでPython
Django learning
S09 t0 orientation
Introduction
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
Python エンジニアの作り方 2011.08 #pyconjp
Pythonによるwebアプリケーション入門 - Django編-
PythonによるWebスクレイピング入門
Windowsにpythonをインストールしてみよう
S15 t0 introduction
PyCharm入門
オリエンテーション
IPython notebookを使おう
Ad

Viewers also liked (14)

PDF
Watson analytics ご紹介
PPTX
IBM Bluemix × Watson でMashup Hackathon (API説明)
PPTX
Watsonにあなたの知識を教えよう
PDF
Ibm watson analyticsでリレーショナル・データベースのデータを利用する
PPTX
2016/4/16 Softlayer Bluemix Community Festa 2016講演資料
PDF
Ibm Watson Analyticsで簡易Twitter分析
PDF
画像解析最前線!WatsonとTensorFlowを比較してみた
PDF
TwitterデータをdashDBにロードする方法
PPTX
Watson活用事例~Watsonハッカソンの例を通じて~
PDF
Watson Explorerを使ったテキストマイニング
PDF
IBMワトソン 勉強会 20161121a
PDF
Deep Learningによる画像認識革命 ー歴史・最新理論から実践応用までー
PPTX
NIPS2015読み会: Ladder Networks
PDF
機械学習によるデータ分析まわりのお話
Watson analytics ご紹介
IBM Bluemix × Watson でMashup Hackathon (API説明)
Watsonにあなたの知識を教えよう
Ibm watson analyticsでリレーショナル・データベースのデータを利用する
2016/4/16 Softlayer Bluemix Community Festa 2016講演資料
Ibm Watson Analyticsで簡易Twitter分析
画像解析最前線!WatsonとTensorFlowを比較してみた
TwitterデータをdashDBにロードする方法
Watson活用事例~Watsonハッカソンの例を通じて~
Watson Explorerを使ったテキストマイニング
IBMワトソン 勉強会 20161121a
Deep Learningによる画像認識革命 ー歴史・最新理論から実践応用までー
NIPS2015読み会: Ladder Networks
機械学習によるデータ分析まわりのお話
Ad

Similar to TensorFlowを使ってテキストをクラス分類してみたら精度96.8%の分類器を簡単に得ることができた話 (20)

PDF
20150603 JAWS-UG Tokyo AWS Summit
PDF
エキスパートPythonプログラミング改訂3版の読みどころ
PPTX
Clojureの世界と実際のWeb開発
PDF
Kaggle の Titanic チュートリアルに挑戦した話
PPTX
PlayFabとCognitiveを 連携させて健全なゲーム運営を
PPTX
みんなのPython勉強会#59 Intro
PDF
記事分類における教師データおよびモデルの管理
PDF
第85回名古屋アジャイル勉強会「ふりかえりでアジャイルなチームを育てる」
PDF
メルカリアッテの実務で使えた、GAE/Goの開発を効率的にする方法
PDF
PyCon JP 2016 ビギナーセッション
PDF
勉強会アンチパターン at LLまつり
PPTX
PFDの概説&ディスカッション
PDF
IoT キットハンズオンのソースコード解説します クラウド編 Part1 Section3
PDF
Adtech College#7 GitHubを中心とした開発フロー
PDF
JavaScriptで ごく普通にhttp通信をする 〜esp8266+espruinoでhttp getリクエストをするテスト〜
PDF
Osc2010 Slide
PDF
Collecting corpus
PDF
課題駆動の勘所
PDF
Jeug#2 lt
PDF
TensorFlowプログラミングと分類アルゴリズムの基礎
20150603 JAWS-UG Tokyo AWS Summit
エキスパートPythonプログラミング改訂3版の読みどころ
Clojureの世界と実際のWeb開発
Kaggle の Titanic チュートリアルに挑戦した話
PlayFabとCognitiveを 連携させて健全なゲーム運営を
みんなのPython勉強会#59 Intro
記事分類における教師データおよびモデルの管理
第85回名古屋アジャイル勉強会「ふりかえりでアジャイルなチームを育てる」
メルカリアッテの実務で使えた、GAE/Goの開発を効率的にする方法
PyCon JP 2016 ビギナーセッション
勉強会アンチパターン at LLまつり
PFDの概説&ディスカッション
IoT キットハンズオンのソースコード解説します クラウド編 Part1 Section3
Adtech College#7 GitHubを中心とした開発フロー
JavaScriptで ごく普通にhttp通信をする 〜esp8266+espruinoでhttp getリクエストをするテスト〜
Osc2010 Slide
Collecting corpus
課題駆動の勘所
Jeug#2 lt
TensorFlowプログラミングと分類アルゴリズムの基礎

TensorFlowを使ってテキストをクラス分類してみたら精度96.8%の分類器を簡単に得ることができた話