Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
大阪Pythonユーザの集まり2014/10 
ツイートの取得と解析の間 
nemupm 
はざま
簡単に自己紹介 
修士1回の大学生です. 
データマイニングを研究してる関係で 
Pythonを使ってます. 
プログラミング系の勉強会は初めてです! 
@nemupm
本日喋りたいこと 
ツイート研究の概要 
研究を進める上で技術的に困ったこと
Twitter
Twitterとは… 
140文字のコミュニケーションツール 
幅広い使い方が可能 
不満の捌け口 
犯罪の自慢
Twitterとは… 
普段の趣味や生活に基づくツイートが投稿される 
ユーザの関心がツイートから分かる!
ユーザの関心が見れるWebサービス 
シロくも 
- 興味のある単語をワードクラウドで表示
ユーザの関心が見れるWebサービス 
ツイートプロファイリング 
- 興味をジャンルで分類
一体どうやってツイートを取得しているの?
Twitter API 1.1
Twitter API 1.1 
ツイートの取得や投稿など 
基本的な情報をJSONでやり取り 
REST API とStreaming APIがある. 
OAuth認証を利用 
ライブラリはTweepyなど.
しかし… 
TLの取得回数制限 
という壁が存在
TLの取得回数制限 
TLの取得回数制限が15分に180回まで 
同IPによるツイート取得リクエストは 
最大で200件×180回/1h 
ツイートの最大取得数は3200件/1アカウント 
- 自分のアカウントは全TL取得可能
研究者としては 
「せっかくこんなに沢山のユーザが居る」のに 
取得制限があるなんて 
ナンセンスだ!!
TLの取得回数制限 
TLの取得回数制限が15分に180回まで 
同IPによるツイート取得リクエストは 
最大で200件×180回/1h 
どうにかしたい 
ツイートの最大取得数は3200件/1アカウント 
- 自分のアカウントは全TL取得可能
200件×180回/1h は 
Twitter API 1.1の制限 
APIの制限だから仕方ない… 
・・・APIの制限? 
じゃあAPI使わなければ? これだ!!
クローリング
クローリング準備 
ブラウザでTLを見る&遡る時の 
リクエスト・レスポンスの内容を調べる.
クローリング準備 
ブラウザでTLを見る&遡る時の 
リクエスト・レスポンスの内容を調べる. 
GET 
20のツイートと 
max_idが埋め込まれたHTML 
max_idを指定してGET 
追加分の20のツイートが 
埋め込まれたHTML...
実装 
実装ですることは2つ 
リクエスト・レスポンスの処理 
HTMLのパース
リクエスト・レスポンスの処理 
requestsライブラリの利用 
使い方が直感的! 
書くのはこれだけ! 
ses = requests.session() 
res = ses.get(url, params, headers)
HTMLのパース 
HTMLParserライブラリの利用 
先頭から順に読み込んでいく 
開始タグ・終了タグ・中のデータを 
処理するメソッドをオーバーライドしてinstance化 
正直面倒くさい…
結果 
約3000件のツイートが1分で読めるように! 
※これ以上出来そうな気がしましたが 
sleep()で自重しています.
結果 
今までは一時間で… 
200件×180回=36000件 
これからは… 
5倍! 
20件×150回×60回=180000件 
苦労した割にショボイ
せっかく取得したので 
簡単に解析してみます.
ツイートの解析 
MeCabの利用 
日本語の形態素解析に最もよく用いられるツール 
ツイートから名詞だけを抽出
ツイートの解析 
TFIDFの利用 
特徴語の抽出に最もよく用いられるアルゴリズム 
特徴語のスコア: 
対象ユーザがその単語をツイートした回数 
TF 
その単語をツイートしたことがある人数の割合(レア度) 
DF
ツイートの解析 
TFIDFの利用 
特徴語の抽出に最もよく用いられるアルゴリズム 
特徴語のスコア: 
対象ユーザがその単語をツイートした回数 
TF 
その単語をツイートしたことがある人数の割合(レア度) 
DF 
珍しい単語を頻繁に使うほ...
あれ? 
でも各単語のレア度ってどうやって計算するの? 
既存研究者 
1万人?? 
1万人の 
ツイートデータがあれば 
計算できるよ~ 
by Polish Institute of International Affairs
クローリング
1~2週間のクローリングの後 
計算終了
実際に適用 
なら 
寝 
早く 
なかなか 
デモンズソウル 
将棋ウォーズ 
そのまま 
多少 
少し 
icpc 
カープ 
院試 
そんな 
棋譜 
銃規制 
マンu 
こんな 
ymca 
研究室 
デモンズ 
サーバ 
再帰 
増え...
まとめ 
requests便利! 
- pythonのライブラリ頭良いなと思った 
Twitter社さん、ありがとう
ご清聴ありがとうございました!
photo credit 
The Aggressive Black Drongo! By Vinoth Chandar 
11th Grade - First Day of School By Mitchell Joyce 
Wretched...
Upcoming SlideShare
Loading in …5
×

ツイートの取得と解析の間

4,429 views

Published on

「大阪Pythonユーザの集まり」でTwitterの解析を
Pythonの話を少し絡めて発表させていただいたので、
アップロードさせていただきます。

Published in: Data & Analytics
  • Be the first to comment

ツイートの取得と解析の間

  1. 1. 大阪Pythonユーザの集まり2014/10 ツイートの取得と解析の間 nemupm はざま
  2. 2. 簡単に自己紹介 修士1回の大学生です. データマイニングを研究してる関係で Pythonを使ってます. プログラミング系の勉強会は初めてです! @nemupm
  3. 3. 本日喋りたいこと ツイート研究の概要 研究を進める上で技術的に困ったこと
  4. 4. Twitter
  5. 5. Twitterとは… 140文字のコミュニケーションツール 幅広い使い方が可能 不満の捌け口 犯罪の自慢
  6. 6. Twitterとは… 普段の趣味や生活に基づくツイートが投稿される ユーザの関心がツイートから分かる!
  7. 7. ユーザの関心が見れるWebサービス シロくも - 興味のある単語をワードクラウドで表示
  8. 8. ユーザの関心が見れるWebサービス ツイートプロファイリング - 興味をジャンルで分類
  9. 9. 一体どうやってツイートを取得しているの?
  10. 10. Twitter API 1.1
  11. 11. Twitter API 1.1 ツイートの取得や投稿など 基本的な情報をJSONでやり取り REST API とStreaming APIがある. OAuth認証を利用 ライブラリはTweepyなど.
  12. 12. しかし… TLの取得回数制限 という壁が存在
  13. 13. TLの取得回数制限 TLの取得回数制限が15分に180回まで 同IPによるツイート取得リクエストは 最大で200件×180回/1h ツイートの最大取得数は3200件/1アカウント - 自分のアカウントは全TL取得可能
  14. 14. 研究者としては 「せっかくこんなに沢山のユーザが居る」のに 取得制限があるなんて ナンセンスだ!!
  15. 15. TLの取得回数制限 TLの取得回数制限が15分に180回まで 同IPによるツイート取得リクエストは 最大で200件×180回/1h どうにかしたい ツイートの最大取得数は3200件/1アカウント - 自分のアカウントは全TL取得可能
  16. 16. 200件×180回/1h は Twitter API 1.1の制限 APIの制限だから仕方ない… ・・・APIの制限? じゃあAPI使わなければ? これだ!!
  17. 17. クローリング
  18. 18. クローリング準備 ブラウザでTLを見る&遡る時の リクエスト・レスポンスの内容を調べる.
  19. 19. クローリング準備 ブラウザでTLを見る&遡る時の リクエスト・レスポンスの内容を調べる. GET 20のツイートと max_idが埋め込まれたHTML max_idを指定してGET 追加分の20のツイートが 埋め込まれたHTMLと max_idパラメータ・ ・
  20. 20. 実装 実装ですることは2つ リクエスト・レスポンスの処理 HTMLのパース
  21. 21. リクエスト・レスポンスの処理 requestsライブラリの利用 使い方が直感的! 書くのはこれだけ! ses = requests.session() res = ses.get(url, params, headers)
  22. 22. HTMLのパース HTMLParserライブラリの利用 先頭から順に読み込んでいく 開始タグ・終了タグ・中のデータを 処理するメソッドをオーバーライドしてinstance化 正直面倒くさい…
  23. 23. 結果 約3000件のツイートが1分で読めるように! ※これ以上出来そうな気がしましたが sleep()で自重しています.
  24. 24. 結果 今までは一時間で… 200件×180回=36000件 これからは… 5倍! 20件×150回×60回=180000件 苦労した割にショボイ
  25. 25. せっかく取得したので 簡単に解析してみます.
  26. 26. ツイートの解析 MeCabの利用 日本語の形態素解析に最もよく用いられるツール ツイートから名詞だけを抽出
  27. 27. ツイートの解析 TFIDFの利用 特徴語の抽出に最もよく用いられるアルゴリズム 特徴語のスコア: 対象ユーザがその単語をツイートした回数 TF その単語をツイートしたことがある人数の割合(レア度) DF
  28. 28. ツイートの解析 TFIDFの利用 特徴語の抽出に最もよく用いられるアルゴリズム 特徴語のスコア: 対象ユーザがその単語をツイートした回数 TF その単語をツイートしたことがある人数の割合(レア度) DF 珍しい単語を頻繁に使うほど 関心が強いはずだ!!
  29. 29. あれ? でも各単語のレア度ってどうやって計算するの? 既存研究者 1万人?? 1万人の ツイートデータがあれば 計算できるよ~ by Polish Institute of International Affairs
  30. 30. クローリング
  31. 31. 1~2週間のクローリングの後 計算終了
  32. 32. 実際に適用 なら 寝 早く なかなか デモンズソウル 将棋ウォーズ そのまま 多少 少し icpc カープ 院試 そんな 棋譜 銃規制 マンu こんな ymca 研究室 デモンズ サーバ 再帰 増え 見 ウイイレ サンフレッチェ 小島 居 lda python 東海自然歩道 アカリク fifa cloud 天鳳 インテル weaver グループワーク セカイカメラ 喜連川 まあまあ。
  33. 33. まとめ requests便利! - pythonのライブラリ頭良いなと思った Twitter社さん、ありがとう
  34. 34. ご清聴ありがとうございました!
  35. 35. photo credit The Aggressive Black Drongo! By Vinoth Chandar 11th Grade - First Day of School By Mitchell Joyce Wretched By Piers Nye Dr. Michael Bravo, Scott Polar Research Institute, University of Cambridge By Polish Institute of International Affairs

×