SlideShare a Scribd company logo
Pythonで始める機械学習
scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基
礎
7章テキストデータの処理
早稲田大学 4年 内田 裕貴
2018/5/27 アプリケーション開発サークル
A+plus勉強会
1
Bag of Words
による
テキスト表現
テキストデータはそのままでは機械学習で扱えるよ
うな形式になっていない。
=> 文字列を数値で表現する必要がある
=> ベクトル化
コーパスに現れた単語がテキストに現れる回数だけ
を数えるアルゴリズム
2
https://qiita.com/AwaJ/items/98123d1d3a9bbb6e3e3d
Bag of Words
による
テキスト表現
トークン分割
• 個々の文書を単語に分割
ボキャブラリ
構築
• 現れる全ての単語をボキャブラ
リとして集め、番号をつける
エンコード
• 個々の文書に対してボキャブラ
リの単語が現れる回数を数える
3
ストップワード
ストップワード
の削除方法
辞書を作って
削除する
出現頻度で
削除する
低い単語を
削除する
高い単語を
削除する 4
無駄な文字を削除したりスペルミスを省いたりする
Tf-idfを用いた
データの
スケール変換
• 単語の重みを考慮するアルゴリズム
• 特定の文書にだけ頻出する単語はその文書の内容
をよく表していると考える
• 重要な特徴量を減らすのではなく、特徴量がどの
程度情報を持っていそうかに応じて特徴量のス
ケールを変換する手法
5
nグラム • Bag ofWords表現において、
トークン分割で1単語に分割するのがユニグラム
1単語で分割すると、
it is not bad
という文書の前後関係が失われ、
not badとして認識できなくなる
これの対策をするには前後関係を考慮する必要がある
=> 複数単語に分割する(nグラム)
例:
バイグラム => [“it is”, ”is not”, ”not bad”]
トリグラム =>[“it is not”, ”is not bad”]
6
nグラム • Nグラムのnを増やすほど文章の内容を正確に考慮
できる
しかし、nを増やせば増やすほど特徴量は増える
ユニグラム ユニグラム
↓ 2乗 ↓3乗
バイグラム トリグラム
• 計算量が膨大になる
7
発展的な
トークン分割
発展的な
トークン分割
語幹処理
見出し語化
8
スペルミスや、動詞の活用形、単数系複数形
を同様のものとして考慮し、改良する
語幹処理 • replace replaced replacement reolacingのような動詞
を replaceを語幹として認識し、同様のものとして
カウント
• drawback drawbackを同様のものとしてカウント
手動で生成した辞書などを使用し語幹認識を行う
nltkなどのツールが一般的
9
見出し語化 • 単語の文章の役割を考慮してトークン分割を行う
> is be are
> bad worse
などは役割は同じものであり、同様のものとして
認識する必要がある
=> 見出し語化によって認識
こちらもnltkなどの手動で集めた辞書が用いられる
10
自然言語処
理の難しさ
• 語幹処理・見出し語化など、現在は手動で生成し
た辞書に基づいて行っており、機械学習によって
自動化が未だできていない。
見出し語化によってbadとworthは同じものとして
扱われたが、意味が複数ある単語には扱えない場
合がある
自然言語処理が全て自動化されるのは
文章の内容認識などが今よりはるかに向上した時
11
トピック
モデリング
(LDA)
• 同時に現れる頻度の高い単語の集合
トピックがスポーツであれば、
team score seasonなどの単語は頻出だろう
トピックが政治であれば
governor vote partyなどの単語は頻出だろう
同時に頻出する単語をまとめ、トピックを推定で
きる
12

More Related Content

Similar to Textdata processing

Python 学習教材
Python 学習教材Python 学習教材
Python 学習教材
Jun MITANI
 
Pythonで機械学習をやってみる(bizpy 1/19 2022)
Pythonで機械学習をやってみる(bizpy 1/19 2022)Pythonで機械学習をやってみる(bizpy 1/19 2022)
Pythonで機械学習をやってみる(bizpy 1/19 2022)
Hirofumi Watanabe
 
Lispmeetup48 cl-online-learningによる文書分類
Lispmeetup48 cl-online-learningによる文書分類Lispmeetup48 cl-online-learningによる文書分類
Lispmeetup48 cl-online-learningによる文書分類
Satoshi imai
 
Python勉強会 2015-12-02
Python勉強会 2015-12-02Python勉強会 2015-12-02
Python勉強会 2015-12-02
WoodPecker (Shizuoka Univ)
 
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
Shuji Morisaki
 
cs-10. Python の基礎(オブジェクト,メソッド,引数,文字列)
cs-10. Python の基礎(オブジェクト,メソッド,引数,文字列) cs-10. Python の基礎(オブジェクト,メソッド,引数,文字列)
cs-10. Python の基礎(オブジェクト,メソッド,引数,文字列)
kunihikokaneko1
 
実践業務を爆速でこなすtipsとgenerics
実践業務を爆速でこなすtipsとgenerics 実践業務を爆速でこなすtipsとgenerics
実践業務を爆速でこなすtipsとgenerics
Daisuke Nagata
 
Flutterで単体テストを行う方法とGitHub Actionsを使った自動化
Flutterで単体テストを行う方法とGitHub Actionsを使った自動化Flutterで単体テストを行う方法とGitHub Actionsを使った自動化
Flutterで単体テストを行う方法とGitHub Actionsを使った自動化
Shinnosuke Tokuda
 
サポーターズ勉強会スライド 2018/2/27
サポーターズ勉強会スライド 2018/2/27サポーターズ勉強会スライド 2018/2/27
サポーターズ勉強会スライド 2018/2/27
Kensuke Mitsuzawa
 
TypeScript で型を上手く使う試み.pdf
TypeScript で型を上手く使う試み.pdfTypeScript で型を上手く使う試み.pdf
TypeScript で型を上手く使う試み.pdf
Ryo Higashigawa
 

Similar to Textdata processing (10)

Python 学習教材
Python 学習教材Python 学習教材
Python 学習教材
 
Pythonで機械学習をやってみる(bizpy 1/19 2022)
Pythonで機械学習をやってみる(bizpy 1/19 2022)Pythonで機械学習をやってみる(bizpy 1/19 2022)
Pythonで機械学習をやってみる(bizpy 1/19 2022)
 
Lispmeetup48 cl-online-learningによる文書分類
Lispmeetup48 cl-online-learningによる文書分類Lispmeetup48 cl-online-learningによる文書分類
Lispmeetup48 cl-online-learningによる文書分類
 
Python勉強会 2015-12-02
Python勉強会 2015-12-02Python勉強会 2015-12-02
Python勉強会 2015-12-02
 
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
 
cs-10. Python の基礎(オブジェクト,メソッド,引数,文字列)
cs-10. Python の基礎(オブジェクト,メソッド,引数,文字列) cs-10. Python の基礎(オブジェクト,メソッド,引数,文字列)
cs-10. Python の基礎(オブジェクト,メソッド,引数,文字列)
 
実践業務を爆速でこなすtipsとgenerics
実践業務を爆速でこなすtipsとgenerics 実践業務を爆速でこなすtipsとgenerics
実践業務を爆速でこなすtipsとgenerics
 
Flutterで単体テストを行う方法とGitHub Actionsを使った自動化
Flutterで単体テストを行う方法とGitHub Actionsを使った自動化Flutterで単体テストを行う方法とGitHub Actionsを使った自動化
Flutterで単体テストを行う方法とGitHub Actionsを使った自動化
 
サポーターズ勉強会スライド 2018/2/27
サポーターズ勉強会スライド 2018/2/27サポーターズ勉強会スライド 2018/2/27
サポーターズ勉強会スライド 2018/2/27
 
TypeScript で型を上手く使う試み.pdf
TypeScript で型を上手く使う試み.pdfTypeScript で型を上手く使う試み.pdf
TypeScript で型を上手く使う試み.pdf
 

Recently uploaded

03 Qlik Cloud データ統合 しっかり学ぶ勉強会 #3 データ変換 タスク監視
03 Qlik Cloud データ統合 しっかり学ぶ勉強会 #3 データ変換 タスク監視03 Qlik Cloud データ統合 しっかり学ぶ勉強会 #3 データ変換 タスク監視
03 Qlik Cloud データ統合 しっかり学ぶ勉強会 #3 データ変換 タスク監視
QlikPresalesJapan
 
株式会社アーシャルデザイン_事業説明資料_システム開発_受託開発_WEB開発_Salesforce
株式会社アーシャルデザイン_事業説明資料_システム開発_受託開発_WEB開発_Salesforce株式会社アーシャルデザイン_事業説明資料_システム開発_受託開発_WEB開発_Salesforce
株式会社アーシャルデザイン_事業説明資料_システム開発_受託開発_WEB開発_Salesforce
hfujii2
 
02_1_20240611_Qlik Cloudデータ統合_データパイプラインの作成「基本動作」
02_1_20240611_Qlik Cloudデータ統合_データパイプラインの作成「基本動作」02_1_20240611_Qlik Cloudデータ統合_データパイプラインの作成「基本動作」
02_1_20240611_Qlik Cloudデータ統合_データパイプラインの作成「基本動作」
QlikPresalesJapan
 
明日使えるかもしれないLoss Functionsのアイディアと実装 [GO株式会社 AI技術共有会資料]
明日使えるかもしれないLoss Functionsのアイディアと実装 [GO株式会社 AI技術共有会資料]明日使えるかもしれないLoss Functionsのアイディアと実装 [GO株式会社 AI技術共有会資料]
明日使えるかもしれないLoss Functionsのアイディアと実装 [GO株式会社 AI技術共有会資料]
Fumihiko Takahashi
 
02_2_20240611_Qlik Cloud データ統合 しっかり学ぶ勉強会 #2 - データパイプラインの作成「データマートの作成」
02_2_20240611_Qlik Cloud データ統合 しっかり学ぶ勉強会 #2 - データパイプラインの作成「データマートの作成」02_2_20240611_Qlik Cloud データ統合 しっかり学ぶ勉強会 #2 - データパイプラインの作成「データマートの作成」
02_2_20240611_Qlik Cloud データ統合 しっかり学ぶ勉強会 #2 - データパイプラインの作成「データマートの作成」
QlikPresalesJapan
 
02_3_20240611_Qlik Cloud データ統合 しっかり学ぶ勉強会 #2 - データパイプラインの作成「データの管理(簡単なデータ変換)」
02_3_20240611_Qlik Cloud データ統合 しっかり学ぶ勉強会 #2 - データパイプラインの作成「データの管理(簡単なデータ変換)」02_3_20240611_Qlik Cloud データ統合 しっかり学ぶ勉強会 #2 - データパイプラインの作成「データの管理(簡単なデータ変換)」
02_3_20240611_Qlik Cloud データ統合 しっかり学ぶ勉強会 #2 - データパイプラインの作成「データの管理(簡単なデータ変換)」
QlikPresalesJapan
 
02_4_20240611_Qlik Cloud データ統合 しっかり学ぶ勉強会 #2 - データパイプラインの作成「系列と影響分析」
02_4_20240611_Qlik Cloud データ統合 しっかり学ぶ勉強会 #2 - データパイプラインの作成「系列と影響分析」02_4_20240611_Qlik Cloud データ統合 しっかり学ぶ勉強会 #2 - データパイプラインの作成「系列と影響分析」
02_4_20240611_Qlik Cloud データ統合 しっかり学ぶ勉強会 #2 - データパイプラインの作成「系列と影響分析」
QlikPresalesJapan
 

Recently uploaded (7)

03 Qlik Cloud データ統合 しっかり学ぶ勉強会 #3 データ変換 タスク監視
03 Qlik Cloud データ統合 しっかり学ぶ勉強会 #3 データ変換 タスク監視03 Qlik Cloud データ統合 しっかり学ぶ勉強会 #3 データ変換 タスク監視
03 Qlik Cloud データ統合 しっかり学ぶ勉強会 #3 データ変換 タスク監視
 
株式会社アーシャルデザイン_事業説明資料_システム開発_受託開発_WEB開発_Salesforce
株式会社アーシャルデザイン_事業説明資料_システム開発_受託開発_WEB開発_Salesforce株式会社アーシャルデザイン_事業説明資料_システム開発_受託開発_WEB開発_Salesforce
株式会社アーシャルデザイン_事業説明資料_システム開発_受託開発_WEB開発_Salesforce
 
02_1_20240611_Qlik Cloudデータ統合_データパイプラインの作成「基本動作」
02_1_20240611_Qlik Cloudデータ統合_データパイプラインの作成「基本動作」02_1_20240611_Qlik Cloudデータ統合_データパイプラインの作成「基本動作」
02_1_20240611_Qlik Cloudデータ統合_データパイプラインの作成「基本動作」
 
明日使えるかもしれないLoss Functionsのアイディアと実装 [GO株式会社 AI技術共有会資料]
明日使えるかもしれないLoss Functionsのアイディアと実装 [GO株式会社 AI技術共有会資料]明日使えるかもしれないLoss Functionsのアイディアと実装 [GO株式会社 AI技術共有会資料]
明日使えるかもしれないLoss Functionsのアイディアと実装 [GO株式会社 AI技術共有会資料]
 
02_2_20240611_Qlik Cloud データ統合 しっかり学ぶ勉強会 #2 - データパイプラインの作成「データマートの作成」
02_2_20240611_Qlik Cloud データ統合 しっかり学ぶ勉強会 #2 - データパイプラインの作成「データマートの作成」02_2_20240611_Qlik Cloud データ統合 しっかり学ぶ勉強会 #2 - データパイプラインの作成「データマートの作成」
02_2_20240611_Qlik Cloud データ統合 しっかり学ぶ勉強会 #2 - データパイプラインの作成「データマートの作成」
 
02_3_20240611_Qlik Cloud データ統合 しっかり学ぶ勉強会 #2 - データパイプラインの作成「データの管理(簡単なデータ変換)」
02_3_20240611_Qlik Cloud データ統合 しっかり学ぶ勉強会 #2 - データパイプラインの作成「データの管理(簡単なデータ変換)」02_3_20240611_Qlik Cloud データ統合 しっかり学ぶ勉強会 #2 - データパイプラインの作成「データの管理(簡単なデータ変換)」
02_3_20240611_Qlik Cloud データ統合 しっかり学ぶ勉強会 #2 - データパイプラインの作成「データの管理(簡単なデータ変換)」
 
02_4_20240611_Qlik Cloud データ統合 しっかり学ぶ勉強会 #2 - データパイプラインの作成「系列と影響分析」
02_4_20240611_Qlik Cloud データ統合 しっかり学ぶ勉強会 #2 - データパイプラインの作成「系列と影響分析」02_4_20240611_Qlik Cloud データ統合 しっかり学ぶ勉強会 #2 - データパイプラインの作成「系列と影響分析」
02_4_20240611_Qlik Cloud データ統合 しっかり学ぶ勉強会 #2 - データパイプラインの作成「系列と影響分析」
 

Textdata processing