Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
文書分類をやってみた
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Kenichi Ito
February 09, 2019
Technology
1.1k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
文書分類をやってみた
PyData.Fukuoka Meetup #2 - ハンズオン & LT大会 での発表資料
Kenichi Ito
February 09, 2019
Other Decks in Technology
See All in Technology
登壇の自信を奪う3匹のオバケ / 3 Ghosts That Rob You of Your Confidence in Public Speaking
pauli
9
1k
AI時代、データエンジニアが一番おもろい
genshun9
0
670
おい、エージェントを使って終わらせろ
nwiizo
2
730
What the customer really needed
kawaguti
PRO
3
210
AIエージェントの自己改善をどう設計するか / How to Design Self-Improvement for AI Agents
22mi
25
16k
SREの視点で考えるSIEM活用術 〜AWS環境でのセキュリティ強化〜
cscengineer
PRO
0
120
Goodbye ShellScript, Hello File-based App
shunsock
0
330
Railsのように考える: See through the Master
snoozer05
PRO
4
1.1k
Claude in Chrome 入門 / Introduction to Claude in Chrome
cielo1985
0
870
バイブコーディング時代のWebアプリ開発入門~Cloud Runで学ぶセキュアなビルドとデプロイ
waiwai2111
1
140
HRC_Frontend_Conference_Fukuoka_2026.pdf
ts020
0
760
越境するなら専門用語を使うな高校校歌 / If you wanna cross border, you shouldn't use jargon
vtryo
0
150
Featured
See All Featured
Accessibility Awareness
sabderemane
1
210
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
700
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
Utilizing Notion as your number one productivity tool
mfonobong
4
590
30 Presentation Tips
portentint
PRO
1
400
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
How to Think Like a Performance Engineer
csswizardry
28
2.8k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
Build your cross-platform service in a week with App Engine
jlugia
234
19k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
2
280
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
500
Transcript
1 文書分類をやってみた 伊藤 健一
2 自己紹介 • 伊藤 健一 ( いとう けんいち ) •
工学部電子情報工学科 3 年 • 自然言語処理の研究室に所属 • Python 歴は 5 ヶ月 • 機械学習歴は 2 ヶ月
3 文書分類タスク概要 • IT 系総合ニュースサイトから記事を 5 つのカテゴリのみスクレイピング カテゴリ : pc,
game, travel, car, dc • 与えられたニュース記事に対して、カテゴリを推定 • 学習用データ : 約 15MB の JSON ファイル • 評価用データ : 約 2MB の JSON ファイル
4 試した手法 • 文章ベクトル化手法 – Bag of Words – TF-IDF
(Term Frequency-Inverse Document Frequency) – Doc2Vec – SCDV (Sparse Composite Document Vectors) • 分類器 – SVM (Support Vector Machine)
5 Support Vector Machine (SVM) • 教師あり機械学習方法 • 認識性能の優れた学習モデルの一つ •
各データ点との距離が最大となる マージン最大化超平面を求める • 未学習データに対する高い汎化性能 • モデルを人が解釈することはできない • 今回用いたのは線形 SVM https://home.hiroshima-u.ac.jp/tkurita/lecture/svm.pdf
6 https://scikit-learn.org/stable/tutorial/machine_learning_map/index.html
7 Bag of Wards 法とは? • 文章に単語が含まれているかどうかのみを考え、 単語の並び方などは考慮しない • 文書中にある単語が含まれている回数を値として用いる
• 例 : すもももももももものうち [ すもも , も , もも , も , もも , の , うち ] { すもも : 1, も :2, もも : 2, の : 1, うち :1} [1, 2, 2, 1, 1] • 日本語の場合、 MeCab などで分かち書きにする必要が ある
8 TF-IDF とは ? • TF (Term Frequency): 文書内における単語の出現頻度 1
つの文書に多く出現する単語ほど重要度が高くなる • IDF (Inverse Document Frequency): ある単語が含まれている文書数を全ての文書数で割った ものの逆数 多数の文書に出現する単語ほど重要度が低くなる • TF-IDF は TF と IDF を掛けあわせたもの
9 Doc2Vec とは? • Word2Vec を単語レベルではなく、文や文書といった任 意の長さを扱えるように拡張したもの • Word2Vec とは?
– 単語のベクトル表現を得る方法 – 入力層、隠れ層、出力層からなる単純なニューラルネット ワーク – 単語同士の意味の近さが計算できる – 意味を足し引きできるようなベクトル表現が得られる “King” – “Man” + “Woman” = “Queen” “Tokyo” – “Japan” + “China” = “Beijing”
10 Sparse Composite Document Vectors (SCDV) • 文章データから得られる全単語について、 Word2Vec ベク
トルと idf 値を計算しておく。 • この単語ベクトルについて、混合ガウスモデルで K クラス分 類に学習し、一つ一つの単語ベクトルが各クラスに属する予測 確率を単語ベクトルにかけて連結して、単語ベクトル数 * クラ スタ数に次元を広げる。 • これに idf 値をかけたものが、単語ベクトル Word-topics vector 。 • これを、文章の構成単語について平均をとって、スパースさせ たものを、文章ベクトルとして扱う。 • 今回試した文章ベクトル化手法の中では一番精度が出るはず http://www.ie110704.net/2018/10/12/文書分散表現scdvと他の分散表現を 比較してみた/
11 評価用データに対する成績 • Bag of Words: 正解率 97.61% (693 /
710) • TF-IDF: 正解率 98.31% (698 / 710) • Doc2Vec: 正解率 94.08% (668 / 710) • SCDV: 正解率 96.48% (685 / 710) ()内は文書数 • TF-IDF が一番正解率が高かった • Doc2Vec 、 SCDV はパラメータチューニング不足の可能性 も • データの性質的に TF-IDF で十分だった?
12 t-SNE による可視化 • T-distributed Stochastic Neighbor Embedding (t-SNE) とは
? 元のデータの一部の特徴量を保持したまま、 2 次元や 3 次元への圧縮を行い高次元データを可視化する方法 • 非線形な構造にも対応 • より計算量の少ない UMAP という手法が 2018 年 2 月に出ました 最新の次元圧縮法"UMAP"について - Qiita
13 BoW( 左 ) と TF-IDF (右)の可視化
14 Doc2Vec( 左 ) と SCDV( 右 ) の可視化
15 使用した主なライブラリ • MeCab の python wrapper: mecab-python3 – MeCab:
形態素解析エンジン – 日本語を分かち書きにするために使用 • トピックモデリングライブラリ : gensim – Word2Vec 、 Doc2Vec のために使用 • 機械学習ライブラリ : scikit-learn – BoW 、 TF-IDF 、 SVM 、 t-SNE のために使用 • グラフ描画 : seaborn
16 Pickle • Python の標準ライブラリにあるモジュール • オブジェクトをバイト列などの表現に変換する ( 直列化 ,
Serialize という ) • オブジェクトの状態を保存したり読み込んだりできる import pickle data = {'a': [1, 2.0, 3, 4 + 6j]} # 保存 with open('data.pickle', 'wb') as f: pickle.dump(data, f) # 読込み with open('data.pickle', 'rb') as f: data = pickle.load(f)
17 参考サイト • 【特別連載】 さぁ、自然言語処理を始めよう!(第2回: 単純 集計によるテキストマイニング) | DATUM STUDIO株式会
社 • scikit-learnでsvm 基本的な使い方 - 備忘録とか日常とか • 文書分散表現SCDVと他の分散表現を比較してみた - 戦 略コンサルで働くデータサイエンティストのブログ • SCDVを使ったテキスト分類をしてみる - どん底から這い上 がるまでの記録 • t-SNEを使った文書ベクトルの可視化 - どん底から這い上 がるまでの記録 • 高次元のデータを可視化するt-SNEの効果的な使い方 - D eepAge
18 参考サイト • Bag of Wordsについて書いてみる - どん底から這い上が るまでの記録 •
Doc2Vec を使って日本語の Wikipedia を学習する|ofx mp3|note • Doc2Vecの仕組みとgensimを使った文書類似度算出チ ュートリアル - DeepAge • 文章をよしなに分散表現しよう | 東京工業大学デジタル創 作同好会traP